ClusterAPIで作ったクラスタのkubeconfigを$HOME/.kube/configに追加

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

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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA