ClusterAPIを使う機会が増えてきて、作ったワークロードクラスタのkubeconfigを$HOME/.kube/config
に追加したくなったので、その方法をメモとして。
説明は抜きにして何しているか知りたい人のため、必要なコマンドを以下にまとめました。
cp $HOME/.kube/config /tmp/org-kubeconfig
clusterctl get kubeconfig workload-cluster1 > /tmp/workload-cluster1-kubeconfig
KUBECONFIG=/tmp/org-kubeconfig:/tmp/workload-cluster1-kubeconfig kubectl config view --flatten > $HOME/.kube/config
TOC
ワークロードクラスタのkubeconfigを取得
clusterctlを使用して、ワークロードクラスタのkubeconfigを取得します。
clusterctl get kubeconfig workload-cluster1 > /tmp/workload-cluster1-kubeconfig
一時的に/tmp/workload-cluster1-kubeconfig
にファイルとして吐き出しています。
kubectlで統合したkubeconfigを作成
統合したkubeconfigを作るにはkubectlを使用します。下記の通りKUBECONFIG
に複数のkubeconfigを指定してconfig view
してあげると統合されたkubeconfigを作成してくれます。
KUBECONFIG=$HOME/.kube/config:/tmp/workload-cluster1-kubeconfig kubectl config view --flatten
ちなみに、このコマンド結果をそのまま$HOME/.kube/config
にリダイレクトすると、統合されたコンフィグがつくれないため、オリジナルの$HOME/.kube/config
を別フォルダにコピーして上書きするようにします。
統合したkubeconfigを$HOME/.kube/configにコピー
コピーまで実施します。
cp $HOME/.kube/config /tmp/org-kubeconfig
KUBECONFIG=/tmp/org-kubeconfig:/tmp/workload-cluster1-kubeconfig kubectl config view --flatten > $HOME/.kube/config
$HOME/.kube/config
のバックアップが/tmp/org-kubeconfig
になるので、もしものときのバックアップとしても機能します。ちなみに、KUBECONFIG
に最初に指定したファイルのcurrent-context
が維持されるため元のファイルを最初にしています。
[おまけ] konfigを使用した統合方法
konfigというツールを使って同じことが1行で可能です。
konfig import -s <(clusterctl get kubeconfig workload-cluster1)