kubectlのcontextとnamespace周りの操作をkubectxとkubensでちょっと楽する

2020.11.16

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

k8sを使い始めて、kubectlコマンドばかり打っている毎日です。その中でちょっと面倒だなと感じていた点がふたつ。

  • contextまわりのコマンドが覚えられない (kubectl get contextsとかやってしまう)
  • namespaceの指定(-n hogehoge もしくは --namespace hogehoge)を毎コマンドごとにするのが面倒

これらの煩わしい点をちょっと楽にしてくれるツールkubectxとkubensを同僚のキム インソに教えてもらったのでシェアします。


インストール

macだとHomebrewでコマンド一発でインストール可能です。

$ brew install kubectx

これだけでkubectxkubens両方のコマンドが使えるようになります。

他にも色々なインストール方法があるので、詳細はREADMEを御覧ください。

contextまわりのコマンドが覚えられない

kubectxコマンドが便利です。

context一覧を表示

現在のcontextは他と違う色で表示されます。(上記だと一番下の〜.ap-northeast-1.eksctl.io

context切り替え

$ kubectx (変更先context名)

その他

他にも色々できます。まあでも上記2コマンドだけ覚えてれば十分便利ではないでしょうか。

namespaceの指定を毎コマンドごとにするのが面倒

実はkubectlコマンドだけでも、毎回のnamespaceの指定を省略することが可能です。以下コマンドでデフォルトのnamespaceを切り替えることができ、そうすると -nもしくは--namespaceオプションなしでもそのnamespaceが使われます。

$ kubectl config set-context (context名) --namespace=(namespace名)

ですが、contextまわりのコマンドが覚えられないと言っていた私にはハードルが高い。。というわけで、代わりに kubens コマンドを使います。

namespace一覧を表示

kubectx同様、現在のnamespaceは他と違う色で表示されます。(上記例だとdefault)

namespace切り替え

$ kubens (変更先namespace名)

その他

他のサブコマンドもあります。

まとめ

kubectxとkubensコマンドを使ってちょっと楽する方法をご紹介しました。便利です。おすすめです。