2017-02-21 147 views
3

我每天都觉得自己做的......我可以在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的-苹果darwin16.0)

回答

7

两个bashzsh支持当按下<TAB>这就完成了印刷命令的脚本。该功能被称为可编程模块,你可以在这里找到更多的细节:zsh completion

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

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

+1

在未来的炮弹自动加载,你可以做'回声 “源<(kubectl完成的zsh)” >>〜/ .zshrc' – Nikhita

-1

我把这个函数添加到我的$ HOME/.zshrc中。

它将kubectl的延迟加载功能齐全

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

相关问题