概要
複数のKubernetesクラスターを扱う場合、その都度コンテキストの切り替えを行う必要があります。
また、namespaceの切り替え(またはコマンドごとに指定)も頻繁に発生します。
下記のツールをインストールすると非常に便利です。
GitHub - ahmetb/kubectx: Faster way to switch between clusters and namespaces in kubectl
Faster way to switch between clusters and namespaces in kubectl - GitHub - ahmetb/kubectx: Faster way to switch between clusters and namespaces in kubectl
kubectx/kubensは補完機能があってこそ、その真価を発揮します。 公式ドキュメントによると、krewでもインストールできるのですが、補完を行う場合には手動でインストールする必要があるとのことです。
インストール方法
Gitのプロジェクトをクローンしてaliasを設定する方法が記載されています。 私は下記のように、直接コピーしてインストールしました。
bashを使用する場合の例となります。
git clone https://github.com/ahmetb/kubectx.git ./kubectx-temp sudo cp ./kubectx-temp/kubens /usr/local/bin/kubens sudo cp ./kubectx-temp/kubectx /usr/local/bin/kubectx COMPDIR=$(pkg-config --variable=completionsdir bash-completion) sudo cp ./kubectx-temp/completion/kubens.bash $COMPDIR/kubens sudo cp ./kubectx-temp/completion/kubectx.bash $COMPDIR/kubectx rm -Rf ./kubectx-temp
使用方法
kubectx
kubectxを実行するとコンテキストのリストが表示されます。
$ kubectx kubernetes-admin@kubernetes
kubectx に続けてリストにある名前を入力することで指定したコンテキストに切り替えることができます。 (この例では、ここでは一つしかありませんのであまり意味がありませんが、、) ここで、前述のインストール方法ですと、途中まで入力してTABキーを押しますと補完されますので非常に便利です。
-c を指定することで現在のコンテキストが表示されます。
$ kubectx -c kubernetes-admin@kubernetes
-u を指定することでどのコンテキストにもいない状態にすることができます。 複数のコンテキストを使用している場合にはこちらも非常に重要で、意図せず他の環境でkubectlを実行することを回避できます。
$ kubectx -u
Unsetting current context.
Property "current-context" unset.
kubens
kubensもkubectxと同様にnamespaceに対してリスト表示や切り替えを行うことができます。
$ kubens default ingress-system kube-node-lease kube-public kube-system metallb-system metrics-server rook-ceph thingsboard
$ kubens thingsboard Context "kubernetes-admin@kubernetes" modified. Active namespace is "thingsboard".
$ kubens -c thingsboard