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