summaryrefslogtreecommitdiff
path: root/plugins/kubectl
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/kubectl')
-rw-r--r--plugins/kubectl/README.md240
-rw-r--r--plugins/kubectl/kubectl.plugin.zsh46
2 files changed, 155 insertions, 131 deletions
diff --git a/plugins/kubectl/README.md b/plugins/kubectl/README.md
index 579a90b3b..5e4ae7e60 100644
--- a/plugins/kubectl/README.md
+++ b/plugins/kubectl/README.md
@@ -11,122 +11,130 @@ plugins=(... kubectl)
## Aliases
-| Alias | Command | Description |
-|:--------|:------------------------------------|:-------------------------------------------------------------------------------------------------|
-| k | `kubectl` | The kubectl command |
-| kca | `kubectl --all-namespaces` | The kubectl command targeting all namespaces |
-| kaf | `kubectl apply -f` | Apply a YML file |
-| keti | `kubectl exec -ti` | Drop into an interactive terminal on a container |
-| | | **Manage configuration quickly to switch contexts between local, dev and staging** |
-| kcuc | `kubectl config use-context` | Set the current-context in a kubeconfig file |
-| kcsc | `kubectl config set-context` | Set a context entry in kubeconfig |
-| kcdc | `kubectl config delete-context` | Delete the specified context from the kubeconfig |
-| kccc | `kubectl config current-context` | Display the current-context |
-| kcgc | `kubectl config get-contexts` | List of contexts available |
-| | | **General aliases** |
-| kdel | `kubectl delete` | Delete resources by filenames, stdin, resources and names, or by resources and label selector |
-| kdelf | `kubectl delete -f` | Delete a pod using the type and name specified in -f argument |
-| | | **Pod management** |
-| kgp | `kubectl get pods` | List all pods in ps output format |
-| kgpw | `kgp --watch` | After listing/getting the requested object, watch for changes |
-| kgpwide | `kgp -o wide` | Output in plain-text format with any additional information. For pods, the node name is included |
-| kep | `kubectl edit pods` | Edit pods from the default editor |
-| kdp | `kubectl describe pods` | Describe all pods |
-| kdelp | `kubectl delete pods` | Delete all pods matching passed arguments |
-| kgpl | `kgp -l` | Get pods by label. Example: `kgpl "app=myapp" -n myns` |
-| kgpn | `kgp -n` | Get pods by namespace. Example: `kgpn kube-system` |
-| | | **Service management** |
-| kgs | `kubectl get svc` | List all services in ps output format |
-| kgsw | `kgs --watch` | After listing all services, watch for changes |
-| kgswide | `kgs -o wide` | After listing all services, output in plain-text format with any additional information |
-| kes | `kubectl edit svc` | Edit services(svc) from the default editor |
-| kds | `kubectl describe svc` | Describe all services in detail |
-| kdels | `kubectl delete svc` | Delete all services matching passed argument |
-| | | **Ingress management** |
-| kgi | `kubectl get ingress` | List ingress resources in ps output format |
-| kei | `kubectl edit ingress` | Edit ingress resource from the default editor |
-| kdi | `kubectl describe ingress` | Describe ingress resource in detail |
-| kdeli | `kubectl delete ingress` | Delete ingress resources matching passed argument |
-| | | **Namespace management** |
-| kgns | `kubectl get namespaces` | List the current namespaces in a cluster |
-| kcn | `kubectl config set-context --current --namespace` | Change current namespace |
-| kens | `kubectl edit namespace` | Edit namespace resource from the default editor |
-| kdns | `kubectl describe namespace` | Describe namespace resource in detail |
-| kdelns | `kubectl delete namespace` | Delete the namespace. WARNING! This deletes everything in the namespace |
-| | | **ConfigMap management** |
-| kgcm | `kubectl get configmaps` | List the configmaps in ps output format |
-| kecm | `kubectl edit configmap` | Edit configmap resource from the default editor |
-| kdcm | `kubectl describe configmap` | Describe configmap resource in detail |
-| kdelcm | `kubectl delete configmap` | Delete the configmap |
-| | | **Secret management** |
-| kgsec | `kubectl get secret` | Get secret for decoding |
-| kdsec | `kubectl describe secret` | Describe secret resource in detail |
-| kdelsec | `kubectl delete secret` | Delete the secret |
-| | | **Deployment management** |
-| kgd | `kubectl get deployment` | Get the deployment |
-| kgdw | `kgd --watch` | After getting the deployment, watch for changes |
-| kgdwide | `kgd -o wide` | After getting the deployment, output in plain-text format with any additional information |
-| ked | `kubectl edit deployment` | Edit deployment resource from the default editor |
-| kdd | `kubectl describe deployment` | Describe deployment resource in detail |
-| kdeld | `kubectl delete deployment` | Delete the deployment |
-| ksd | `kubectl scale deployment` | Scale a deployment |
-| krsd | `kubectl rollout status deployment` | Check the rollout status of a deployment |
-| kres | `kubectl set env $@ REFRESHED_AT=...` | Recreate all pods in deployment with zero-downtime |
-| | | **Rollout management** |
-| kgrs | `kubectl get replicaset` | List all ReplicaSets `rs` created by the deployment |
-| kdrs | `kubectl describe replicaset` | Describe ReplicaSet in detail |
-| kers | `kubectl edit replicaset` | Edit ReplicaSet from the default editor |
-| krh | `kubectl rollout history` | Check the revisions of this deployment |
-| kru | `kubectl rollout undo` | Rollback to the previous revision |
-| | | **Port forwarding** |
-| kpf | `kubectl port-forward` | Forward one or more local ports to a pod |
-| | | **Tools for accessing all information** |
-| kga | `kubectl get all` | List all resources in ps format |
-| kgaa | `kubectl get all --all-namespaces` | List the requested object(s) across all namespaces |
-| | | **Logs** |
-| kl | `kubectl logs` | Print the logs for a container or resource |
-| klf | `kubectl logs -f` | Stream the logs for a container or resource (follow) |
-| | | **File copy** |
-| kcp | `kubectl cp` | Copy files and directories to and from containers |
-| | | **Node management** |
-| kgno | `kubectl get nodes` | List the nodes in ps output format |
-| keno | `kubectl edit node` | Edit nodes resource from the default editor |
-| kdno | `kubectl describe node` | Describe node resource in detail |
-| kdelno | `kubectl delete node` | Delete the node |
-| | | **Persistent Volume Claim management** |
-| kgpvc | `kubectl get pvc` | List all PVCs |
-| kgpvcw | `kgpvc --watch` | After listing/getting the requested object, watch for changes |
-| kepvc | `kubectl edit pvc` | Edit pvcs from the default editor |
-| kdpvc | `kubectl describe pvc` | Describe all pvcs |
-| kdelpvc | `kubectl delete pvc` | Delete all pvcs matching passed arguments |
-| | | **StatefulSets management** |
-| kgss | `kubectl get statefulset` | List the statefulsets in ps format |
-| kgssw | `kgss --watch` | After getting the list of statefulsets, watch for changes |
-| kgsswide| `kgss -o wide` | After getting the statefulsets, output in plain-text format with any additional information |
-| kess | `kubectl edit statefulset` | Edit statefulset resource from the default editor |
-| kdss | `kubectl describe statefulset` | Describe statefulset resource in detail |
-| kdelss | `kubectl delete statefulset` | Delete the statefulset |
-| ksss | `kubectl scale statefulset` | Scale a statefulset |
-| krsss | `kubectl rollout status statefulset`| Check the rollout status of a deployment |
-| | | **Service Accounts management** |
-| kdsa | `kubectl describe sa` | Describe a service account in details |
-| kdelsa | `kubectl delete sa` | Delete the service account |
-| | | **DaemonSet management** |
-| kgds | `kubectl get daemonset` | List all DaemonSets in ps output format |
-| kgdsw | `kgds --watch` | After listing all DaemonSets, watch for changes |
-| keds | `kubectl edit daemonset` | Edit DaemonSets from the default editor |
-| kdds | `kubectl describe daemonset` | Describe all DaemonSets in detail |
-| kdelds | `kubectl delete daemonset` | Delete all DaemonSets matching passed argument |
-| | | **CronJob management** |
-| kgcj | `kubectl get cronjob` | List all CronJobs in ps output format |
-| kecj | `kubectl edit cronjob` | Edit CronJob from the default editor |
-| kdcj | `kubectl describe cronjob` | Describe a CronJob in details |
-| kdelcj | `kubectl delete cronjob` | Delete the CronJob |
-| | | **Job management** |
-| kgj | `kubectl get job` | List all Job in ps output format |
-| kej | `kubectl edit job` | Edit a Job in details |
-| kdj | `kubectl describe job` | Describe the Job |
-| kdelj | `kubectl delete job` | Delete the Job |
+| Alias | Command | Description |
+| :------- | :------------------------------------------------------ | :----------------------------------------------------------------------------------------------- |
+| k | `kubectl` | The kubectl command |
+| kca | `kubectl --all-namespaces` | The kubectl command targeting all namespaces |
+| kaf | `kubectl apply -f` | Apply a YML file |
+| kapk | `kubectl apply -k` | Apply a kustomization directory |
+| keti | `kubectl exec -ti` | Drop into an interactive terminal on a container |
+| | | **Manage configuration quickly to switch contexts between local, dev and staging** |
+| kcuc | `kubectl config use-context` | Set the current-context in a kubeconfig file |
+| kcsc | `kubectl config set-context` | Set a context entry in kubeconfig |
+| kcdc | `kubectl config delete-context` | Delete the specified context from the kubeconfig |
+| kccc | `kubectl config current-context` | Display the current-context |
+| kcgc | `kubectl config get-contexts` | List of contexts available |
+| | | **General aliases** |
+| kdel | `kubectl delete` | Delete resources by filenames, stdin, resources and names, or by resources and label selector |
+| kdelf | `kubectl delete -f` | Delete a pod using the type and name specified in -f argument |
+| kdelk | `kubectl delete -k` | Delete all resources defined in a kustomization directory |
+| kge | `kubectl get events --sort-by=".lastTimestamp"` | Get events (sorted by timestamp) |
+| kgew | `kubectl get events --watch --sort-by=".lastTimestamp"` | Get events and watch as they occur (sorted by timestamp) |
+| | | **Pod management** |
+| kgp | `kubectl get pods` | List all pods in ps output format |
+| kgpl | `kgp -l` | Get pods by label. Example: `kgpl "app=myapp" -n myns` |
+| kgpn | `kgp -n` | Get pods by namespace. Example: `kgpn kube-system` |
+| kgpsl | `kubectl get pods --show-labels` | List all pods in ps output format with labels |
+| kgpw | `kgp --watch` | After listing/getting the requested object, watch for changes |
+| kgpwide | `kgp -o wide` | Output in plain-text format with any additional information. For pods, the node name is included |
+| kep | `kubectl edit pods` | Edit pods from the default editor |
+| kdp | `kubectl describe pods` | Describe all pods |
+| kdelp | `kubectl delete pods` | Delete all pods matching passed arguments |
+| | | **Service management** |
+| kgs | `kubectl get svc` | List all services in ps output format |
+| kgsw | `kgs --watch` | After listing all services, watch for changes |
+| kgswide | `kgs -o wide` | After listing all services, output in plain-text format with any additional information |
+| kes | `kubectl edit svc` | Edit services(svc) from the default editor |
+| kds | `kubectl describe svc` | Describe all services in detail |
+| kdels | `kubectl delete svc` | Delete all services matching passed argument |
+| | | **Ingress management** |
+| kgi | `kubectl get ingress` | List ingress resources in ps output format |
+| kei | `kubectl edit ingress` | Edit ingress resource from the default editor |
+| kdi | `kubectl describe ingress` | Describe ingress resource in detail |
+| kdeli | `kubectl delete ingress` | Delete ingress resources matching passed argument |
+| | | **Namespace management** |
+| kgns | `kubectl get namespaces` | List the current namespaces in a cluster |
+| kcn | `kubectl config set-context --current --namespace` | Change current namespace |
+| kens | `kubectl edit namespace` | Edit namespace resource from the default editor |
+| kdns | `kubectl describe namespace` | Describe namespace resource in detail |
+| kdelns | `kubectl delete namespace` | Delete the namespace. WARNING! This deletes everything in the namespace |
+| | | **ConfigMap management** |
+| kgcm | `kubectl get configmaps` | List the configmaps in ps output format |
+| kecm | `kubectl edit configmap` | Edit configmap resource from the default editor |
+| kdcm | `kubectl describe configmap` | Describe configmap resource in detail |
+| kdelcm | `kubectl delete configmap` | Delete the configmap |
+| | | **Secret management** |
+| kgsec | `kubectl get secret` | Get secret for decoding |
+| kdsec | `kubectl describe secret` | Describe secret resource in detail |
+| kdelsec | `kubectl delete secret` | Delete the secret |
+| | | **Deployment management** |
+| kgd | `kubectl get deployment` | Get the deployment |
+| kgdw | `kgd --watch` | After getting the deployment, watch for changes |
+| kgdwide | `kgd -o wide` | After getting the deployment, output in plain-text format with any additional information |
+| ked | `kubectl edit deployment` | Edit deployment resource from the default editor |
+| kdd | `kubectl describe deployment` | Describe deployment resource in detail |
+| kdeld | `kubectl delete deployment` | Delete the deployment |
+| ksd | `kubectl scale deployment` | Scale a deployment |
+| krsd | `kubectl rollout status deployment` | Check the rollout status of a deployment |
+| krrd | `kubectl rollout restart deployment` | Rollout restart a deployment |
+| kres | `kubectl set env $@ REFRESHED_AT=...` | Recreate all pods in deployment with zero-downtime |
+| | | **Rollout management** |
+| kgrs | `kubectl get replicaset` | List all ReplicaSets `rs` created by the deployment |
+| kdrs | `kubectl describe replicaset` | Describe ReplicaSet in detail |
+| kers | `kubectl edit replicaset` | Edit ReplicaSet from the default editor |
+| krh | `kubectl rollout history` | Check the revisions of this deployment |
+| kru | `kubectl rollout undo` | Rollback to the previous revision |
+| | | **Port forwarding** |
+| kpf | `kubectl port-forward` | Forward one or more local ports to a pod |
+| | | **Tools for accessing all information** |
+| kga | `kubectl get all` | List all resources in ps format |
+| kgaa | `kubectl get all --all-namespaces` | List the requested object(s) across all namespaces |
+| | | **Logs** |
+| kl | `kubectl logs` | Print the logs for a container or resource |
+| klf | `kubectl logs -f` | Stream the logs for a container or resource (follow) |
+| | | **File copy** |
+| kcp | `kubectl cp` | Copy files and directories to and from containers |
+| | | **Node management** |
+| kgno | `kubectl get nodes` | List the nodes in ps output format |
+| kgnosl | `kubectl get nodes --show-labels` | List the nodes in ps output format with labels |
+| keno | `kubectl edit node` | Edit nodes resource from the default editor |
+| kdno | `kubectl describe node` | Describe node resource in detail |
+| kdelno | `kubectl delete node` | Delete the node |
+| | | **Persistent Volume Claim management** |
+| kgpvc | `kubectl get pvc` | List all PVCs |
+| kgpvcw | `kgpvc --watch` | After listing/getting the requested object, watch for changes |
+| kepvc | `kubectl edit pvc` | Edit pvcs from the default editor |
+| kdpvc | `kubectl describe pvc` | Describe all pvcs |
+| kdelpvc | `kubectl delete pvc` | Delete all pvcs matching passed arguments |
+| | | **StatefulSets management** |
+| kgss | `kubectl get statefulset` | List the statefulsets in ps format |
+| kgssw | `kgss --watch` | After getting the list of statefulsets, watch for changes |
+| kgsswide | `kgss -o wide` | After getting the statefulsets, output in plain-text format with any additional information |
+| kess | `kubectl edit statefulset` | Edit statefulset resource from the default editor |
+| kdss | `kubectl describe statefulset` | Describe statefulset resource in detail |
+| kdelss | `kubectl delete statefulset` | Delete the statefulset |
+| ksss | `kubectl scale statefulset` | Scale a statefulset |
+| krsss | `kubectl rollout status statefulset` | Check the rollout status of a deployment |
+| krrss | `kubectl rollout restart statefulset` | Rollout restart a statefulset |
+| | | **Service Accounts management** |
+| kdsa | `kubectl describe sa` | Describe a service account in details |
+| kdelsa | `kubectl delete sa` | Delete the service account |
+| | | **DaemonSet management** |
+| kgds | `kubectl get daemonset` | List all DaemonSets in ps output format |
+| kgdsw | `kgds --watch` | After listing all DaemonSets, watch for changes |
+| keds | `kubectl edit daemonset` | Edit DaemonSets from the default editor |
+| kdds | `kubectl describe daemonset` | Describe all DaemonSets in detail |
+| kdelds | `kubectl delete daemonset` | Delete all DaemonSets matching passed argument |
+| | | **CronJob management** |
+| kgcj | `kubectl get cronjob` | List all CronJobs in ps output format |
+| kecj | `kubectl edit cronjob` | Edit CronJob from the default editor |
+| kdcj | `kubectl describe cronjob` | Describe a CronJob in details |
+| kdelcj | `kubectl delete cronjob` | Delete the CronJob |
+| | | **Job management** |
+| kgj | `kubectl get job` | List all Job in ps output format |
+| kej | `kubectl edit job` | Edit a Job in details |
+| kdj | `kubectl describe job` | Describe the Job |
+| kdelj | `kubectl delete job` | Delete the Job |
## Wrappers
diff --git a/plugins/kubectl/kubectl.plugin.zsh b/plugins/kubectl/kubectl.plugin.zsh
index 0dd4e691a..ba371cd87 100644
--- a/plugins/kubectl/kubectl.plugin.zsh
+++ b/plugins/kubectl/kubectl.plugin.zsh
@@ -21,6 +21,9 @@ 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'
@@ -36,9 +39,15 @@ 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'
@@ -47,12 +56,6 @@ alias kdp='kubectl describe pods'
alias kdelp='kubectl delete pods'
alias kgpall='kubectl get pods --all-namespaces -o wide'
-# get pod by label: kgpl "app=myapp" -n myns
-alias kgpl='kgp -l'
-
-# get pod by namespace: kgpn kube-system"
-alias kgpn='kgp -n'
-
# Service management.
alias kgs='kubectl get svc'
alias kgsa='kubectl get svc --all-namespaces'
@@ -99,6 +102,7 @@ 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)
@@ -121,6 +125,7 @@ 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"
@@ -144,6 +149,7 @@ 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'
@@ -180,13 +186,23 @@ alias kej='kubectl edit job'
alias kdj='kubectl describe job'
alias kdelj='kubectl delete job'
-# Only run if the user actually has kubectl installed
-if (( ${+_comps[kubectl]} )); then
- function kj() { kubectl "$@" -o json | jq; }
- function kjx() { kubectl "$@" -o json | fx; }
- function ky() { kubectl "$@" -o yaml | yh; }
+# Utility print functions (json / yaml)
+function _build_kubectl_out_alias {
+ setopt localoptions norcexpandparam
- compdef kj=kubectl
- compdef kjx=kubectl
- compdef ky=kubectl
-fi
+ # 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