2018-05-26 16:25:47 +00:00
|
|
|
|
if (( $+commands[kubectl] )); then
|
2022-01-05 08:03:30 +00:00
|
|
|
|
# TODO: 2022-01-05: remove this block
|
|
|
|
|
# remove old generated files
|
|
|
|
|
command rm -f "$ZSH_CACHE_DIR/kubectl_completion"
|
|
|
|
|
|
|
|
|
|
# TODO: 2022-01-05: remove this bit of code as it exists in oh-my-zsh.sh
|
|
|
|
|
# Add completions folder in $ZSH_CACHE_DIR
|
|
|
|
|
command mkdir -p "$ZSH_CACHE_DIR/completions"
|
|
|
|
|
(( ${fpath[(Ie)"$ZSH_CACHE_DIR/completions"]} )) || fpath=("$ZSH_CACHE_DIR/completions" $fpath)
|
|
|
|
|
|
2022-01-17 11:46:20 +00:00
|
|
|
|
# If the completion file does not exist, generate it and then source it
|
|
|
|
|
# Otherwise, source it and regenerate in the background
|
2022-01-05 08:03:30 +00:00
|
|
|
|
if [[ ! -f "$ZSH_CACHE_DIR/completions/_kubectl" ]]; then
|
2022-02-24 18:23:41 +00:00
|
|
|
|
kubectl completion zsh | tee "$ZSH_CACHE_DIR/completions/_kubectl" >/dev/null
|
2022-01-17 11:46:20 +00:00
|
|
|
|
source "$ZSH_CACHE_DIR/completions/_kubectl"
|
|
|
|
|
else
|
|
|
|
|
source "$ZSH_CACHE_DIR/completions/_kubectl"
|
2022-02-24 18:23:41 +00:00
|
|
|
|
kubectl completion zsh | tee "$ZSH_CACHE_DIR/completions/_kubectl" >/dev/null &|
|
2022-01-05 08:03:30 +00:00
|
|
|
|
fi
|
2016-08-15 00:30:55 +00:00
|
|
|
|
fi
|
2017-11-07 16:00:14 +00:00
|
|
|
|
|
2019-04-29 13:48:24 +00:00
|
|
|
|
# This command is used a LOT both below and in daily life
|
|
|
|
|
alias k=kubectl
|
2017-11-07 16:00:14 +00:00
|
|
|
|
|
2019-03-10 16:36:51 +00:00
|
|
|
|
# Execute a kubectl command against all namespaces
|
2020-02-13 17:50:56 +00:00
|
|
|
|
alias kca='_kca(){ kubectl "$@" --all-namespaces; unset -f _kca; }; _kca'
|
2019-03-10 16:36:51 +00:00
|
|
|
|
|
2018-03-09 16:14:09 +00:00
|
|
|
|
# Apply a YML file
|
2018-08-13 20:07:07 +00:00
|
|
|
|
alias kaf='kubectl apply -f'
|
2018-03-09 16:14:09 +00:00
|
|
|
|
|
2017-11-07 16:00:14 +00:00
|
|
|
|
# Drop into an interactive terminal on a container
|
2022-02-09 09:25:12 +00:00
|
|
|
|
alias keti='kubectl exec -t -i'
|
2017-11-07 16:00:14 +00:00
|
|
|
|
|
|
|
|
|
# Manage configuration quickly to switch contexts between local, dev ad staging.
|
2018-08-13 20:07:07 +00:00
|
|
|
|
alias kcuc='kubectl config use-context'
|
|
|
|
|
alias kcsc='kubectl config set-context'
|
|
|
|
|
alias kcdc='kubectl config delete-context'
|
|
|
|
|
alias kccc='kubectl config current-context'
|
2017-11-07 16:00:14 +00:00
|
|
|
|
|
2019-05-21 22:13:05 +00:00
|
|
|
|
# List all contexts
|
|
|
|
|
alias kcgc='kubectl config get-contexts'
|
|
|
|
|
|
2018-10-02 19:14:28 +00:00
|
|
|
|
# General aliases
|
|
|
|
|
alias kdel='kubectl delete'
|
|
|
|
|
alias kdelf='kubectl delete -f'
|
|
|
|
|
|
2017-11-07 16:00:14 +00:00
|
|
|
|
# Pod management.
|
2018-08-13 20:07:07 +00:00
|
|
|
|
alias kgp='kubectl get pods'
|
2019-12-29 04:59:14 +00:00
|
|
|
|
alias kgpa='kubectl get pods --all-namespaces'
|
2018-10-02 19:14:28 +00:00
|
|
|
|
alias kgpw='kgp --watch'
|
|
|
|
|
alias kgpwide='kgp -o wide'
|
2018-08-13 20:07:07 +00:00
|
|
|
|
alias kep='kubectl edit pods'
|
|
|
|
|
alias kdp='kubectl describe pods'
|
|
|
|
|
alias kdelp='kubectl delete pods'
|
2021-06-13 15:10:29 +00:00
|
|
|
|
alias kgpall='kubectl get pods --all-namespaces -o wide'
|
2017-11-07 16:00:14 +00:00
|
|
|
|
|
2018-08-29 19:01:40 +00:00
|
|
|
|
# get pod by label: kgpl "app=myapp" -n myns
|
2018-10-09 18:31:11 +00:00
|
|
|
|
alias kgpl='kgp -l'
|
2018-08-29 19:01:40 +00:00
|
|
|
|
|
2020-07-14 15:39:33 +00:00
|
|
|
|
# get pod by namespace: kgpn kube-system"
|
|
|
|
|
alias kgpn='kgp -n'
|
|
|
|
|
|
2017-11-07 16:00:14 +00:00
|
|
|
|
# Service management.
|
2018-08-13 20:07:07 +00:00
|
|
|
|
alias kgs='kubectl get svc'
|
2019-12-29 04:59:14 +00:00
|
|
|
|
alias kgsa='kubectl get svc --all-namespaces'
|
2018-10-02 19:14:28 +00:00
|
|
|
|
alias kgsw='kgs --watch'
|
|
|
|
|
alias kgswide='kgs -o wide'
|
2018-08-13 20:07:07 +00:00
|
|
|
|
alias kes='kubectl edit svc'
|
|
|
|
|
alias kds='kubectl describe svc'
|
|
|
|
|
alias kdels='kubectl delete svc'
|
2017-11-07 16:00:14 +00:00
|
|
|
|
|
2018-04-28 14:55:46 +00:00
|
|
|
|
# Ingress management
|
2018-08-13 20:07:07 +00:00
|
|
|
|
alias kgi='kubectl get ingress'
|
2019-12-29 04:59:14 +00:00
|
|
|
|
alias kgia='kubectl get ingress --all-namespaces'
|
2018-08-13 20:07:07 +00:00
|
|
|
|
alias kei='kubectl edit ingress'
|
|
|
|
|
alias kdi='kubectl describe ingress'
|
|
|
|
|
alias kdeli='kubectl delete ingress'
|
2018-04-28 14:55:46 +00:00
|
|
|
|
|
2018-10-02 18:55:45 +00:00
|
|
|
|
# Namespace management
|
|
|
|
|
alias kgns='kubectl get namespaces'
|
|
|
|
|
alias kens='kubectl edit namespace'
|
|
|
|
|
alias kdns='kubectl describe namespace'
|
|
|
|
|
alias kdelns='kubectl delete namespace'
|
2021-04-25 17:56:59 +00:00
|
|
|
|
alias kcn='kubectl config set-context --current --namespace'
|
2018-10-02 18:55:45 +00:00
|
|
|
|
|
|
|
|
|
# ConfigMap management
|
|
|
|
|
alias kgcm='kubectl get configmaps'
|
2019-12-29 04:59:14 +00:00
|
|
|
|
alias kgcma='kubectl get configmaps --all-namespaces'
|
2018-10-02 18:55:45 +00:00
|
|
|
|
alias kecm='kubectl edit configmap'
|
|
|
|
|
alias kdcm='kubectl describe configmap'
|
|
|
|
|
alias kdelcm='kubectl delete configmap'
|
|
|
|
|
|
2017-11-07 16:00:14 +00:00
|
|
|
|
# Secret management
|
2018-08-13 20:07:07 +00:00
|
|
|
|
alias kgsec='kubectl get secret'
|
2019-12-29 04:59:14 +00:00
|
|
|
|
alias kgseca='kubectl get secret --all-namespaces'
|
2018-08-13 20:07:07 +00:00
|
|
|
|
alias kdsec='kubectl describe secret'
|
|
|
|
|
alias kdelsec='kubectl delete secret'
|
2017-11-07 16:00:14 +00:00
|
|
|
|
|
|
|
|
|
# Deployment management.
|
2018-08-13 20:07:07 +00:00
|
|
|
|
alias kgd='kubectl get deployment'
|
2019-12-29 04:59:14 +00:00
|
|
|
|
alias kgda='kubectl get deployment --all-namespaces'
|
2018-10-02 19:14:28 +00:00
|
|
|
|
alias kgdw='kgd --watch'
|
|
|
|
|
alias kgdwide='kgd -o wide'
|
2018-08-13 20:07:07 +00:00
|
|
|
|
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'
|
2022-01-05 08:03:30 +00:00
|
|
|
|
|
|
|
|
|
function kres(){
|
|
|
|
|
kubectl set env $@ REFRESHED_AT=$(date +%Y%m%d%H%M%S)
|
2019-01-07 14:24:44 +00:00
|
|
|
|
}
|
2017-11-07 16:00:14 +00:00
|
|
|
|
|
|
|
|
|
# Rollout management.
|
2018-08-13 20:07:07 +00:00
|
|
|
|
alias kgrs='kubectl get rs'
|
|
|
|
|
alias krh='kubectl rollout history'
|
|
|
|
|
alias kru='kubectl rollout undo'
|
2018-03-09 16:12:42 +00:00
|
|
|
|
|
2019-06-15 18:49:33 +00:00
|
|
|
|
# Statefulset management.
|
|
|
|
|
alias kgss='kubectl get statefulset'
|
2019-12-29 04:59:14 +00:00
|
|
|
|
alias kgssa='kubectl get statefulset --all-namespaces'
|
2019-06-15 18:49:33 +00:00
|
|
|
|
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'
|
|
|
|
|
|
2018-08-29 19:01:40 +00:00
|
|
|
|
# Port forwarding
|
2018-10-02 18:53:38 +00:00
|
|
|
|
alias kpf="kubectl port-forward"
|
|
|
|
|
|
|
|
|
|
# Tools for accessing all information
|
|
|
|
|
alias kga='kubectl get all'
|
|
|
|
|
alias kgaa='kubectl get all --all-namespaces'
|
2018-08-29 19:01:40 +00:00
|
|
|
|
|
2018-03-09 16:12:42 +00:00
|
|
|
|
# Logs
|
2018-08-13 20:07:07 +00:00
|
|
|
|
alias kl='kubectl logs'
|
2019-12-29 04:58:31 +00:00
|
|
|
|
alias kl1h='kubectl logs --since 1h'
|
|
|
|
|
alias kl1m='kubectl logs --since 1m'
|
|
|
|
|
alias kl1s='kubectl logs --since 1s'
|
2018-08-13 20:07:07 +00:00
|
|
|
|
alias klf='kubectl logs -f'
|
2019-12-29 04:58:31 +00:00
|
|
|
|
alias klf1h='kubectl logs --since 1h -f'
|
|
|
|
|
alias klf1m='kubectl logs --since 1m -f'
|
|
|
|
|
alias klf1s='kubectl logs --since 1s -f'
|
2018-08-29 18:51:50 +00:00
|
|
|
|
|
2018-08-29 18:56:30 +00:00
|
|
|
|
# File copy
|
|
|
|
|
alias kcp='kubectl cp'
|
|
|
|
|
|
2018-08-29 18:51:50 +00:00
|
|
|
|
# Node Management
|
|
|
|
|
alias kgno='kubectl get nodes'
|
|
|
|
|
alias keno='kubectl edit node'
|
|
|
|
|
alias kdno='kubectl describe node'
|
2018-10-09 18:31:11 +00:00
|
|
|
|
alias kdelno='kubectl delete node'
|
2019-05-03 19:22:18 +00:00
|
|
|
|
|
|
|
|
|
# PVC management.
|
|
|
|
|
alias kgpvc='kubectl get pvc'
|
2019-12-29 04:59:14 +00:00
|
|
|
|
alias kgpvca='kubectl get pvc --all-namespaces'
|
2019-05-03 19:22:18 +00:00
|
|
|
|
alias kgpvcw='kgpvc --watch'
|
|
|
|
|
alias kepvc='kubectl edit pvc'
|
|
|
|
|
alias kdpvc='kubectl describe pvc'
|
|
|
|
|
alias kdelpvc='kubectl delete pvc'
|
|
|
|
|
|
2020-10-21 14:09:54 +00:00
|
|
|
|
# Service account management.
|
|
|
|
|
alias kdsa="kubectl describe sa"
|
|
|
|
|
alias kdelsa="kubectl delete sa"
|
|
|
|
|
|
|
|
|
|
# DaemonSet management.
|
|
|
|
|
alias kgds='kubectl get daemonset'
|
|
|
|
|
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'
|
|
|
|
|
|
2022-03-07 09:38:56 +00:00
|
|
|
|
# Job management.
|
|
|
|
|
alias kgj='kubectl get job'
|
|
|
|
|
alias kej='kubectl edit job'
|
|
|
|
|
alias kdj='kubectl describe job'
|
|
|
|
|
alias kdelj='kubectl delete job'
|
|
|
|
|
|
2020-10-15 22:52:34 +00:00
|
|
|
|
# Only run if the user actually has kubectl installed
|
2020-10-17 21:14:58 +00:00
|
|
|
|
if (( ${+_comps[kubectl]} )); then
|
2022-01-05 08:03:30 +00:00
|
|
|
|
function kj() { kubectl "$@" -o json | jq; }
|
|
|
|
|
function kjx() { kubectl "$@" -o json | fx; }
|
|
|
|
|
function ky() { kubectl "$@" -o yaml | yh; }
|
2020-10-08 17:18:43 +00:00
|
|
|
|
|
2020-10-15 22:52:34 +00:00
|
|
|
|
compdef kj=kubectl
|
|
|
|
|
compdef kjx=kubectl
|
|
|
|
|
compdef ky=kubectl
|
|
|
|
|
fi
|