Programmatically generated handy kubectl aliases.
kubectl-aliases
This repository contains a script to generate hundreds of convenient shell aliases for kubectl, so you no longer need to spell out every single command and --flag over and over again.
An example shell alias created from command/flags permutation looks like:
alias ksysgdepwslowidel='kubectl --namespace=kube-system get deployment --watch --show-labels -o=wide -l'
Confused? Read on.
Examples
Some of the 800 generated aliases are:
alias k='kubectl'
alias kg='kubectl get'
alias kgpo='kubectl get pod'
alias ksysgpo='kubectl --namespace=kube-system get pod'
alias krm='kubectl delete' alias krmf='kubectl delete -f' alias krming='kubectl delete ingress' alias krmingl='kubectl delete ingress -l' alias krmingall='kubectl delete ingress --all-namespaces'
alias kgsvcoyaml='kubectl get service -o=yaml' alias kgsvcwn='kubectl get service --watch --namespace' alias kgsvcslwn='kubectl get service --show-labels --watch --namespace'
alias kgwf='kubectl get --watch -f' ...
See the full list.
Installation
You can directly download the .kubectl_aliases file for bash/zsh or the .kubectl_aliases.fish file for fish or the .kubectl_aliases.nu file for Nushell and save it to your $HOME directory.
Bash/Zsh
Add the following to your .bashrc/.zshrc file:
[ -f ~/.kubectlaliases ] && source ~/.kubectlaliases
Recommendation: If you want to use GNU watch command instead of
kubectl [...] --watch, run it like this:
>
[ -f ~/.kubectl_aliases ] && source \
<(cat ~/.kubectl_aliases | sed -r 's/(kubectl.*) --watch/watch \1/g')
Print the full command before running it: Add this to your .bashrc or .zshrc file:
function kubectl() { echo "+ kubectl $@" >&2; command kubectl "$@"; }
Fish
Add the following to your ~/.config/fish/config.fish file:
test -f ~/.kubectlaliases.fish && source ~/.kubectlaliases.fish
This actually adds the more powerful fish abbreviations instead of aliases, so that pressing space shows the full command before execution.
Recommendation: If you want to use GNU watch command instead of
kubectl [...] --watch, run it like this:
>
test -f ~/.kubectl_aliases.fish && source \
(cat ~/.kubectl_aliases.fish | sed -r 's/(kubectl.*) --watch/watch \1/g' | psub)
Nushell
Add the following to your ~/.config/nushell/config.nu file:
source ~/.kubectl_aliases.nu
Syntax explanation
k:kubectl
sys: --namespace kube-system
- commands:
g: get
* d: describe
* rm: delete
* a: apply -f
* ak: apply -k
* k: kustomize
* ex: exec -i -t
* lo: logs -f
- resources: :warning: Please do not suggest new resources here, instead fork the project.
po: pod
* dep: deployment
* ing: ingress
* svc: service
* cm: configmap
* sec: secret
* ns: namespace
* no: node
- flags:
oyaml, ojson, owide
* all: --all or --all-namespaces depending on the command
* sl: --show-labels
* w: -w/--watch
- value flags (should be at the end):
n: -n/--namespace
* f: -f/--filename
* l: -l/--selector
Running the script
The script has only one optional argument, the shell to which the aliases will be generated. If not given, it assumes bash. Ex:
# Generate aliases for bash/zsh
python generatealiases.py > .kubectlaliases
Generate abbr for fish
python generatealiases.py fish > .kubectlaliases.fish
Generate aliases for nushell
python generatealiases.py nushell > .kubectlaliases.nu
FAQ
- Doesn't this slow down my shell start up? Sourcing the file that contains
echo $(($(date '+%s%N') / 1000000))
command yourself in your .bashrc/.zshrc.
- Can I add more Kubernetes resource types to this? Please consider forking
- Where can I find PowerShell aliases for kubectl? There’s a fork of this
Authors
This is not an official Google project.