@@ -0,0 +1,214 @@
# Kubectl plugin
This plugin adds completion for the [ Kubernetes cluster manager] ( https://kubernetes.io/docs/reference/kubectl/kubectl/ ) ,
as well as some aliases for common kubectl commands.
To use it, add ` kubectl ` to the plugins array in your zshrc file:
``` zsh
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 pod by label. Example: ` kgpl "app=myapp" -n myns ` |
| | | ** 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 ... ` | 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 rs ` | To see the ReplicaSet ` rs ` created by the deployment |
| 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 |
``` sh
if (( $+ commands[kubectl] )) ; then
__KUBECTL_COMPLETION_FILE=" ${ZSH_CACHE_DIR} /kubectl_completion"
if [[ ! -f $__KUBECTL_COMPLETION_FILE ]]; then
kubectl completion zsh > ! $__KUBECTL_COMPLETION_FILE
fi
[[ -f $__KUBECTL_COMPLETION_FILE ]] && source $__KUBECTL_COMPLETION_FILE
unset __KUBECTL_COMPLETION_FILE
fi
# This command is used a LOT both below and in daily life
alias k=kubectl
# Execute a kubectl command against all namespaces
alias kca=' f(){ kubectl "$@" --all-namespaces; unset -f f; }; f'
# Apply a YML file
alias kaf=' kubectl apply -f'
# Drop into an interactive terminal on a container
alias keti=' kubectl exec -ti'
# 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'
# Pod management.
alias kgp=' kubectl get pods'
alias kgpw=' kgp --watch'
alias kgpwide=' kgp -o wide'
alias kep=' kubectl edit pods'
alias kdp=' kubectl describe pods'
alias kdelp=' kubectl delete pods'
# get pod by label: kgpl "app=myapp" -n myns
alias kgpl=' kgp -l'
# Service management.
alias kgs=' kubectl get svc'
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 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 $(kubectl config current-context) --namespace'
# ConfigMap management
alias kgcm=' kubectl get configmaps'
alias kecm=' kubectl edit configmap'
alias kdcm=' kubectl describe configmap'
alias kdelcm=' kubectl delete configmap'
# Secret management
alias kgsec=' kubectl get secret'
alias kdsec=' kubectl describe secret'
alias kdelsec=' kubectl delete secret'
# Deployment management.
alias kgd=' kubectl get deployment'
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'
kres (){
kubectl set env $@ REFRESHED_AT=$( date +%Y%m%d%H%M%S)
}
# Rollout management.
alias kgrs=' kubectl get rs'
alias krh=' kubectl rollout history'
alias kru=' kubectl rollout undo'
# 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 klf=' kubectl logs -f'
# File copy
alias kcp=' kubectl cp'
# Node Management
alias kgno=' kubectl get nodes'
alias keno=' kubectl edit node'
alias kdno=' kubectl describe node'
alias kdelno=' kubectl delete node'
```