All Projects → ahmetb → Kubectx

ahmetb / Kubectx

Licence: apache-2.0
Faster way to switch between clusters and namespaces in kubectl

Programming Languages

go
31211 projects - #10 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to Kubectx

kubectl-janitor
List Kubernetes objects in a problematic state
Stars: ✭ 48 (-99.6%)
Mutual labels:  kubectl, kubectl-plugins
kubectl-skew
a simple kubectl plugin to make the "skew" visible
Stars: ✭ 18 (-99.85%)
Mutual labels:  kubectl, kubectl-plugins
kubectl-secretdata
A kubectl plugin for viewing decoded Secret data with search flags.
Stars: ✭ 37 (-99.69%)
Mutual labels:  kubectl, kubectl-plugins
kubectl-ns
Simple kubectl plugin to display/switch namespaces
Stars: ✭ 20 (-99.83%)
Mutual labels:  kubectl, kubectl-plugins
kubectl-view-serviceaccount-kubeconfig-plugin
A kubectl plugin that show a kubeconfig to access the apiserver with a specified serviceaccount.
Stars: ✭ 33 (-99.72%)
Mutual labels:  kubectl, kubectl-plugins
kubectl-whoami
This plugin gets the subject name using the effective kubeconfig
Stars: ✭ 74 (-99.38%)
Mutual labels:  kubectl, kubectl-plugins
kubectl-external-forward
kubectl plugin to connect to external host via Envoy Proxy in Kubernetes cluster
Stars: ✭ 37 (-99.69%)
Mutual labels:  kubectl, kubectl-plugins
kubectl-evict-pod
This plugin evicts the given pod and is useful for testing pod disruption budget rules
Stars: ✭ 51 (-99.57%)
Mutual labels:  kubectl, kubectl-plugins
kubectl-images
🕸 Show container images used in the cluster.
Stars: ✭ 153 (-98.72%)
Mutual labels:  kubectl, kubectl-plugins
kubectl-iexec
Kubectl plugin to interactively exec into a pod
Stars: ✭ 102 (-99.14%)
Mutual labels:  kubectl, kubectl-plugins
kubectl-ctx
Simple kubectl plugin to display/switch contexts
Stars: ✭ 36 (-99.7%)
Mutual labels:  kubectl, kubectl-plugins
kubectl-gs
kubectl plugin helping with custom resources by Giant Swarm
Stars: ✭ 36 (-99.7%)
Mutual labels:  kubectl, kubectl-plugins
kubectl-plugin-ssh-jump
A kubectl plugin to access nodes or remote services using a SSH jump Pod
Stars: ✭ 117 (-99.02%)
Mutual labels:  kubectl, kubectl-plugins
kubectlsafe
Safe operations in kubectl with plugin kubectlsafe
Stars: ✭ 36 (-99.7%)
Mutual labels:  kubectl, kubectl-plugins
kubectl-tmux-logs
A kubectl plugin to display container logs within separate tmux panes
Stars: ✭ 19 (-99.84%)
Mutual labels:  kubectl, kubectl-plugins
kube-lineage
A CLI tool to display all dependencies or dependents of an object in a Kubernetes cluster.
Stars: ✭ 238 (-98%)
Mutual labels:  kubectl, kubectl-plugins
Kubectl Debug
Debug your pod by a new container with every troubleshooting tools pre-installed
Stars: ✭ 2,091 (-82.46%)
Mutual labels:  kubectl, kubectl-plugins
Kubefwd
Bulk port forwarding Kubernetes services for local development.
Stars: ✭ 2,713 (-77.24%)
Mutual labels:  kubectl, kubernetes-clusters
kubectl-extras
A collection of mini plugins for kubectl.
Stars: ✭ 109 (-99.09%)
Mutual labels:  kubectl, kubectl-plugins
KuiClientTemplate
Use this template to make your own custom graphical terminal, via the Kui Grahpical CLI Framework
Stars: ✭ 26 (-99.78%)
Mutual labels:  kubectl, kubectl-plugins

kubectx + kubens: Power tools for kubectl

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

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: kubectx demo GIF

...and here's a kubens demo: kubens demo GIF

Examples

# switch to anoter cluster that's in kubeconfig
$ kubectx minikube
Switched to context "minikube".

# switch back to previous cluster
$ kubectx -
Switched to context "oregon".

# create an alias for the context
$ kubectx dublin=gke_ahmetb_europe-west1-b_dublin
Context "dublin" set.
Aliased "gke_ahmetb_europe-west1-b_dublin" as "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".

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.


Installation

Stable versions of kubectx and kubens are small bash scripts that you can find in this repository.

Starting with v0.9.0, kubectx and kubens are 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 →

Installation options:

If you like to add context/namespace information to your shell prompt ($PS1), you can try out kube-ps1.

Kubectl Plugins (macOS and Linux)

You can install and use the Krew kubectl plugin manager to get kubectx and kubens.

Note: This will not install the shell completion scripts. If you want them, *choose another installation method or install the scripts manually.

kubectl krew install ctx
kubectl krew install ns

After installing, the tools will be available as kubectl ctx and kubectl ns.

Homebrew (macOS and Linux)

If you use Homebrew you can install like this:

brew install kubectx

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

MacPorts (macOS)

If you use MacPorts you can install like this:

sudo port install kubectx

apt (Debian)

sudo apt install kubectx

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:

sudo pacman -S kubectx

Manual Installation (macOS and Linux)

Since kubectx and 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 ...)

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

If you also want to have shell completions, pick an installation method for the completion scripts that fits your system best: zsh with antibody, plain zsh, bash or fish.

Completion scripts for zsh with antibody

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.

Example with oh-my-zsh:

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

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.

In case of errors, calling compaudit might help.

Completion scripts for 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 << EOF >> ~/.bashrc


#kubectx and kubens
export PATH=~/.kubectx:\$PATH
EOF

Completion scripts for 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/

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

Stargazers over time

Stargazers over time Google Analytics

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].