web-dev-qa-db-ja.com

kubectl構成ファイルを〜/ .kube / configとマージする方法は?

kubectlファイル(クラスター+コンテキスト+ユーザーを含む)を取得し、追加のコンテキストとして〜/ .kube/configファイルにマージする簡単なkubeconfigコマンドはありますか?

20
Chad

これを行う:

KUBECONFIG=~/.kube/config:~/someotherconfig 
kubectl config view --flatten

必要に応じて、それを新しいファイルにパイプで送ることができます。

43
jaxxstorm

一度に複数のkubeconfigsを使用する

いくつかの小さなkubeconfigファイル(たとえば、クラスターごとに1つ)がありますが、kubectlまたは kubectx は、複数のコンテキストを一度に処理します。

そのためには、「マージされた」kubeconfigファイルが必要です。以下のセクション "kubeconfigファイルのマージ"で、kubeconfigsを1つのファイルに追加しますが、それらをメモリ内にマージすることもできます-in-memory

KUBECONFIG環境変数で複数のファイルを指定することにより、一時的にkubeconfigファイルをつなぎ合わせ、kubectlですべて使用できます。 。

#
# Kubeconfig in-memory merge
#
export KUBECONFIG=file1:file2
kubectl get pods --context=cluster-1
kubectl get pods --context=cluster-2

#
# For your example
# merging your kubeconfig file w/ $HOME/.kube/config (w/ cp backup)
#
cp $HOME/.kube/config $HOME/.kube/config.backup.$(date +%Y-%m-%d.%H:%M:%S)
KUBECONFIG= $HOME/.kube/config:file2: kubectl config view --merge --flatten > \
~/.kube/merged_kubeconfig && mv ~/.kube/merged_kubeconfig ~/.kube/config
kubectl get pods --context=cluster-1
kubectl get pods --context=cluster-2

Kubeconfigファイルのマージ

kubeconfigファイルは構造化されたYAMLファイルであるため、1つの大きなkubeconfigファイルですが、kubectlはこれらのファイルのマージに役立ちます。

#
# Merging your kubeconfig file w/ $HOME/.kube/config (w/ cp backup)
#
cp $HOME/.kube/config $HOME/.kube/config.backup.$(date +%Y-%m-%d.%H:%M:%S)
KUBECONFIG=$HOME/.kube/config:file2:file3 kubectl config view --merge --flatten > \
~/.kube/merged_kubeconfig && mv ~/.kube/merged_kubeconfig ~/.kube/config
kubectl get pods --context=cluster-1
kubectl get pods --context=cluster-2

Kubeconfigファイルからコンテキストを抽出する

以前のkubeconfigファイルのマージに従い、マージされたkubeconfig$HOME/.kube/configのファイル。次に、クラスターの情報を、そのクラスターに接続するために必要な部分のみを含むポータブルkubeconfigファイルに抽出します。

実行:

KUBECONFIG=$HOME/.kube/config kubectl config view \
    --minify --flatten --context=context-1 > $HOME/.kube/config-context-1

#
# using --kubeconfig flag
#
kubectl get pods --kubeconfig=$HOME/.kube/config-context-1

#
# or 
# using `KUBECONFIG` environment variable
#
KUBECONFIG=$HOME/.kube/config-context-1 kubectl get pods

#
# or 
# keep using kubeconfig file at $HOME/.kube/config (which has the merged context)
#
kubectl get pods --context=cluster-1

このコマンドでは、context-1から$HOME/.kube/configファイルへのconfig-context-1に関するデータを抽出します。 --minifyフラグを使用すると、そのコンテキストに関する情報のみを抽出でき、--flattenフラグを使用すると、資格情報を編集しないで保持できます。

ref article:https://ahmet.im/blog/mastering-kubeconfig/

2

あなたがこれをたくさんやっているのを見つけたら.. kubectl用の 'krew'プラグインパッケージマネージャーもあります。また、。/ kube/configファイルを管理するためのプラグインがあります。

「konfig」プラグインを使用すると、構文は次のようになります。

kubectl konfig import -s new.yaml

Krewをインストールするには: https://github.com/kubernetes-sigs/krew

1
dhr_p

1つのファイルに2つの構成ファイルをマージする場合

私はこの方法を見つけました(これが最も簡単かどうかわかりません)

# Add the two config files to the env var
export KUBECONFIG=~/.kube/config:~/Desktop/configFile2.yaml

# Review that you have two configurations in one view
kubectl config view

# View the raw config and output to a new file
kubectl config view --raw > /tmp/config

次に、新しい構成ファイルを任意の場所にコピーします。unset KUBECONFIG環境変数

0
Eddy Hernandez