Kubernetes のコンテキスト切り替えに kubectx、ネームスペース切り替えに kubens

Kubernetes の作業がやりやすくなるコマンドを見つけたので紹介。

目次

kubectx と kubens

今回紹介する kubectxkubens という2つのコマンドは、まとめて一つのパッケージとして配布されている。

Homebrew などでインストールできる。

$ brew install kubectx
# → kubectx と kubens の2つがインストールできる

このあとのそれぞれの解説を読んで、どちらかを使ってみたいと思ったら上のコマンドで2つまとめてインストールしよう。

kubectx : コンテキストを切り替える

Kubernetes の接続先を管理する方法として、コンテキストという単位で接続情報に名前を付けておく方法がある。通常は

$ kubectl config use-context 【Context 名】

といったコマンドでコンテキストを切り替えられるが、コレを簡単に行えるコマンドとして kubectx というコマンドがあった。

# 指定のコンテキストに切り替える
$ kubectx HOGE

# 一つ前に選択していたコンテキストに戻る
$ kubectx -

こんな感じでコマンドが短く実行できる。Tab 補完や fzf との連携もできるようだ。

…残念ながら、自分は KubeConfig ファイルを分けて export KUBECONFIG で切り替える方式が、多少手間でも事故がなくて良いと思っているので、コンテキスト切り替えは使わないのだが…。

kubens : ネームスペースを切り替える

そんな自分でも便利だと思ったのは、ネームスペースの切り替えを容易にする kubens コマンドだ。

通常、Namespace を切り替えるのは若干手間なので、--namespace (-n) オプションを使うことが多い。

$ kubectl get pod --namespace=hoge

接続中のコンテキストのデフォルト・ネームスペースを永続的に切り替えるには、次のように叩く必要がある。

$ kubectl config set-context $(kubectl config current-context) --namespace=hoge

コンテキスト切り替えの中でネームスペースも指定する、という形だ。

ココで kubens を使うと、次のように叩くだけで良い。

# ネームスペースを確認する
$ kubens

# 切り替える
$ kubens hoge

とても簡単だ。

以上

kubectl logs の拡張版といえる k8stail もお気に入りでよく使っているが、コレからは kubens もその仲間に加えるとしよう〜。