0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

kubectlをエイリアス&タブ補完設定して快適にする【bash/zsh対応】

0
Posted at

はじめに

業務でKubernetesに触れる機会が多くなってきたのですが、kubectlコマンドって地味に長くて打つのが少し面倒に感じていました。
例えば、kubectl get pods -n <namespace>やkubectl logs <pod-name> -n <namespace> --previousなど、名前空間指定が絡むと特に長くなりがちです。
解消できないか調べたところ、エイリアスやコマンド補完が出来るように設定できることを学んだので、共有したいと思い書き始めました。
CKAなどの資格を受験する際にも、最初に設定しておくと効率的に試験を進めることが出来るようなので、是非設定してみてください。

想定環境

  • OS:Ubuntu24.04(WSL)
  • シェル:zsh(今回はbashのパターンも書きます)

コマンド補完設定

bash

以下のコマンドを実行して、現在開いているターミナルにコマンド補完を設定します。

$ source <(kubectl completion bash)

次に、以下の内容を~/.bashrcに追記してbashシェルでのコマンド補完を永続化します。

.bashrc
source <(kubectl completion bash)

zsh

以下のコマンドを実行して、現在開いているターミナルにコマンド補完を設定します。

$ source <(kubectl completion zsh)

次に、以下の内容を~/.zshrcに追記してzshシェルでのコマンド補完を永続化します。

.zshrc
[[ $commands[kubectl] ]] && source <(kubectl completion zsh)

エイリアス設定

1. kubectlコマンドを「k」だけで実行できるようにする

~/.bashrcまたは~/.zshrcを開き、以下を追記します。

bash/zsh共通

.bashrc, .zshrc
alias k=kubectl

2. エイリアスを使用していてもコマンド補完が出来るようにする

同様に~/.bashrcまたは~/.zshrcに以下を追記します。

bash

.bashrc
complete -o default -F __start_kubectl k

complete:「補完ルールを定義する」ためのコマンド
-o default:後述する関数(__start_kubectl)が適切な補完候補を見つけられなかった場合に、Bash標準のファイル名補完などを実行するように指示するオプション。これを追加しておくことで、k apply -f [Tab]と打った際にカレントディレクトリのyamlファイルなどが候補に出てくるようになる
-F __start_kubectl k:kubectlのインストール時に生成される、補完専用のシェル関数をエイリアスに適用するオプション

zsh

zshでも同じ設定で対応できると思っていたのですが、command not found: completeのエラーが発生してしまいました。
completeコマンドはzshでは使えないようなので、代わりに以下の設定を使います。

.zshrc
compdef k=kubectl

注意
~/.zshrcに下記の記載がない場合は、ファイルの冒頭に追記しておく必要があります。

.zshrc
autoload -Uz compinit
compinit

まとめ

上記の設定はまとめて追記することもできます。以下はcatコマンドで一括追加する例です。

bash

$ cat <<EOF >> ~/.bashrc
source <(kubectl completion bash)
alias k=kubectl
complete -o default -F __start_kubectl k
EOF

$ source ~/.bashrc

zsh

~/.zshrcにautoload -Uz compinitおよびcompinitがまだ記載されていない場合は、以下のコードブロックの先頭に追加してください。

$ cat <<'EOF' >> ~/.zshrc
[[ $commands[kubectl] ]] && source <(kubectl completion zsh)
alias k=kubectl
compdef k=kubectl
EOF

$ source ~/.zshrc

少しでも役に立っていれば幸いです。見ていただきありがとうございました。

参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?