【Kubernetes】kubeswitchでContextを簡単に切り替える
はじめに
Kubernetesにおいて、ContextとNamespaceを簡単に切り替えることができるkubeswitchについて簡単に紹介したいと思います。
kubeswitchとは
kubeswitch
とは、kubectx
やkubie
などと同じように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を簡単に切り替える
:::affiliate-message 本ページはAmazonアフィリエイトのリンクを含みます。
特徴
kubeswitch
は、下記のような特徴があります。
- ContextとNamespaceを切り替えられる
- 履歴から切り替えられる
- 大量のContextを効率よく検索できる
- ターミナルごとにContextを分けられる
- ContextにAliasを設定できる
- Gitのpre-commit hookのようなHooksが設定できる
kubectxとkubie
同じようなツールとして、kubectx
とkubie
があります。
GitHub - ahmetb/kubectx: Faster way to switch between clusters and namespaces in kubectl
Faster way to switch between clusters and namespaces in kubectl - ahmetb/kubectx
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 switching context, and only use the default nam...
そこで、ターミナルのウィンドウごとにContextを設定でき、Contextを切り替えるとNamespaceも切り替えてくれるkubeswitch
を使うことにしました。
インストール
brew
を使って、下記でインストールができます。
1brew install danielfoehrkn/switch/switch
インストールが完了したら、下記を.bashrc
や.zshrx
に下記を追記します。
1INSTALLATION_PATH=$(brew --prefix switch) && source $INSTALLATION_PATH/switch.sh
ちなみに、私はもともとkx
でkubectx
を使っていたので、下記のようにaliasを設定しました。
1alias kx="switch"
使い方
簡単な使い方を紹介します。
コンテキストを変更する
switch
コマンドでContextの名前を検索して、Contextを変更することができます。
1switch
Contextの名前を指定して、変更もできます。
1switch <context name>
ターミナルのウィンドウごとにContextを使うことができます。
Namespaceを変更する
Namespaceだけを変える場合は、下記のコマンドを使います。
1switch ns
履歴を確認する
1switch h
下記コマンドで、最後に使っていたContextに変更できます。
1switch .
下記のコマンドだと、履歴の1つ前のContextに変更できます。
1switch -
エイリアスを設定する
Contextにエイリアスを設定することができます。
下記のコマンドでエイリアスを設定できます。
1switch alias <alias>=<context name>
設定したエイリアスを確認するには、下記のコマンドを使います。
1switch alias ls
設定したエイリアスを削除する場合は、下記のコマンドです。
1switch alias rm <alias>
参考
- danielfoehrKn/kubeswitch: The kubectx for operators.
- Best three tools for working with many Kubernetes contexts | Robusta
- sbstp/kubie: A more powerful alternative to kubectx and kubens
- ahmetb/kubectx: Faster way to switch between clusters and namespaces in kubectl