コンテキストなどの切り替えが楽になるやつ。
職場の環境は切り替えが大量に発生するので使ってるけど、個人環境では使ってなかったので入れておいた。
kubectxとfzfで何も困ってないマン
— inductor (@_inductor_) 2020年6月11日
kubectx, kubens
引数にコンテキスト名・ネームスペース名を指定するだけで切り替わるコマンド。
インストール
$ curl -LO https://github.com/ahmetb/kubectx/releases/download/v0.9.1/kubectx_v0.9.1_linux_x86_64.tar.gz $ curl -LO https://github.com/ahmetb/kubectx/releases/download/v0.9.1/kubens_v0.9.1_linux_x86_64.tar.gz
自分の環境では/usr/local/binへ配置。
$ sudo tar xf kubectx_v0.9.1_linux_x86_64.tar.gz -C /usr/local/bin/ kubectx $ sudo tar xf kubens_v0.9.1_linux_x86_64.tar.gz -C /usr/local/bin/ kubens
確認
$ kubectx --version
error: unsupported option '--version'
$ kubectx --version
error: failed to switch context: no context exists with the name: "version"
$ kubectx --help
USAGE:
kubectx : list the contexts
kubectx <NAME> : switch to context <NAME>
kubectx - : switch to the previous context
kubectx -c, --current : show the current context name
kubectx <NEW_NAME>=<NAME> : rename context <NAME> to <NEW_NAME>
kubectx <NEW_NAME>=. : rename current-context to <NEW_NAME>
kubectx -u, --unset : unset the current context
kubectx -d <NAME> [<NAME...>] : delete context <NAME> ('.' for current-context)
(this command won't delete the user/cluster entry
referenced by the context entry)
kubectx -h,--help : show this message
[zaki@cloud-dev bin]$ kubens --help USAGE: kubens : list the namespaces in the current context kubens <NAME> : change the active namespace of current context kubens - : switch to the previous namespace in this context kubens -c, --current : show the current namespace kubens -h,--help : show this message
バージョン確認はなかった。
コンテキスト確認

だいたいこれと一緒。
$ kubectl config get-contexts -o name context-c2daobwhbsg kind-multi-1.15 kind-multicluster kubernetes-admin@kubernetes
$ kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* context-c2daobwhbsg cluster-c2daobwhbsg user-c2daobwhbsg
kind-multi-1.15 kind-multi-1.15 kind-multi-1.15
kind-multicluster kind-multicluster kind-multicluster
kubernetes-admin@kubernetes kubernetes kubernetes-admin
コンテキスト切り替え

before
$ kubectl config current-context context-c2daobwhbsg
切り替え
$ kubectx kind-multicluster ✔ Switched to context "kind-multicluster".
after
$ kubectl config current-context kind-multicluster
だいたいこれと一緒。
$ kc config use-context kind-multicluster Switched to context "kind-multicluster".
fzf
これだけだとkubectl config use-context <context-name>と(タイプ数が違う程度で)さほど変わらないけれど、fzfを併用することで、インタラクティブにコンテキストやネームスペースを切り替えできるようになる。
CentOS(yum)用はリポジトリなさげ。「Using git」でインストールする。
$ git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf $ ~/.fzf/install
実行例
[zaki@cloud-dev ~]$ ~/.fzf/install
Downloading bin/fzf ...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 650 100 650 0 0 1275 0 --:--:-- --:--:-- --:--:-- 1277
100 1133k 100 1133k 0 0 437k 0 0:00:02 0:00:02 --:--:-- 580k
- Checking fzf executable ... 0.22.0
Do you want to enable fuzzy auto-completion? ([y]/n) y
Do you want to enable key bindings? ([y]/n) y
Generate /home/zaki/.fzf.bash ... OK
Generate /home/zaki/.fzf.zsh ... OK
Do you want to update your shell configuration files? ([y]/n) y
Update /home/zaki/.bashrc:
- [ -f ~/.fzf.bash ] && source ~/.fzf.bash
+ Added
Update /home/zaki/.zshrc:
- [ -f ~/.fzf.zsh ] && source ~/.fzf.zsh
+ Added
Finished. Restart your shell or reload config file.
source ~/.bashrc # bash
source ~/.zshrc # zsh
Use uninstall script to remove fzf.
For more information, see: https://github.com/junegunn/fzf
これで~/.bashrcには
[ -f ~/.fzf.bash ] && source ~/.fzf.bash
が追記される。
これで新しいシェルを起動するか、sourceで内容を取り込めば、
$ kubectx
の実行が「現在値の出力」だったのが「リストから上下キーで選択・文字入力でインクリメンタルサーチ・Enterで変更」という動作に拡張される。

alias例
kubectlはkcで運用してるので、kubectxはkx・kubensはknにしてる。
alias kc=kubectl source <(kubectl completion bash) complete -o default -F __start_kubectl kc alias kx=kubectx alias kn=kubens