Github url


by ahmetb

ahmetb /kubectx

Faster way to switch between clusters and namespaces in kubectl

7.8K Stars 525 Forks Last release: 9 days ago (v0.9.1) Apache License 2.0 215 Commits 17 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

  • kubens
    : Power tools for kubectl

Latest GitHub release GitHub stars Travis (.org) branch Proudly written in Bash

This repository provides both




tools.Install →

🥳📰 NEWS: With v0.9.0




are now rewritten in Go. (Don't worry, our lovely bash versions are still available!) Please test this new Go binaries by downloading them fromReleases →

**``` kubectx

```** helps you switch between Kubernetes namespaces smoothly: ![kubens demo GIF](

# kubectx(1)

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

USAGE: kubectx : list the contexts kubectx : switch to context kubectx - : switch to the previous context kubectx -c, --current : show the current context name kubectx = : rename context to kubectx =. : rename current-context to kubectx -d : delete context ('.' for current-context) (this command won't delete the user/cluster entry that is used by the context) kubectx -u, --unset : unset the current 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".


 supports <kbd>Tab</kbd> 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 a utility to switch between Kubernetes namespaces.

USAGE: kubens : list the namespaces kubens : change the active namespace kubens - : switch to the previous namespace kubens -c, --current : show the current namespace

### Usage

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


 also supports <kbd>Tab</kbd> completion on bash/zsh/fish shells.
* * *

## Installation

> **🥳📰 NEWS:** With v0.9.0
> ```
> kubectx
> ```
> and 
> ```
> kubens
> ```
> **are now rewritten in Go**. (Don't worry, our lovely **bash** versions are still available!) Please test this new Go binaries by downloading them from[**Releases →**](

There are several installation options:

- As kubectl plugins (macOS/Linux)
- macOS
  - Homebrew (recommended)
  - MacPorts
- Linux
  - Manual installation/upgrades
  - Arch Linux
  - Debian

### Kubectl Plugins (macOS and Linux)

You can install and use [Krew]( kubectl plugin manager to get




. **NOTE:** This will not install shell completion scripts, if you want those, choose another installation method below.

kubectl krew install ctx kubectl krew install ns

After installing, the tools will be available as

kubectl ctx


kubectl ns

### macOS

#### Homebrew

:confetti\_ball: If you use [Homebrew]( you can install like this:

brew install kubectx

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

- If you like to add context/namespace info to your shell prompt (


), I recommend trying out [kube-ps1](

#### MacPorts

If you use [MacPorts]( you can install like this:

sudo port install kubectx

### Linux





 are written in Bash, you should be able to install them to any POSIX environment that has Bash installed.
- Download the 


, and 


- Either:
  - save them all to somewhere in your 


  - or save them to a directory, then create symlinks to 




 from somewhere in your 


, like 


- Make 




 executable (

chmod +x ...


Install bash/zsh/fish [completion scripts](

  - For zsh: The completion scripts have to be in a path that belongs to 


. Either link or copy them to an existing folder. If using oh-my-zsh you can do as follows:

bash mkdir -p ~/.oh-my-zsh/completions chmod -R 755 ~/.oh-my-zsh/completions ln -s /opt/kubectx/completion/kubectx.zsh ~/.oh-my-zsh/completions/_kubectx.zsh ln -s /opt/kubectx/completion/kubens.zsh ~/.oh-my-zsh/completions/_kubens.zsh

Note that the leading underscore seems to be a convention. If completion doesn't work, add 

autoload -U compinit && compinit

 to your 


 (similar to [


]( If not using oh-my-zsh, you could link to 


 (might require sudo), depending on the 


 of your zsh installation. In case of error, calling 


 might help.
  - For bash: ```bash git clone ~/.kubectx COMPDIR=$(pkg-config --variable=completionsdir bash-completion) ln -sf ~/.kubectx/completion/kubens.bash $COMPDIR/kubens ln -sf ~/.kubectx/completion/kubectx.bash $COMPDIR/kubectx cat \<\< FOE \>\> ~/.bashrc

# kubectx and kubens

export PATH=~/.kubectx:\$PATH FOE
  • For fish:
    fish mkdir -p ~/.config/fish/completions ln -s /opt/kubectx/completion/ ~/.config/fish/completions/ ln -s /opt/kubectx/completion/ ~/.config/fish/completions/ ```

Example installation steps:

sudo git clone /opt/kubectx sudo ln -s /opt/kubectx/kubectx /usr/local/bin/kubectx sudo ln -s /opt/kubectx/kubens /usr/local/bin/kubens

Arch Linux

Available as official Arch Linux package. Install it via:

sudo pacman -S kubectx


Available as a Debian package for Debian Buster (testing), Sid (unstable) (note: if you are unfamiliar with Debian release process and how to enable testing/unstable repos, check the Debian Wiki):

sudo apt install kubectx

Interactive mode

If you want




commands to present you an interactive menu with fuzzy searching, you just need to [install


]( in your PATH.

kubectx interactive search with fzf

If you have


installed, but want to opt out of using this feature, set the environment variable



If you want to keep


interactive mode but need the default behavior of the command, you can do it using Unix composability:

kubectx | cat

Customizing colors

If you like to customize the colors indicating the current namespace or context, set the environment variables




(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[


]( environment variable.


| 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 | | “❤️ this shell script @ahmetb wrote to help make switching between kubectl config contexts a breeze.” – @briandanowski |

If you liked


, you may like my [


]( project, too.

Disclaimer: This is not an official Google product.

Stargazers over time

Stargazers over time Google Analytics

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.