Need help with kubectx?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

ahmetb
8.8K Stars 611 Forks Apache License 2.0 222 Commits 30 Opened issues

Description

Faster way to switch between clusters and namespaces in kubectl

Services available

!
?

Need anything else?

Contributors list

No Data

kubectx
+
kubens
: Power tools for kubectl

Latest GitHub release GitHub stars Go implementation (CI) Proudly written in Bash

This repository provides both

kubectx
and
kubens
tools. Install →

🥳📰 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 →

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 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".

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 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".

kubens
also supports Tab 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
    • Debian
    • Arch Linux
    • Homebrew
    • Manual installation

Kubectl Plugins (macOS and Linux)

You can install and use Krew kubectl plugin manager to get

kubectx
and
kubens
. 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
and
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 (
    $PS1
    ), I recommend trying out kube-ps1.

MacPorts

If you use MacPorts you can install like this:

sudo port install kubectx

Linux

Debian

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

Arch Linux

Available as official Arch Linux package. Install it via:

sudo pacman -S kubectx

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 (
    $PS1
    ), I recommend trying out kube-ps1.

Manual

Since

kubectx
/
kubens
are written in Bash, you should be able to install 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 ...
    )
  • Install bash/zsh/fish completion scripts.

    • For zsh: The completion scripts have to be in a path that belongs to
      $fpath
      . 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
      .zshrc
      (similar to
      zsh-completions
      ). If 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. In case of error, calling
      compaudit
      might help.
    • For bash: ```bash git clone https://github.com/ahmetb/kubectx.git ~/.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/kubectx.fish ~/.config/fish/completions/ ln -s /opt/kubectx/completion/kubens.fish ~/.config/fish/completions/ ```

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

Interactive mode

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.

kubectx interactive search with fzf

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 using Unix composability:
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.


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

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 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.