summaryrefslogtreecommitdiff
path: root/plugins/kubectl
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/kubectl')
-rw-r--r--plugins/kubectl/README.md91
-rw-r--r--plugins/kubectl/kubectl.plugin.zsh114
2 files changed, 172 insertions, 33 deletions
diff --git a/plugins/kubectl/README.md b/plugins/kubectl/README.md
new file mode 100644
index 000000000..3343f0195
--- /dev/null
+++ b/plugins/kubectl/README.md
@@ -0,0 +1,91 @@
+# 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 |
+| | | **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 |
diff --git a/plugins/kubectl/kubectl.plugin.zsh b/plugins/kubectl/kubectl.plugin.zsh
index c4e30dacd..ab7a1a0a4 100644
--- a/plugins/kubectl/kubectl.plugin.zsh
+++ b/plugins/kubectl/kubectl.plugin.zsh
@@ -10,57 +10,105 @@ if (( $+commands[kubectl] )); then
unset __KUBECTL_COMPLETION_FILE
fi
-# This command is used ALOT both below and in daily life
+# 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='k apply -f'
+alias kaf='kubectl apply -f'
# Drop into an interactive terminal on a container
-alias keti='k exec -ti'
+alias keti='kubectl exec -ti'
# Manage configuration quickly to switch contexts between local, dev ad staging.
-alias kcuc='k config use-context'
-alias kcsc='k config set-context'
-alias kcdc='k config delete-context'
-alias kccc='k config current-context'
+alias kcuc='kubectl config use-context'
+alias kcsc='kubectl config set-context'
+alias kcdc='kubectl config delete-context'
+alias kccc='kubectl config current-context'
+
+# General aliases
+alias kdel='kubectl delete'
+alias kdelf='kubectl delete -f'
# Pod management.
-alias kgp='k get pods'
-alias kep='k edit pods'
-alias kdp='k describe pods'
-alias kdelp='k delete pods'
+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='k get svc'
-alias kes='k edit svc'
-alias kds='k describe svc'
-alias kdels='k delete svc'
+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='k get ingress'
-alias kei='k edit ingress'
-alias kdi='k describe ingress'
-alias kdeli='k delete ingress'
+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='k get secret'
-alias kdsec='k describe secret'
-alias kdelsec='k delete secret'
+alias kgsec='kubectl get secret'
+alias kdsec='kubectl describe secret'
+alias kdelsec='kubectl delete secret'
# Deployment management.
-alias kgd='k get deployment'
-alias ked='k edit deployment'
-alias kdd='k describe deployment'
-alias kdeld='k delete deployment'
-alias ksd='k scale deployment'
-alias krsd='k rollout status deployment'
+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='k get rs'
-alias krh='k rollout history'
-alias kru='k rollout undo'
+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='k logs'
-alias klf='k logs -f'
+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'