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

2022.11.26
2024.03.24
Kubernetes
kubectxkubeswitchkubie

はじめに

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

kubeswitchとは

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

GitHub - danielfoehrKn/kubeswitch: The kubectx  for operators.

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】kubectxとkubensでContextとNamespaceを簡単に切り替える

:::affiliate-message 本ページはAmazonアフィリエイトのリンクを含みます。

特徴

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

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

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

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

ちなみに、私はもともとkxkubectxを使っていたので、下記のように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>

参考

Support

\ この記事が役に立ったと思ったら、サポートお願いします! /

buy me a coffee
Share

Profile

author

Masa

都内のIT企業で働くエンジニア
自分が学んだことをブログでわかりやすく発信していきながらスキルアップを目指していきます!

buy me a coffee