ahmetb / kubectx
- суббота, 25 апреля 2020 г. в 00:20:21
Shell
Faster way to switch between clusters and namespaces in kubectl
kubectx
+ kubens
: Power tools for kubectlThis repository provides both kubectx
and kubens
tools.
Install →
kubectx
helps you switch between clusters back and forth:
kubens
helps you switch between Kubernetes namespaces smoothly:
kubectx is a 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 -c, --current : show the current context name
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)
kubectx -u, --unset : unset the current context
$ 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 is a utility to switch between Kubernetes namespaces.
USAGE:
kubens : list the namespaces
kubens <NAME> : change the active namespace
kubens - : switch to the previous namespace
kubens -c, --current : show the current namespace
$ 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.
There are several installation options:
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
.
brew install kubectx
This command will set up bash/zsh/fish completion scripts automatically.
$PS1
),
I recommend trying out kube-ps1.If you use MacPorts you can install like this:
sudo port install kubectx
Since kubectx
/kubens
are written in Bash, you should be able to install
them to any POSIX environment that has Bash installed.
kubectx
, and kubens
scripts.PATH
,kubectx
/kubens
from
somewhere in your PATH
, like /usr/local/bin
kubectx
and kubens
executable (chmod +x ...
)$fpath
. Either link or copy them to an existing folder.
If using oh-my-zsh you can do as follows:
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
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.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
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
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
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 using Unix composability:
kubectx | cat
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.
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 |
“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 mykubectl-aliases
project, too.
Disclaimer: This is not an official Google product.