zsh/fishでkubectlの補完をできるようにする

はじめに

最近、仕事でkubernetesを使う機会があったのですが、kubectlの補完ができないことがもどかしかったので設定しました。
zsh/fishの両環境を使っているので、それぞれの設定方法をご紹介します。

zshの設定

zshは公式でcompletionが対応しているので、以下に従って設定をしていきます。
https://kubernetes.io/docs/tasks/tools/install-kubectl/#enabling-shell-autocompletion

~/.zshrcファイルに以下の記述を追加します。

source <(kubectl completion zsh)

zshを再起動するとkubectlの補完ができるようになっているはずです。

fishの設定

fishでは公式のkubectlの補完がサポートされていません。
そのため、こちらに従ってプラグインのインストールを行います。
https://github.com/evanlucas/fish-kubectl-completions

fish plugin managerを使っていない場合

以下のコマンドを入力します

~ ❯❯❯ mkdir -p .config/fish/completions
~ ❯❯❯ cd .config/fish/
~/.config/fish ❯❯❯ git clone https://github.com/evanlucas/fish-kubectl-completions.git

Fisherを使っている場合

以下のコマンドを入力します

~/.config/fish ❯❯❯ fisher add evanlucas/fish-kubectl-completions

利用例

fishの場合、例えば以下のコマンドだとリソースをすべて出してくれるようになります。(AtoZなので、省略コマンドと正式名称のコマンドが並んでいない場合もありますが 😅)

~ ❯❯❯ kubectl explain [tab]
all                         (Resource)  horizontalpodautoscalers  (Resource)  podtemplates            (Resource)
certificatesigningrequests  (Resource)  hpa                       (Resource)  psp                     (Resource)
cj                          (Resource)  ing                       (Resource)  pv                      (Resource)
clusterrolebindings         (Resource)  ingress                   (Resource)  pvc                     (Resource)
clusterroles                (Resource)  ingresses                 (Resource)  quota                   (Resource)
clusters                    (Resource)  job                       (Resource)  rc                      (Resource)
cm                          (Resource)  jobs                      (Resource)  replicasets             (Resource)
componentstatuses           (Resource)  limitranges               (Resource)  replicationcontrollers  (Resource)
configmap                   (Resource)  limits                    (Resource)  resourcequotas          (Resource)
configmaps                  (Resource)  namespace                 (Resource)  rolebindings            (Resource)
controllerrevisions         (Resource)  namespaces                (Resource)  roles                   (Resource)
crd                         (Resource)  netpol                    (Resource)  rs                      (Resource)
crds                        (Resource)  networkpolicies           (Resource)  sa                      (Resource)
cronjobs                    (Resource)  no                        (Resource)  sc                      (Resource)
cs                          (Resource)  node                      (Resource)  secret                  (Resource)
csr                         (Resource)  nodes                     (Resource)  secrets                 (Resource)
customresourcedefinition    (Resource)  ns                        (Resource)  service                 (Resource)
daemonsets                  (Resource)  pdb                       (Resource)  serviceaccounts         (Resource)
deploy                      (Resource)  persistentvolumeclaims    (Resource)  services                (Resource)
deployment                  (Resource)  persistentvolumes         (Resource)  statefulsets            (Resource)
deployments                 (Resource)  po                        (Resource)  storageclass            (Resource)
ds                          (Resource)  pod                       (Resource)  storageclasses          (Resource)
endpoints                   (Resource)  poddisruptionbudgets      (Resource)  sts                     (Resource)
ep                          (Resource)  podpreset                 (Resource)  svc                     (Resource)
ev                          (Resource)  pods                      (Resource)
events                      (Resource)  podsecuritypolicies       (Resource)

まとめ

今回はzsh/fishでのkubectl commandの補完機能を紹介しました。
補完機能で快適なkubectlライフを!