kubectx/kubens

概要

複数の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
Copied title and URL