I recently found myself typing a lot of keystrokes just to switch between the GKE clusters I’m currently using. The kubectl command line tool currently does not make it as easy as I would like, so I wrote my own tool.
The fact that GKE context names are long made me seek an alternative way.
There has been discussions to support KUBE_CONTEXT
or KUBE_NAMESPACE
environment variables. However these proposals are not accepted yet.
Some people use multiple KUBE_CONFIG
directories to switch between
multiple configuration files, which sounds like a directory management
overhead.
In my daily developer workflow, I switch back and forth between directories
with cd -
command. Similarly I switch between Git branches using the git checkout -
command. So why don’t we have this pattern for kubectl?
Enter kubectx
So I implemented kubectx. It’s a simple bash script but it does what I need. Here is what kubectx has to offer:
kubectx remembers your context switches, you can switch to the previous contexts with:
kubectx -
kubectx can create aliases for your long context names:
kubectx eu=gke_ahmetb-samples-playground_europe-west1-b_dublin
and then switch to a context easily:
kubectx eu
Not to mention, there is bash/zsh completion out of the box. It can autocomplete the context name with the Tab key. See a demo below.
Demo
Installation
I created a simple Homebrew tap to install on mac OS. This installs the symlink and the bash/zsh completion script automatically:
brew install kubectx
See the repository for up to date instructions as these instructions are subject to change and I probably won’t remember to update this article
Conclusion
Ideally, I want to see this functionality in kubectl
command and make
kubectx
obsolete . I love switching back and forth between kubectx -
everyday.
I’m sure I’d love to have an KUBE_CONTEXT
environment variable, too.
If you like this idea, make sure you support the proposal.
I hope kubectx
can help facilitate the conversation about this
topic further. Until then, kubectx
will stay as part of my daily
Kubernetes workflow.
Don’t want to use kubectx? You can still create this alias in your .bashrc/.zshrc that gives you similar functionality:
alias kubectx="kubectl config use-context"
If you installed kubectl shell completion, this alias can make your day easier. (I have a ton of other kubectl aliases I should share some day.)
Leave your thoughts