コンテキストなどの切り替えが楽になるやつ。
職場の環境は切り替えが大量に発生するので使ってるけど、個人環境では使ってなかったので入れておいた。
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