/kubectx

Fast way to switch between clusters and namespaces in kubectl!

Primary LanguageShellApache License 2.0Apache-2.0

This repository provides both kubectx and kubens tools.

kubectx helps you switch between clusters back and forth: kubectx demo GIF

kubens helps you switch between Kubernetes namespaces smoothly: kubens demo GIF

kubectx(1)

kubectx is an utility to manage and switch between kubectl(1) contexts.

USAGE:
  kubectx                   : list the contexts
  kubectx <NAME>            : switch to context <NAME>
  kubectx -                 : switch to the previous context
  kubectx <NEW_NAME>=<NAME> : rename context <NAME> to <NEW_NAME>
  kubectx <NEW_NAME>=.      : rename current-context to <NEW_NAME>
  kubectx -d <NAME>         : delete context <NAME> ('.' for current-context)
                              (this command won't delete the user/cluster entry
                              that is used by the context)

Usage

$ kubectx minikube
Switched to context "minikube".

$ kubectx -
Switched to context "oregon".

$ kubectx -
Switched to context "minikube".

$ kubectx dublin=gke_ahmetb_europe-west1-b_dublin
Context "dublin" set.
Aliased "gke_ahmetb_europe-west1-b_dublin" as "dublin".

kubectx supports Tab completion on bash/zsh/fish shells to help with long context names. You don't have to remember full context names anymore.


kubens(1)

kubens is an utility to switch between Kubernetes namespaces.

USAGE:
  kubens                    : list the namespaces
  kubens <NAME>             : change the active namespace
  kubens -                  : switch to the previous namespace

Usage

$ kubens kube-system
Context "test" set.
Active namespace is "kube-system".

$ kubens -
Context "test" set.
Active namespace is "default".

kubens also supports Tab completion on bash/zsh/fish shells.


Installation

macOS

🎊 Use the Homebrew package manager:

brew install kubectx

This command will set up bash/zsh/fish completion scripts automatically.

  • Running brew install with --with-short-names will install tools with names kctx and kns to prevent prefix collision with kubectl name.

  • If you like to add context/namespace info to your shell prompt ($PS1), I recommend trying out kube-ps1.

Linux

Since kubectx/kubens are written in Bash, you should be able to instal them to any POSIX environment that has Bash installed.

  • Download the kubectx, and kubens scripts.
  • Either:
    • save them all to somewhere in your PATH,
    • or save them to a directory, then create symlinks to kubectx/kubens from somewhere in your PATH, like /usr/local/bin
  • Make kubectx and kubens executable (chmod +x ...)
  • Figure out how to install bash/zsh/fish completion scripts.

Example installation steps:

sudo git clone https://github.com/ahmetb/kubectx /opt/kubectx
sudo ln -s /opt/kubectx/kubectx /usr/local/bin/kubectx
sudo ln -s /opt/kubectx/kubens /usr/local/bin/kubens

Arch Linux

An unofficial AUR package kubectx is available. Install instructions can be found on the Arch wiki.


Users

What are others saying about kubectx?
“Thank you for kubectx & kubens - I use them all the time & have them in my k8s toolset to maintain happiness :) ”@pbouwer
“I can't imagine working without kubectx and especially kubens anymore. It's pure gold.”@timoreimann
“I'm liking kubectx from @ahmetb, makes it super-easy to switch #Kubernetes contexts [...]”@lizrice
“Also using it on a daily basis. This and my zsh config that shows me the current k8s context 😉”@puja108
“Lately I've found myself using the kubens command more than kubectx. Both very useful though :-)”@stuartleeks
“yeah kubens rocks!”@embano1
“Special thanks to Ahmet Alp Balkan for creating kubectx, kubens, and kubectl aliases, as these tools made my life better.”@strebeld

If you liked kubectx, you may like my kubectl-aliases project, too.


Disclaimer: This is not an official Google product.

Stargazers over time

Stargazers over time