我可以在zsh中使用自动完成kubectl吗?

时间:2017-02-21 00:58:41

标签: autocomplete kubernetes zsh kubectl

我每天发现自己在做......

$ kubectl --context=foo get pods
  < copy text manually >
$ kubectl --context=foo logs dep1-12345678-10101

我想循环使用

匹配资源
$ kubectl --context=foo logs dep1<TAB>

但这对我的库存设置似乎没有任何作用。有什么想法吗?

osx 10.12.3 kubectl v1.4.5 zsh zsh 5.2(x86_64-apple-darwin16.0)

3 个答案:

答案 0 :(得分:28)

bashzsh都支持在您按<TAB>时完成打印命令的脚本。该功能称为可编程copmletion ,您可以在此处找到有关该功能的更多详细信息:zsh completion

幸运的是,您不需要编写自己的脚本 - kubectl为zsh&gt;提供了它。 5.2。尝试运行此命令:source <(kubectl completion zsh)

另一种选择是使用此工具:https://github.com/mkokho/kubemrr (discalimer:我是作者)。它存在的原因是因为标准完成脚本太慢 - kubernetes集群回复可能需要几秒钟才会显示所有pod名称。但kubemrr将名称保存在本地,因此响应几乎立即返回。

答案 1 :(得分:6)

我将此功能添加到$ HOME / .zshrc。

它会延迟加载kubectl的完整功能

kubectl () { command kubectl $* if [[ -z $KUBECTL_COMPLETE ]] then source <(command kubectl completion zsh) KUBECTL_COMPLETE=1 fi }

答案 2 :(得分:0)

对于oh-my-zsh,启用kubectl自动补全的最简单方法是在kubectl中添加~/.zshrc插件:

# somewhere in your .zshrc
plugins=(git kubectl)