Skip to content

Instantly share code, notes, and snippets.

@nicolaballotta
Last active February 14, 2023 23:46
Show Gist options
  • Save nicolaballotta/cab3e389e5fb541222677e5b4ec90c7f to your computer and use it in GitHub Desktop.
Save nicolaballotta/cab3e389e5fb541222677e5b4ec90c7f to your computer and use it in GitHub Desktop.
Add Kubernetes context to your zsh prompt (for Agnoster theme, but can easily be adapted to different themes)
# INSTALLATION
# - Add the following function to your .oh-my-zsh/themes/agnoster.zsh-theme
# - Call prompt_kubecontext from build_prompt() as showed in the example below
#
#
# build_prompt() {
# prompt_kubecontext
# }
prompt_kubecontext() {
if [[ $(kubectl config current-context) == *"testing"* ]]; then
prompt_segment green black "(`kubectl config current-context`)"
elif [[ $(kubectl config current-context) == *"staging"* ]]; then
prompt_segment yellow black "(`kubectl config current-context`)"
elif [[ $(kubectl config current-context) == *"production"* ]]; then
prompt_segment red yellow "(`kubectl config current-context`)"
fi
}
@ahmetb
Copy link

ahmetb commented Jan 10, 2018

@ahmetb
Copy link

ahmetb commented Jan 10, 2018

FWIW I said that because the code you got above will likely add 300-500 ms to each of your prompts because you're calling kubectl so many times and not caching the result. kubectl is very slow and ideally you shouldn't run it on each prompt. kube-ps1 directly reads the config file and therefore is pretty darn fast.

@kushalgangan
Copy link

kushalgangan commented Jul 3, 2020

but if you have to modify the prompt kube-ps1 is not useful, you can use below :

prompt_kubecontext() {
CTX=$(kubectx -c)
CNS=$(kubens -c)
  if [[ $CTX == *"tooling"* ]]; then
        prompt_segment green black "${CTX}:${CNS}"
  elif [[ $CTX == *"nonprod"* ]]; then
        prompt_segment yellow black "${CTX}:${CNS}"
  elif [[ $CTX == *"prod"* ]]; then
        prompt_segment red yellow "${CTX}:${CNS}"
  fi
}

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