Parent directory

kubectl.plugin.zsh

6066 bytes
  1if (( ! $+commands[kubectl] )); then
  2  return
  3fi
  4
  5# If the completion file doesn't exist yet, we need to autoload it and
  6# bind it to `kubectl`. Otherwise, compinit will have already done that.
  7if [[ ! -f "$ZSH_CACHE_DIR/completions/_kubectl" ]]; then
  8  typeset -g -A _comps
  9  autoload -Uz _kubectl
 10  _comps[kubectl]=_kubectl
 11fi
 12
 13kubectl completion zsh 2> /dev/null >| "$ZSH_CACHE_DIR/completions/_kubectl" &|
 14
 15# This command is used a LOT both below and in daily life
 16alias k=kubectl
 17
 18# Execute a kubectl command against all namespaces
 19alias kca='_kca(){ kubectl "$@" --all-namespaces;  unset -f _kca; }; _kca'
 20
 21# Apply a YML file
 22alias kaf='kubectl apply -f'
 23
 24# Apply a kustomization directory
 25alias kapk='kubectl apply -k'
 26
 27# Drop into an interactive terminal on a container
 28alias keti='kubectl exec -t -i'
 29
 30# Manage configuration quickly to switch contexts between local, dev ad staging.
 31alias kcuc='kubectl config use-context'
 32alias kcsc='kubectl config set-context'
 33alias kcdc='kubectl config delete-context'
 34alias kccc='kubectl config current-context'
 35
 36# List all contexts
 37alias kcgc='kubectl config get-contexts'
 38
 39# General aliases
 40alias kdel='kubectl delete'
 41alias kdelf='kubectl delete -f'
 42alias kdelk='kubectl delete -k'
 43alias kge='kubectl get events --sort-by=".lastTimestamp"'
 44alias kgew='kubectl get events --sort-by=".lastTimestamp" --watch'
 45
 46# Pod management.
 47alias kgp='kubectl get pods'
 48alias kgpl='kgp -l'
 49alias kgpn='kgp -n'
 50alias kgpsl='kubectl get pods --show-labels'
 51alias kgpa='kubectl get pods --all-namespaces'
 52alias kgpw='kgp --watch'
 53alias kgpwide='kgp -o wide'
 54alias kep='kubectl edit pods'
 55alias kdp='kubectl describe pods'
 56alias kdelp='kubectl delete pods'
 57alias kgpall='kubectl get pods --all-namespaces -o wide'
 58
 59# Service management.
 60alias kgs='kubectl get svc'
 61alias kgsa='kubectl get svc --all-namespaces'
 62alias kgsw='kgs --watch'
 63alias kgswide='kgs -o wide'
 64alias kes='kubectl edit svc'
 65alias kds='kubectl describe svc'
 66alias kdels='kubectl delete svc'
 67
 68# Ingress management
 69alias kgi='kubectl get ingress'
 70alias kgia='kubectl get ingress --all-namespaces'
 71alias kei='kubectl edit ingress'
 72alias kdi='kubectl describe ingress'
 73alias kdeli='kubectl delete ingress'
 74
 75# Namespace management
 76alias kgns='kubectl get namespaces'
 77alias kens='kubectl edit namespace'
 78alias kdns='kubectl describe namespace'
 79alias kdelns='kubectl delete namespace'
 80alias kcn='kubectl config set-context --current --namespace'
 81
 82# ConfigMap management
 83alias kgcm='kubectl get configmaps'
 84alias kgcma='kubectl get configmaps --all-namespaces'
 85alias kecm='kubectl edit configmap'
 86alias kdcm='kubectl describe configmap'
 87alias kdelcm='kubectl delete configmap'
 88
 89# Secret management
 90alias kgsec='kubectl get secret'
 91alias kgseca='kubectl get secret --all-namespaces'
 92alias kdsec='kubectl describe secret'
 93alias kdelsec='kubectl delete secret'
 94
 95# Deployment management.
 96alias kgd='kubectl get deployment'
 97alias kgda='kubectl get deployment --all-namespaces'
 98alias kgdw='kgd --watch'
 99alias kgdwide='kgd -o wide'
100alias ked='kubectl edit deployment'
101alias kdd='kubectl describe deployment'
102alias kdeld='kubectl delete deployment'
103alias ksd='kubectl scale deployment'
104alias krsd='kubectl rollout status deployment'
105alias krrd='kubectl rollout restart deployment'
106
107function kres(){
108  kubectl set env $@ REFRESHED_AT=$(date +%Y%m%d%H%M%S)
109}
110
111# Rollout management.
112alias kgrs='kubectl get replicaset'
113alias kdrs='kubectl describe replicaset'
114alias kers='kubectl edit replicaset'
115alias krh='kubectl rollout history'
116alias kru='kubectl rollout undo'
117
118# Statefulset management.
119alias kgss='kubectl get statefulset'
120alias kgssa='kubectl get statefulset --all-namespaces'
121alias kgssw='kgss --watch'
122alias kgsswide='kgss -o wide'
123alias kess='kubectl edit statefulset'
124alias kdss='kubectl describe statefulset'
125alias kdelss='kubectl delete statefulset'
126alias ksss='kubectl scale statefulset'
127alias krsss='kubectl rollout status statefulset'
128alias krrss='kubectl rollout restart statefulset'
129
130# Port forwarding
131alias kpf="kubectl port-forward"
132
133# Tools for accessing all information
134alias kga='kubectl get all'
135alias kgaa='kubectl get all --all-namespaces'
136
137# Logs
138alias kl='kubectl logs'
139alias kl1h='kubectl logs --since 1h'
140alias kl1m='kubectl logs --since 1m'
141alias kl1s='kubectl logs --since 1s'
142alias klf='kubectl logs -f'
143alias klf1h='kubectl logs --since 1h -f'
144alias klf1m='kubectl logs --since 1m -f'
145alias klf1s='kubectl logs --since 1s -f'
146
147# File copy
148alias kcp='kubectl cp'
149
150# Node Management
151alias kgno='kubectl get nodes'
152alias kgnosl='kubectl get nodes --show-labels'
153alias keno='kubectl edit node'
154alias kdno='kubectl describe node'
155alias kdelno='kubectl delete node'
156
157# PVC management.
158alias kgpvc='kubectl get pvc'
159alias kgpvca='kubectl get pvc --all-namespaces'
160alias kgpvcw='kgpvc --watch'
161alias kepvc='kubectl edit pvc'
162alias kdpvc='kubectl describe pvc'
163alias kdelpvc='kubectl delete pvc'
164
165# Service account management.
166alias kdsa="kubectl describe sa"
167alias kdelsa="kubectl delete sa"
168
169# DaemonSet management.
170alias kgds='kubectl get daemonset'
171alias kgdsa='kubectl get daemonset --all-namespaces'
172alias kgdsw='kgds --watch'
173alias keds='kubectl edit daemonset'
174alias kdds='kubectl describe daemonset'
175alias kdelds='kubectl delete daemonset'
176
177# CronJob management.
178alias kgcj='kubectl get cronjob'
179alias kecj='kubectl edit cronjob'
180alias kdcj='kubectl describe cronjob'
181alias kdelcj='kubectl delete cronjob'
182
183# Job management.
184alias kgj='kubectl get job'
185alias kej='kubectl edit job'
186alias kdj='kubectl describe job'
187alias kdelj='kubectl delete job'
188
189# Utility print functions (json / yaml)
190function _build_kubectl_out_alias {
191  setopt localoptions norcexpandparam
192
193  # alias function
194  eval "function $1 { $2 }"
195
196  # completion function
197  eval "function _$1 {
198    words=(kubectl \"\${words[@]:1}\")
199    _kubectl
200  }"
201
202  compdef _$1 $1
203}
204
205_build_kubectl_out_alias "kj"  'kubectl "$@" -o json | jq'
206_build_kubectl_out_alias "kjx" 'kubectl "$@" -o json | fx'
207_build_kubectl_out_alias "ky"  'kubectl "$@" -o yaml | yh'
208unfunction _build_kubectl_out_alias