kubectx is a tool to switch between contexts (clusters) on kubectl faster.
kubectx is a tool designed to simplify switching between Kubernetes clusters (contexts) in kubectl. It streamlines cluster management by enabling users to quickly switch contexts, rename them, or fuzzy-search using fzf for interactive selection.
Key Features:
Quickly switch between Kubernetes clusters and namespaces.
Rename existing contexts for better organization.
Fuzzy search with fzf integration for efficient context selection.
Shell autocompletion support for bash, zsh, and fish shells to reduce typing errors.
Lightweight and compatible with various operating systems.
Audience & Benefit:
Ideal for Kubernetes administrators, developers, and operators who manage multiple clusters or namespaces. kubectx saves time by reducing repetitive tasks and minimizing errors when switching between environments. It enhances productivity in multi-cluster workflows while maintaining simplicity and efficiency.
Available as a Go-based tool, it can be installed via winget on Windows or through various package managers on Linux and macOS.
README
kubectx + kubens: Power tools for kubectl
This repository provides both kubectx and kubens tools.
Install →
What are kubectx and kubens?
kubectx is a tool to switch between contexts (clusters) on kubectl
faster.
kubens is a tool to switch between Kubernetes namespaces (and
configure them for kubectl) easily.
Here's a kubectx demo:
...and here's a kubens demo:
Examples
# switch to another cluster that's in kubeconfig
$ kubectx minikube
Switched to context "minikube".
# switch back to previous cluster
$ kubectx -
Switched to context "oregon".
# rename context
$ kubectx dublin=gke_ahmetb_europe-west1-b_dublin
Context "gke_ahmetb_europe-west1-b_dublin" renamed to "dublin".
# change the active namespace on kubectl
$ kubens kube-system
Context "test" set.
Active namespace is "kube-system".
# go back to the previous namespace
$ kubens -
Context "test" set.
Active namespace is "default".
# change the active namespace even if it doesn't exist
$ kubens not-found-namespace --force
Context "test" set.
Active namespace is "not-found-namespace".
---
$ kubens not-found-namespace -f
Context "test" set.
Active namespace is "not-found-namespace".
If you have fzf installed, you can also
interactively select a context or cluster, or fuzzy-search by typing a few
characters. To learn more, read interactive mode →
Both kubectx and kubens support Tab completion on bash/zsh/fish
shells to help with long context names. You don't have to remember full context
names anymore.
Stable versions of kubectx and kubens are small bash scripts that you
can find in this repository.
Starting with v0.9.0, kubectx and kubensare now rewritten in Go. They
should work the same way (and we'll keep the bash-based implementations around)
but the new features will be added to the new Go programs. Please help us test
this new Go implementation by downloading the binaries from the Releases page
→
This command will set up bash/zsh/fish completion scripts automatically. Make sure you configure your shell to load completions for installed Homebrew formulas.
Newer versions might be available on repos like
Debian Buster (testing),
Sid (unstable)
(if you are unfamiliar with the Debian release process and how to enable
testing/unstable repos, check out the
Debian Wiki):
pacman (Arch Linux)
Available as official Arch Linux package. Install it via:
Add this line to your Plugins File (e.g.
~/.zsh_plugins.txt):
ahmetb/kubectx path:completion kind:fpath
Depending on your setup, you might or might not need to call compinit or
autoload -U compinit && compinit in your ~/.zshrc after you load the Plugins
file. If you use oh-my-zsh, load the
completions before you load oh-my-zsh because oh-my-zsh will call
compinit.
Completion scripts for plain zsh
The completion scripts have to be in a path that belongs to $fpath. Either
link or copy them to an existing folder.
If completion doesn't work, add autoload -U compinit && compinit to your
.zshrc (similar to
zsh-completions).
If you are not using oh-my-zsh, you
could link to /usr/share/zsh/functions/Completion (might require sudo),
depending on the $fpath of your zsh installation.
If you want kubectx and kubens commands to present you an interactive menu
with fuzzy searching, you just need to install
fzf in your $PATH.
If you have fzf installed, but want to opt out of using this feature, set the
environment variable KUBECTX_IGNORE_FZF=1.
If you want to keep fzf interactive mode but need the default behavior of the
command, you can do it by piping the output to another command (e.g. kubectx | cat ).
Customizing colors
If you like to customize the colors indicating the current namespace or context,
set the environment variables KUBECTX_CURRENT_FGCOLOR and
KUBECTX_CURRENT_BGCOLOR (refer color codes
here):
export KUBECTX_CURRENT_FGCOLOR=$(tput setaf 6) # blue text
export KUBECTX_CURRENT_BGCOLOR=$(tput setab 7) # white background
Colors in the output can be disabled by setting the
NO_COLOR environment variable.
If you liked kubectx, you may like my
kubectl-aliases project, too. I
recommend pairing kubectx and kubens with fzf and
kube-ps1.