Beautiful command line interface for Windows 10 optimized for working with git and Kubernetes.
NB! This guide previously used Powerlevel9k. I changed it to Powerlevel10k to fix latency issues. Command prompt response is much faster now. Configuration settings is compatible with 9k. Only changes needed is to clone 10k repo and change ZSH_THEME
- Windows 10
- Windows Subsystem for Linux. I use Ubuntu 18.04
Install Powerline, Windows compatible font from this repo https://github.com/ryanoasis/nerd-fonts. You need to install version 1.2.0 since version 2.0.0 don't work with Windows.
Download this asset https://github.com/ryanoasis/nerd-fonts/releases/download/v1.2.0/DejaVuSansMono.zip.
Unzip file and install the DejaVu Sans Mono for Powerline Nerd Font Complete Mono Windows Compatible.ttf
font by right-clicking on the file and select install.
Open the WSL options and change font to DejaVuSansMonoPowerline NF
sudo apt install zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
git clone https://github.com/romkatv/powerlevel10k.git ~/.oh-my-zsh/custom/themes/powerlevel10k
nano ~/.zshrc
Open .zsh in nano and change/add the following settings
ZSH_THEME="powerlevel10k/powerlevel10k"
POWERLEVEL9K_MODE='nerdfont-complete'
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir dir_writable vcs)
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status kubecontext time)
POWERLEVEL9K_PROMPT_ON_NEWLINE=true
# If you have installed Windows 10 1903 then you can skip the next line
POWERLEVEL9K_COLOR_SCHEME='light'
Restart your WSL command prompt and it will look great
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.18.4/bin/linux/amd64/kubectl
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
Add your colon delimited list of Kubernetes config files to KUBECONFIG env variable in .zshrc file
nano ~/.zshrc
Add the follwing at the end of the file and change paths to your config files. I choose to point them to my Windows k8s config files that I also use in Powershell
export KUBECONFIG="/mnt/c/dev/kubernetes/rnd-admin.conf:/mnt/c/Users/janl/.kube/config"
Run command to add completion
echo "source <(kubectl completion zsh)" >> ~/.zshrc
Add shorthand alias for kubectl
nano ~/.zshrc
Add the following to the end of the .zshrc file
alias k=kubectl
complete -F __start_kubectl k
Restart your WSL command prompt and you will see the Kubernetes context and have code completion for both kubectl and the alias k
wget -q https://get.helm.sh/helm-v3.3.0-linux-amd64.tar.gz
tar xvzf helm-v3.3.0-linux-amd64.tar.gz
sudo mv linux-amd64/helm /usr/local/bin/
#Cleanup
rm helm-v3.3.0-linux-amd64.tar.gz
rm -r linux-amd64
Run command to add completion
echo "source <(helm completion zsh)" >> ~/.zshrc
Restart your WSL command prompt and you will have helm command with completion
Tools for fast switching between clusters and namespaces
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
Run commands to add completion
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
ln -s /opt/kubectx/completion/kubens.zsh ~/.oh-my-zsh/completions/_kubens
Add kns and kctx aliases at the end of your ~/.zshrc file
Also add the rm -f ~/.zcompdump; compinit
to fix an issue with completion for kubens and kubectx
alias kns=kubens
alias kctx=kubectx
rm -f ~/.zcompdump; compinit
Restart your WSL command prompt and you will have kubens and kubectx available with completion.
- https://github.com/ryanoasis/nerd-fonts
- https://github.com/robbyrussell/oh-my-zsh
- https://github.com/bhilburn/powerlevel9k
- https://github.com/romkatv/powerlevel10k
- https://kubernetes.io/docs/reference/kubectl/cheatsheet/
- https://helm.sh/docs/using_helm/#installing-helm
- https://github.com/ahmetb/kubectx