Skip to content

Instantly share code, notes, and snippets.

@doevelopper
Created June 3, 2019 11:07
Show Gist options
  • Star 30 You must be signed in to star a gist
  • Fork 17 You must be signed in to fork a gist
  • Save doevelopper/ff4a9a211e74f8a2d44eb4afb21f0a38 to your computer and use it in GitHub Desktop.
Save doevelopper/ff4a9a211e74f8a2d44eb4afb21f0a38 to your computer and use it in GitHub Desktop.

Kubectl plugin

This plugin adds completion for the Kubernetes cluster manager, as well as some aliases for common kubectl commands.

To use it, add kubectl to the plugins array in your zshrc file:

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
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'
@raheelsoomro
Copy link

Kubernetes Aliases

This command is used a LOT both below and in daily life

Set-Alias -Name k -Value kubectl

Setup alias for kubecolor

Set-Alias -Name kubectl -Value kubecolor

Execute a kubectl command against all namespaces

function kca { kubectl @Args --all-namespaces }

Apply a YML file

function kaf { kubectl apply -f @Args }

Drop into an interactive terminal on a container

function keti { kubectl exec -ti @Args }

Manage configuration quickly to switch contexts between local, dev ad staging.

function kcuc { kubectl config use-context @Args }
function kcsc { kubectl config set-context @Args }
function kcdc { kubectl config delete-context @Args }
function kccc { kubectl config current-context }

List all contexts

function kcgc { kubectl config get-contexts }

General aliases

function kdel { kubectl delete @Args }
function kdelf { kubectl delete -f @Args }

Pod management.

function kgp { kubectl get pods @Args }
function kgpw { kgp --watch }
function kgpwide { kgp -o wide }
function kep { kubectl edit pods @Args }
function kdp { kubectl describe pods @Args }
function kdelp { kubectl delete pods @Args }

get pod by label: kgpl "app=myapp" -n myns

function kgpl { kgp -l @Args }

Service management.

function kgs { kubectl get svc @Args }
function kgsw { kgs --watch }
function kgswide { kgs -o wide }
function kes { kubectl edit svc @Args }
function kds { kubectl describe svc @Args }
function kdels { kubectl delete svc @Args }

Ingress management

function kgi { kubectl get ingress @Args }
function kei { kubectl edit ingress @Args }
function kdi { kubectl describe ingress @Args }
function kdeli { kubectl delete ingress @Args }

Namespace management

function kgns { kubectl get namespaces @Args }
function kens { kubectl edit namespace @Args }
function kdns { kubectl describe namespace @Args }
function kdelns { kubectl delete namespace @Args }
function kcn { kubectl config set-context $(kubectl config current-context) --namespace @Args }

ConfigMap management

function kgcm { kubectl get configmaps @Args }
function kecm { kubectl edit configmap @Args }
function kdcm { kubectl describe configmap @Args }
function kdelcm { kubectl delete configmap @Args }

Secret management

function kgsec { kubectl get secret @Args }
function kdsec { kubectl describe secret @Args }
function kdelsec { kubectl delete secret @Args }

Deployment management.

function kgd { kubectl get deployment @Args }
function kgdw { kgd --watch }
function kgdwide { kgd -o wide }
function ked { kubectl edit deployment @Args }
function kdd { kubectl describe deployment @Args }
function kdeld { kubectl delete deployment @Args }
function ksd { kubectl scale deployment @Args }
function krsd { kubectl rollout status deployment @Args }
function kres { kubectl set env @Args REFRESHED_AT=$(Get-Date -Format "yyyyMMddHHmmss") }

Rollout management.

function kgrs { kubectl get rs @Args }
function krh { kubectl rollout history @Args }
function kru { kubectl rollout undo @Args }

Port forwarding

function kpf { kubectl port-forward @Args }

Tools for accessing all information

function kga { kubectl get}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment