|
|
if (( ! $+commands[kubectl] )); then |
|
|
return |
|
|
fi |
|
|
|
|
|
# If the completion file doesn't exist yet, we need to autoload it and |
|
|
# bind it to `kubectl`. Otherwise, compinit will have already done that. |
|
|
if [[ ! -f "$ZSH_CACHE_DIR/completions/_kubectl" ]]; then |
|
|
typeset -g -A _comps |
|
|
autoload -Uz _kubectl |
|
|
_comps[kubectl]=_kubectl |
|
|
fi |
|
|
|
|
|
kubectl completion zsh 2> /dev/null >| "$ZSH_CACHE_DIR/completions/_kubectl" &| |
|
|
|
|
|
# This command is used a LOT both below and in daily life |
|
|
alias k=kubectl |
|
|
|
|
|
# Execute a kubectl command against all namespaces |
|
|
alias kca='_kca(){ kubectl "$@" --all-namespaces; unset -f _kca; }; _kca' |
|
|
|
|
|
# Apply a YML file |
|
|
alias kaf='kubectl apply -f' |
|
|
|
|
|
# Apply a kustomization directory |
|
|
alias kapk='kubectl apply -k' |
|
|
|
|
|
# Drop into an interactive terminal on a container |
|
|
alias keti='kubectl exec -t -i' |
|
|
|
|
|
# Manage configuration quickly to switch contexts between local, dev ad staging. |
|
|
alias kcuc='kubectl config use-context' |
|
|
alias kcsc='kubectl config set-context' |
|
|
alias kcdc='kubectl config delete-context' |
|
|
alias kccc='kubectl config current-context' |
|
|
|
|
|
# List all contexts |
|
|
alias kcgc='kubectl config get-contexts' |
|
|
|
|
|
# General aliases |
|
|
alias kdel='kubectl delete' |
|
|
alias kdelf='kubectl delete -f' |
|
|
alias kdelk='kubectl delete -k' |
|
|
alias kge='kubectl get events --sort-by=".lastTimestamp"' |
|
|
alias kgew='kubectl get events --sort-by=".lastTimestamp" --watch' |
|
|
|
|
|
# Pod management. |
|
|
alias kgp='kubectl get pods' |
|
|
alias kgpl='kgp -l' |
|
|
alias kgpn='kgp -n' |
|
|
alias kgpsl='kubectl get pods --show-labels' |
|
|
alias kgpa='kubectl get pods --all-namespaces' |
|
|
alias kgpw='kgp --watch' |
|
|
alias kgpwide='kgp -o wide' |
|
|
alias kep='kubectl edit pods' |
|
|
alias kdp='kubectl describe pods' |
|
|
alias kdelp='kubectl delete pods' |
|
|
alias kgpall='kubectl get pods --all-namespaces -o wide' |
|
|
|
|
|
# Service management. |
|
|
alias kgs='kubectl get svc' |
|
|
alias kgsa='kubectl get svc --all-namespaces' |
|
|
alias kgsw='kgs --watch' |
|
|
alias kgswide='kgs -o wide' |
|
|
alias kes='kubectl edit svc' |
|
|
alias kds='kubectl describe svc' |
|
|
alias kdels='kubectl delete svc' |
|
|
|
|
|
# Ingress management |
|
|
alias kgi='kubectl get ingress' |
|
|
alias kgia='kubectl get ingress --all-namespaces' |
|
|
alias kei='kubectl edit ingress' |
|
|
alias kdi='kubectl describe ingress' |
|
|
alias kdeli='kubectl delete ingress' |
|
|
|
|
|
# Namespace management |
|
|
alias kgns='kubectl get namespaces' |
|
|
alias kens='kubectl edit namespace' |
|
|
alias kdns='kubectl describe namespace' |
|
|
alias kdelns='kubectl delete namespace' |
|
|
alias kcn='kubectl config set-context --current --namespace' |
|
|
|
|
|
# ConfigMap management |
|
|
alias kgcm='kubectl get configmaps' |
|
|
alias kgcma='kubectl get configmaps --all-namespaces' |
|
|
alias kecm='kubectl edit configmap' |
|
|
alias kdcm='kubectl describe configmap' |
|
|
alias kdelcm='kubectl delete configmap' |
|
|
|
|
|
# Secret management |
|
|
alias kgsec='kubectl get secret' |
|
|
alias kgseca='kubectl get secret --all-namespaces' |
|
|
alias kdsec='kubectl describe secret' |
|
|
alias kdelsec='kubectl delete secret' |
|
|
|
|
|
# Deployment management. |
|
|
alias kgd='kubectl get deployment' |
|
|
alias kgda='kubectl get deployment --all-namespaces' |
|
|
alias kgdw='kgd --watch' |
|
|
alias kgdwide='kgd -o wide' |
|
|
alias ked='kubectl edit deployment' |
|
|
alias kdd='kubectl describe deployment' |
|
|
alias kdeld='kubectl delete deployment' |
|
|
alias ksd='kubectl scale deployment' |
|
|
alias krsd='kubectl rollout status deployment' |
|
|
alias krrd='kubectl rollout restart deployment' |
|
|
|
|
|
function kres(){ |
|
|
kubectl set env $@ REFRESHED_AT=$(date +%Y%m%d%H%M%S) |
|
|
} |
|
|
|
|
|
# Rollout management. |
|
|
alias kgrs='kubectl get replicaset' |
|
|
alias kdrs='kubectl describe replicaset' |
|
|
alias kers='kubectl edit replicaset' |
|
|
alias krh='kubectl rollout history' |
|
|
alias kru='kubectl rollout undo' |
|
|
|
|
|
# Statefulset management. |
|
|
alias kgss='kubectl get statefulset' |
|
|
alias kgssa='kubectl get statefulset --all-namespaces' |
|
|
alias kgssw='kgss --watch' |
|
|
alias kgsswide='kgss -o wide' |
|
|
alias kess='kubectl edit statefulset' |
|
|
alias kdss='kubectl describe statefulset' |
|
|
alias kdelss='kubectl delete statefulset' |
|
|
alias ksss='kubectl scale statefulset' |
|
|
alias krsss='kubectl rollout status statefulset' |
|
|
alias krrss='kubectl rollout restart statefulset' |
|
|
|
|
|
# Port forwarding |
|
|
alias kpf="kubectl port-forward" |
|
|
|
|
|
# Tools for accessing all information |
|
|
alias kga='kubectl get all' |
|
|
alias kgaa='kubectl get all --all-namespaces' |
|
|
|
|
|
# Logs |
|
|
alias kl='kubectl logs' |
|
|
alias kl1h='kubectl logs --since 1h' |
|
|
alias kl1m='kubectl logs --since 1m' |
|
|
alias kl1s='kubectl logs --since 1s' |
|
|
alias klf='kubectl logs -f' |
|
|
alias klf1h='kubectl logs --since 1h -f' |
|
|
alias klf1m='kubectl logs --since 1m -f' |
|
|
alias klf1s='kubectl logs --since 1s -f' |
|
|
|
|
|
# File copy |
|
|
alias kcp='kubectl cp' |
|
|
|
|
|
# Node Management |
|
|
alias kgno='kubectl get nodes' |
|
|
alias kgnosl='kubectl get nodes --show-labels' |
|
|
alias keno='kubectl edit node' |
|
|
alias kdno='kubectl describe node' |
|
|
alias kdelno='kubectl delete node' |
|
|
|
|
|
# PVC management. |
|
|
alias kgpvc='kubectl get pvc' |
|
|
alias kgpvca='kubectl get pvc --all-namespaces' |
|
|
alias kgpvcw='kgpvc --watch' |
|
|
alias kepvc='kubectl edit pvc' |
|
|
alias kdpvc='kubectl describe pvc' |
|
|
alias kdelpvc='kubectl delete pvc' |
|
|
|
|
|
# Service account management. |
|
|
alias kdsa="kubectl describe sa" |
|
|
alias kdelsa="kubectl delete sa" |
|
|
|
|
|
# DaemonSet management. |
|
|
alias kgds='kubectl get daemonset' |
|
|
alias kgdsa='kubectl get daemonset --all-namespaces' |
|
|
alias kgdsw='kgds --watch' |
|
|
alias keds='kubectl edit daemonset' |
|
|
alias kdds='kubectl describe daemonset' |
|
|
alias kdelds='kubectl delete daemonset' |
|
|
|
|
|
# CronJob management. |
|
|
alias kgcj='kubectl get cronjob' |
|
|
alias kecj='kubectl edit cronjob' |
|
|
alias kdcj='kubectl describe cronjob' |
|
|
alias kdelcj='kubectl delete cronjob' |
|
|
|
|
|
# Job management. |
|
|
alias kgj='kubectl get job' |
|
|
alias kej='kubectl edit job' |
|
|
alias kdj='kubectl describe job' |
|
|
alias kdelj='kubectl delete job' |
|
|
|
|
|
# Utility print functions (json / yaml) |
|
|
function _build_kubectl_out_alias { |
|
|
setopt localoptions norcexpandparam |
|
|
|
|
|
# alias function |
|
|
eval "function $1 { $2 }" |
|
|
|
|
|
# completion function |
|
|
eval "function _$1 { |
|
|
words=(kubectl \"\${words[@]:1}\") |
|
|
_kubectl |
|
|
}" |
|
|
|
|
|
compdef _$1 $1 |
|
|
} |
|
|
|
|
|
_build_kubectl_out_alias "kj" 'kubectl "$@" -o json | jq' |
|
|
_build_kubectl_out_alias "kjx" 'kubectl "$@" -o json | fx' |
|
|
_build_kubectl_out_alias "ky" 'kubectl "$@" -o yaml | yh' |
|
|
unfunction _build_kubectl_out_alias
|
|
|
|