Kubernetes CLI Tools

Developers love to build tooling for other developers; this means there's an infinite amount of tooling for Kubernetes.

This is my recommended toolset:

Oh My Zsh

Not specifically a Kubernetes tool but still recommended. Oh my Zsh is an addon to Zsh (the default shell with MacOS). It allows you to easily add auto suggestions and tab completion to kubectl.

Auto suggestions

## Linux Users only
sudo apt-get install -y zsh

# Oh my zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
# Zsh completions plugin
git clone https://github.com/zsh-users/zsh-completions ${ZSH_CUSTOM:=~/.oh-my-zsh/custom}/plugins/zsh-completions
# Zsh auto suggestions
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

Install Oh my Zsh

You then need to update your .zshrc config to load the plugins.

nano ~/.zshrc

Find the plugins line

plugins=()

Update it to load the new plugins

plugins=(git kubectl zsh-completions zsh-autosuggestions)

# Also load the kubectl completion 
source <(kubectl completion zsh)


KubeCTX & KubeNS

If you work with multiple clusters then Kubectx is a must have. Kubectx allows you to switch between clusters easily. Kubens is the sister tool that can quickly switch between namespaces.

cd /tmp \
  && git clone https://github.com/ahmetb/kubectx \
  && cd kubectx \
  && mv kubectx /usr/local/bin/kubectx \
  && mv kubens /usr/local/bin/kubens \
  && cd .. \
  && rm -rf kubectx

Install KubeCTX & KubeNS

Stern

Stern allows you to tail all the pods in a deployment concurrently. It's a must have for troubleshooting logs. Each pod will be colour coded in a unique colour. Queries are regular expression so you only need to know the exact pod ID.

# MacOS
brew install stern

# Linux oneliner
STERN_VERSION=1.11.0
sudo curl -L -o /usr/local/bin/stern https://github.com/wercker/stern/releases/download/${STERN_VERSION}/stern_linux_amd64 \
  && sudo chmod +x /usr/local/bin/stern

Install Stern

Helm

Helm to Kubernetes is like APT is to Ubuntu. Helm Charts are community maintained ready to go applications. Charts assist you with installing & keeping up to date complex applications.

curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh

Install Helm

Kube-PS1

Kubeps1 displays the cluster and namespace context currently active in your terminal prompt. It's extremely useful when managing multiple clusters.

git clone https://github.com/jonmosco/kube-ps1.git /opt/kube-ps1
echo "source /path/to/kube-ps1.sh" >> ~/.zshrc
PROMPT='$(kube_ps1)'$PROMPT >> ~/.zshrc

# You can turn kube-ps1 on and off by using the following commands
kube on

## off
kubeoff

Install Kube-PS1

If you want to manually activate kube-ps1 with kubeon, run the following command:

echo "kubeoff" >> ~/.zshrc