kubectl
ファイル(クラスター+コンテキスト+ユーザーを含む)を取得し、追加のコンテキストとして〜/ .kube/configファイルにマージする簡単なkubeconfig
コマンドはありますか?
これを行う:
KUBECONFIG=~/.kube/config:~/someotherconfig
kubectl config view --flatten
必要に応じて、それを新しいファイルにパイプで送ることができます。
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ファイルは構造化された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$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/
あなたがこれをたくさんやっているのを見つけたら.. kubectl用の 'krew'プラグインパッケージマネージャーもあります。また、。/ kube/configファイルを管理するためのプラグインがあります。
「konfig」プラグインを使用すると、構文は次のようになります。
kubectl konfig import -s new.yaml
Krewをインストールするには: https://github.com/kubernetes-sigs/krew
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
環境変数