Help us understand the problem. What is going on with this article?

kubectl completion: Bash/Zsh 向けの kubectl のシェル自動補完

More than 1 year has passed since last update.

はじめに

Kubernetes のコマンドラインツールである kubectl (cube control1) には Bash/Zsh 向けの shell autocompletion が実装されています。シェル自動補完を利用すればサブコマンドや Pod 名を途中まで入力すれば後は動的に値を候補から補完してくれます。もうリソース名をコピペする必要はありません。

kubectl completion

シェル補完を有効にする

Bash を使用していれば次のコマンドを実行して .bashrc に一行追記します。これで次からのシェルの実行で自動的にシェル補完が有効になります。

echo "source <(kubectl completion bash)" >> ~/.bashrc

macOS で Bash を使用しているなら、Homebrew で bash-completion を事前にインストールする必要があります。

## macOS 標準の Bash 3.2 を使用しているなら
brew install bash-completion
## Bash 4.1+ なら
brew install bash-completion@2

Zsh を使用しているなら、次のコマンドを実行して .zshrc に一行追記するだけです。

echo "source <(kubectl completion zsh)" >> ~/.zshrc

最近の kubectl completion トピックス

ショートフラグでのコンテキストのオーバーライドをサポート

kubectl のシェル補完はいくつかのフラグがコンテキストのオーバーライドに対応しており、例えば操作する対象のネームスペースを指定する --namespace フラグは Pod 名などのリソース名を入力する前に設定しておくことで、対象のネームスペースのリソースを補完候補として使用してくれるようになります。オーバーライドに対応しているオプションは次のとおりです。

  • --kubeconfig
  • --cluster
  • --user
  • --context
  • --namespace
  • --server

またこれまでショートフラグである -n (namespace) や -s (server) はオーバーライドに対応していませんでしたが、kubectl 1.9 からこれをサポートしました2。これによりタイプ数をより少なくすることができます。

ショートフラグでのコンテキストのオーバーライド

Zsh で --flag=value 形式でフラグを指定すると補完が壊れる問題を修正

--flag=value 形式でフラグを使うのが好きな方に朗報です。Zsh 向けの補完でこのイコールを使う形式でフラグを指定すると補完が壊れる問題がありましたが、これは kubectl 1.8 で修正しました3。kubeadm でも同様の問題がありましたが、これも修正されています。

`--flag=value` 形式でフラグを使うのが好きな方に

おわりに

kubectl completion は、現在のところ Bash/Zsh のみのサポートとなっています。Fish 向けには補完スクリプトがあるようです4。また kubectl のインタラクティブシェルである kube-prompt は、使用しているシェルに関係なく補完を利用することができるため、こちらもおすすめです。

より快適な Kubernetes ライフを目指して Kubernetes 1.6 から kubectl completion に継続的にコントリビュートしていきました。今後もよりよくなるように取り組んでいきます。


このエントリは、弊社 Z Lab のメンバーによる Z Lab Advent Calendar 2017 の19日目として当日業務時間中に書きました。

superbrothers
Working at Preferred Networks, Inc / CNCF Ambassador / 『Kubernetes実践入門』『 みんなのDocker/Kubernetes』共著 / 『入門Prometheus』監訳 / Kubernetes Meetup Tokyo co-organizer / Cloud Native Deep Dive co-organizer
https://text.superbrothers.dev/
pfn
Make the real world computable / 現実世界を計算可能にする
https://preferred.jp/ja/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした