【Kubernetes】kubeswitchでContextを簡単に切り替える

スポンサーリンク

はじめに

Kubernetesにおいて、ContextとNamespaceを簡単に切り替えることができるkubeswitchについて簡単に紹介したいと思います。

kubeswitchとは

kubeswitchとは、kubectxkubieなどと同じようにKubernetesのContextを簡単に切り替えることができるツールです。

GitHub - danielfoehrKn/kubeswitch: The kubectx for operators.
The kubectx for operators. Contribute to danielfoehrKn/kubeswitch development by creating an account on GitHub.

kubectxについては、下記を参考にしてください。

【Kubernetes】kubectxとkubensでContextとNamespaceを簡単に切り替える
はじめにKubernetesにおいて、ContextとNamespaceを簡単に切り替えられるkubectxとkubensについて簡単な使い方を紹介していきます。kubectxとkubenskubectxはContexを切り替えるツー...

特徴

kubeswitchは、下記のような特徴があります。

  • ContextとNamespaceを切り替えられる
  • 履歴から切り替えられる
  • 大量のContextを効率よく検索できる
  • ターミナルごとにContextを分けられる
  • ContextにAliasを設定できる
  • Gitのpre-commit hookのようなHooksが設定できる

kubectxとkubie

同じようなツールとして、kubectxkubieがあります。

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
GitHub - sbstp/kubie: A more powerful alternative to kubectx and kubens
A more powerful alternative to kubectx and kubens. Contribute to sbstp/kubie development by creating an account on GitHub.

私はもともとkubectxを使っていたのですが、全てのターミナルで同じコンテキストを使うことになるので、ターミナルのウィンドウごとにContextを設定できるkubieに移行しようとしてました。

しかし、いざkubieを使ってみると、Contextのみを指定して切り替えた場合に、NamespaceがDefaultになってしまうため、Namespaceも指定して切り替える必要がありました。Issueとしては上がっているみたいですが、まだ対応はしていないようです。

kubie doesn't pick up the namespace defined in context · Issue #110 · sbstp/kubie
Hi, since we are not allowed to list namespaces, we defined the namespaces in the context, but kubie doesn't pick up the namespace defined there when switch...

そこで、ターミナルのウィンドウごとにContextを設定でき、Contextを切り替えるとNamespaceも切り替えてくれるkubeswitchを使うことにしました。

インストール

brewを使って、下記でインストールができます。

brew install danielfoehrkn/switch/switch

インストールが完了したら、下記を.bashrc.zshrxに下記を追記します。

INSTALLATION_PATH=$(brew --prefix switch) && source $INSTALLATION_PATH/switch.sh

ちなみに、私はもともとkxkubectxを使っていたので、下記のようにaliasを設定しました。

alias kx="switch"

使い方

簡単な使い方を紹介します。

コンテキストを変更する

switchコマンドでContextの名前を検索して、Contextを変更することができます。

switch

Contextの名前を指定して、変更もできます。

switch <context name>

ターミナルのウィンドウごとにContextを使うことができます。

Namespaceを変更する

Namespaceだけを変える場合は、下記のコマンドを使います。

switch ns

履歴を確認する

switch h

下記コマンドで、最後に使っていたContextに変更できます。

switch .

下記のコマンドだと、履歴の1つ前のContextに変更できます。

switch -

エイリアスを設定する

Contextにエイリアスを設定することができます。

下記のコマンドでエイリアスを設定できます。

switch alias <alias>=<context name>

設定したエイリアスを確認するには、下記のコマンドを使います。

switch alias ls

設定したエイリアスを削除する場合は、下記のコマンドです。

switch alias rm <alias>

参考

タイトルとURLをコピーしました