CLIツール
ahmetb/kubectx avatar
ahmetb/kubectx

kubectx と kubens: kubectl のコンテキストと名前空間を高速に切り替える

kubectl でクラスターと名前空間をより高速に切り替える方法。 kubens** は、Kubernetes 名前空間を簡単に切り替える (および kubectl 用に構成する) ためのツールです。

スター 19,986フォーク 1,382GoApache-2.0

ひと目でわかる

これは何?
kubectl でクラスタと名前空間を切り替えるための小さな2つのツール。読み取り専用シェルや対話的なファジー検索にも対応。
誰に向いている?
kubectx と kubens は、Apache-2.0 ライセンスのユーティリティで、kubectl ユーザーがコンテキストと名前空間をより速く切り替えられるようにします。リポジトリの README にはバージョン履歴、セキュリティ保証、パフォーマンスのベンチマークは記載されていません。
商用利用できる?
できます。Apache-2.0 は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
今もメンテナンスされている?
されています。最後のコミットは 45 日前です。
何の言語で書かれている?
主に Go です(GitHub の言語統計による)。

回答はプロジェクトの GitHub データ(最終同期:2026年9月14日)と当サイトの分析に基づくもので、法的助言ではありません。

オープンソース詳細解説

kubectx と kubens とは

kubectx と kubens は、1つのリポジトリから提供される2つの独立したツールです。kubectx は kubectl のコンテキスト(クラスタ)をより速く切り替え、各コンテキストの読み取り専用シェルを起動できます。kubens は Kubernetes の名前空間を切り替え、kubectl 用に設定します。どちらも、クラスタや名前空間を移動する際に完全なコマンドを入力したり、完全な名前を覚えたりする手間を減らすことを目的としています。\n\n両者はクラスタや名前空間を作成する管理ツールではなく、kubeconfig と kubectl の現在値を切り替える補助コマンドである。対象が kubeconfig に存在するか、権限がその環境で許されているかは別の問題として残る。

基本的な使い方

kubectx は、kubeconfig にすでに存在する別のコンテキストに切り替えます。例: `kubectx minikube`。`kubectx -` で前のコンテキストに戻ります。`kubectx -s minikube` は単一のコンテキストのみを持つ分離されたシェルを起動し、`kubectx -r minikube` は書き込み操作をブロックする読み取り専用シェルを起動します。コンテキストの名前を変更するには `kubectx dublin=gke_ahmetb_europe-west1-b_dublin` を使用します。kubens はアクティブな名前空間を変更します。例: `kubens kube-system`、`kubens -` で前の名前空間に戻り、`kubens namespace-404 -f` で存在しない名前空間にも変更できます。\n\n運用前には kubeconfig にテスト用コンテキストを二つ用意し、kubectx minikube と kubectx - の切り替え結果を確認する。書き込み防止を評価する場合は kubectx -r minikube で別シェルを起動し、読み取り専用の制約が実際の kubectl 操作にどう現れるかを、対象クラスタを限定した状態で確かめる。名前空間側は kubens kube-system と kubens - を順に実行し、kubeconfig の current-context に意図した値が残るかを見る。

fzf による対話モード

PATH に fzf がインストールされている場合、kubectx と kubens の両方がファジー検索付きの対話メニューを表示します。この機能を無効にするには、環境変数 `KUBECTX_IGNORE_FZF=1` を設定します。fzf がインストールされているがデフォルトの動作が必要な場合は、出力を別のコマンドにパイプします(例: `kubectx | cat`)。README には、fzf の特定のバージョン要件や、対話インターフェースの詳細は記載されていません。

インストール

README には、macOS と Linux の Homebrew(`brew install kubectx`)、macOS の MacPorts(`sudo port install kubectx`)、Debian/Ubuntu の apt(`sudo apt install kubectx`)、Arch Linux の pacman(`sudo pacman -S kubectx`)、Windows の Chocolatey(`choco install kubens kubectx`)と Scoop(`scoop bucket add main && scoop install main/kubens main/kubectx`)、winget(`winget install --id ahmetb.kubectx && winget install --id ahmetb.kubens`)によるインストールが記載されています。kubectl プラグインとして使用する場合は、Krew で `kubectl krew install ctx` と `kubectl krew install ns` を実行します。Releases ページからバイナリをダウンロードして PATH に追加することもできます。\n\nKrew 経由で kubectl のプラグインとして導入する場合は、ctx と ns の二つの名前を使う点にも注意が要る。既存のシェル関数や別の補完設定と同居させるなら、同じ kubeconfig を参照する通常の実行、Krew の kubectl krew install ctx と kubectl krew install ns、bash・zsh・fish の補完をそれぞれ確認し、PATH の順序による差を記録する。

シェル補完

両方のツールは、bash、zsh、fish シェルで Tab 補完をサポートしています。README では、zsh の設定方法(antibody を使用するか、oh-my-zsh 内などで補完スクリプトを fpath にリンクする)、bash の設定方法(リポジトリを `~/.kubectx` にクローンし、補完ファイルを bash-completion ディレクトリにシンボリックリンクする)、fish の設定方法(補完ファイルを `~/.config/fish/completions/` にシンボリックリンクする)が説明されています。zsh の設定によっては `compinit` の呼び出しが必要になる場合があり、エラー時には `compaudit` が役立つ可能性があります。

色のカスタマイズ

現在の名前空間やコンテキストを示す色は、環境変数 `KUBECTX_CURRENT_FGCOLOR` と `KUBECTX_CURRENT_BGCOLOR` でカスタマイズできます。README の例では、青いテキストに `tput setaf 6`、白い背景に `tput setab 7` を使用しています。`NO_COLOR` 環境変数を設定すると、出力の色が無効になります。\n\n色の設定は表示上の補助であり、コンテキストや名前空間の切り替え結果そのものを保証するものではない。CI や共有端末では NO_COLOR を設定した出力も確認して、色に依存しないログ解析ができるかを見るとよい。fzf を有効にした環境では、対話メニューを使う経路と、kubectx をパイプへ渡す通常出力の経路を分けてテストする必要がある。

ライセンスと未確認の事項

このリポジトリは Apache-2.0 でライセンスされています。このライセンスは、作品を複製、派生物の作成、公開表示、公開演奏、サブライセンス、頒布するための、永続的で、世界的で、非独占的で、無償で、ロイヤリティフリーで、取消不能な著作権ライセンスを付与し、特定の条件下で特許ライセンスも付与します。セキュリティ体制、サポート、保証については何も述べられておらず、README にも記載されていません。リポジトリのメタデータには約 19,926 スターと 1,382 フォークが示されていますが、README にはパフォーマンスのベンチマークや詳細なバージョン履歴はありません。\n\nREADME に記載されたライセンスは Apache-2.0 で、利用条件はライセンス本文を読む必要がある。README だけではセキュリティ対応やサポート期間、各リリースの変更内容を判断できないため、業務の停止を避けたい環境ではその不足自体を導入条件に含めるべきである。

編集部の結論

kubectx と kubens は、Apache-2.0 ライセンスのユーティリティで、kubectl ユーザーがコンテキストと名前空間をより速く切り替えられるようにします。リポジトリの README にはバージョン履歴、セキュリティ保証、パフォーマンスのベンチマークは記載されていません。これらは公式のリリースノートやドキュメントで確認する必要があります。

公式情報源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
コミュニティノート

コミュニティノート