I daily find myself doing...
$ kubectl --context=foo get pods < copy text manually > $ kubectl --context=foo logs dep1-12345678-10101 I would like to cycle through matching resources with
$ kubectl --context=foo logs dep1<TAB> but this doesn't seem to do anything with my stock setup. Any ideas?
osx 10.12.3 kubectl v1.4.5 zsh zsh 5.2 (x86_64-apple-darwin16.0)
zsh-autocomplete adds real-time type-ahead autocompletion to Zsh. Find as you type, then press Tab to insert the top completion, Shift Tab to insert the bottom one, or ↓ / PgDn to select another completion.
Both bash and zsh supports scripts that completes printed command when you press <TAB>. The feature is called Programmable completion, and you can find more details about that here: zsh completion.
Fortunately, you don't need to write your own script - kubectl provides it for zsh > 5.2. Try running this command: source <(kubectl completion zsh).
Another option is to use this tool: https://github.com/mkokho/kubemrr (disclaimer: I'm the author). The reason it exists is because standard completion script is too slow - it might take seconds before Kubernetes cluster replies will all pod names. But kubemrr keeps the names locally, so the response comes back almost immediately.
I add this function to my $HOME/.zshrc.
It will lazy load complete function of kubectl
kubectl () { command kubectl $* if [[ -z $KUBECTL_COMPLETE ]] then source <(command kubectl completion zsh) KUBECTL_COMPLETE=1 fi } The oneline version:
(( ${+commands[kubectl]} )) && alias kubectl='test -z $C_KUBE && C_KUBE=1 && source <(command kubectl completion zsh); command kubectl'
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With