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/configTOC
ワークロードクラスタの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)
