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