• Stars
    star
    14,832
  • Rank 1,872 (Top 0.04 %)
  • Language
    Go
  • License
    Apache License 2.0
  • Created about 7 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Faster way to switch between clusters and namespaces in kubectl

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 another cluster that's in kubeconfig
$ kubectx minikube
Switched to context "minikube".

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

# rename context
$ kubectx dublin=gke_ahmetb_europe-west1-b_dublin
Context "gke_ahmetb_europe-west1-b_dublin" renamed to "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. Make sure you configure your shell to load completions for installed Homebrew formulas.

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

Windows Installation (using Chocolatey)

Available as packages on Chocolatey

choco install kubens kubectx

Windows Installation (using winget)

Available as packages on winget

winget install --id ahmetb.kubectx
winget install --id ahmetb.kubens

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/custom/completions
chmod -R 755 ~/.oh-my-zsh/custom/completions
ln -s /opt/kubectx/completion/_kubectx.zsh ~/.oh-my-zsh/custom/completions/_kubectx.zsh
ln -s /opt/kubectx/completion/_kubens.zsh ~/.oh-my-zsh/custom/completions/_kubens.zsh
echo "fpath=($ZSH/custom/completions $fpath)" >> ~/.zshrc

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

More Repositories

1

kubernetes-network-policy-recipes

Example recipes for Kubernetes Network Policies that you can just copy paste
5,403
star
2

go-linq

.NET LINQ capabilities in Go
Go
3,426
star
3

kubectl-aliases

Programmatically generated handy kubectl aliases.
Shell
3,235
star
4

kubectl-tree

kubectl plugin to browse Kubernetes object hierarchies as a tree 🎄 (star the repo if you are using)
Go
2,788
star
5

cloud-run-faq

Unofficial FAQ and everything you've been wondering about Google Cloud Run.
Shell
2,292
star
6

gke-letsencrypt

Tutorial for installing cert-manager on GKE get HTTPS certificates from Let’s Encrypt (⚠️NOW OBSOLETE⚠️)
623
star
7

govvv

"go build" wrapper to add version info to Golang applications
Go
535
star
8

go-dexec

It's like Go os/exec package but for Docker. What if you could exec programs remotely with the same interface as os/exec?
Go
424
star
9

runsd

Drop-in Service Discovery capabilities for Google Cloud Run.
Go
406
star
10

kubectl-foreach

Run kubectl commands in all/some contexts in parallel (similar to GNU xargs+parallel)
Go
406
star
11

personal-dashboard

📊 Programmatically collecting and reporting various stats about myself daily
Go
337
star
12

wagl

🐝 DNS Service Discovery for Docker Swarm. Works out of the box. (NOW OBSOLETE, USE SWARM MODE)
Go
284
star
13

gen-crd-api-reference-docs

API Reference Docs generator for Kubernetes CRDs (used by Knative, Kubeflow and others)
Go
271
star
14

serverless-registry-proxy

Serverless reverse proxy for exposing container registries (GCR, Docker Hub, Artifact Registry etc) on custom domains.
Go
248
star
15

orman

lightweight and minimalist ORM for Java/Android. works with SQLite & MySQL. (not actively maintained)
Java
247
star
16

sheets-url-shortener

A simple short URL redirect service built on top of Google Sheets, and runs for cheap on Google Cloud Run serverless.
Go
178
star
17

In-Stock

📱 Is the new iDevice in town yet? (no longer maintained)
Objective-C
158
star
18

RectangleWin

Hotkey-driven window snapping to edges and corners using hotkeys on Windows 10/11.
Go
157
star
19

go-httpbin

http://httpbin.org endpoints for your Go tests
Go
121
star
20

dotfiles

Ahmet's dotfiles and macOS customizations
Shell
120
star
21

kubectl-extras

A collection of mini plugins for kubectl.
Shell
113
star
22

twitter-audit-log

Back up Twitter follow/mute/block lists periodically using GitHub Actions
Go
93
star
23

goodbye

Notify yourself when someone unfollows you on Twitter
Go
87
star
24

kubectl-pods_on

kubectl plugin to query Pods by Node names or selectors
Go
83
star
25

cloud-run-multi-region-terraform

Deploy a Cloud Run app to all available regions using Terraform.
HCL
80
star
26

azurefs

Mount Microsoft Azure Blob Storage as local filesystem in Linux (inactive)
Python
70
star
27

baklava

Go
64
star
28

cloud-run-iap-terraform-demo

Deploy an IAP-secured application to Cloud Run using Terraform (e.g. an admin portal or internal company app)
HCL
63
star
29

cloud-run-travisci

Example config for deploying from Travis CI to Google Cloud Run
Python
54
star
30

go-cursor

ANSI escape code helpers for Go
Go
53
star
31

public-speaking

@ahmetb's public speaking engagements & bio
50
star
32

multi-process-container-lazy-solution

Sample code accompanying the blog post:
Python
50
star
33

cloudrun-iamviz

Visualize call permissions between Cloud Run services
Go
48
star
34

serverless-url-redirect

Simple click-to-deploy serverless URL redirect service
Shell
38
star
35

goclone

Clone Go projects to a clean GOPATH and start hacking right away.
Shell
35
star
36

coffeelog

Sample multi-tier cloud-native application hosted on Google Kubernetes Engine (GKE)
Go
34
star
37

skaffold-from-laptop-to-cloud

Docker Voting App deployed to Kubernetes with Skaffold 3 different ways
JavaScript
32
star
38

cloud-run-static-outbound-ip

[DEPRECATED] Sample code for Cloud Run to use a static IP for outgoing requests via a SSH tunnel over a GCE instance
Python
29
star
39

rundev

(alpha, contact me if you’re using)
Go
28
star
40

dlog

Go library to parse the Docker Logs stream
Go
28
star
41

multi-process-container

Example docker container image with multiple services supervised by s6 init process
Shell
28
star
42

coredns-grpc-backend-sample

Sample CoreDNS gRPC proxy backend written in Go
Go
26
star
43

zone-printer

Small web app to print Google Cloud compute region it’s deployed to
Go
25
star
44

turkish-deasciifier-java

Turkish deASCIIfier library for Java
Java
24
star
45

ytaudio

Go
24
star
46

qs

URL query parameters from Go structs
Go
22
star
47

kcat

Syntax highlighting for Kubernetes manifests [WIP]
Go
19
star
48

cloud-run-deploy-via-api-go

Go
18
star
49

docker-registry-driver-azure

[⚠️DO NOT USE THIS - DEPRECATED ⚠️] Docker Registry – Azure Blob Storage Driver
Python
16
star
50

twitch-bot

Go
14
star
51

dailybbble

Archiving and serving what is popular on Dribbble every day
Python
13
star
52

docker-chocolatey

Chocolatey 'docker' package
PowerShell
12
star
53

comcasted

Are you being “Comcast-ed”? Test your speed every 5min and see if you're getting what you're paying.
Python
12
star
54

sorucevap

Go
11
star
55

open-diary-format

Because all diary keeping apps suck. Here's a standard format.
11
star
56

ytdl

Serverless video downloader app (using youtube-dl)
Go
11
star
57

Spark.NET

Wicked ▁▂▃▅▂▇ in your C# programs
C#
10
star
58

permalinker

Right click → Save to cloud → Permalink on your clipboard
Python
10
star
59

kubectl-runbridge

Go
9
star
60

radyo

a js radio plays similar tracks using last.fm & youtube. for my personal usage.
9
star
61

tfjs-cloudrun

JavaScript
9
star
62

gophercon-ist

8
star
63

leetcode-solutions

my solutions to http://leetcode.com/onlinejudge problems
Java
7
star
64

kubernetes-secrets-propagation-delay

Go
7
star
65

tmdb-downloader

Downloads tmdb movies data sequentially and saves to mongodb
Python
7
star
66

sample-bundle-deployment-controller

A sample CRD that deploys a bundle of arbitrary Kubernetes resources with pruning/kustomization capabilities.
Go
7
star
67

simplegauges

Practical time series gauges for daily stats (used in personal-dashboard project)
Python
6
star
68

kubectl-runproxy

🧪[experimental]☢️ a local k8s apiserver to make Cloud Run API work with kubectl (don't use this)
Go
4
star
69

cloudrun-socketio-whiteboard

JavaScript
4
star
70

mysqlbackup

simple python script to get gzipped mysql dumps with easy connection strings
4
star
71

hizlisozluk

Hizli Sozluk Android app
Java
3
star
72

futuremedium-resizer

a handy proportional image resizer and cropper for Java
Java
3
star
73

blobmetadb

Watches your application’s Microsoft Azure Blob Storage requests and keeps record of your blobs on Redis.
C#
3
star
74

orman-demos

demo projects playground for orman framework
Java
2
star
75

permalinker-chrome

Chrome extension for Permalinker. Right click any image on the web → Save to cloud → Share link with friends
JavaScript
2
star
76

orman-clickgame

a click game implemented with orman and sqlite
Java
2
star
77

cs352project

a useless CS 352 CRUD term project. uploading only for code storage purposes.
PHP
2
star
78

instagger

Lamest tool ever. Adds and removes hashtags to your instagram posts.
Go
2
star
79

swap

file name swapping utility for Unix systems
C
2
star
80

github-activity-recorder

2
star
81

home-ac-stats

Push stats from Sensibo AC controller to Google Cloud Monitoring
Go
2
star
82

blog-docker

Docker image for my blog's nginx server 🌵
Nginx
1
star
83

runstatic

Go
1
star
84

krew-index-autoapprove

Go
1
star
85

rtmpsave

Listens to a RTMP stream, encodes to specified audio format and uploads audio to Azure Blob Storage
Go
1
star
86

kubectl-colorful

Shell
1
star
87

yayinakisi

Yayin Akisi Android App
Java
1
star
88

colorify

colorify windows phone 7 app
C#
1
star