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 zshsh -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/powerlevel10knano ~/.zshrcOpen .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.0/bin/linux/amd64/kubectl
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectlAdd your colon delimited list of Kubernetes config files to KUBECONFIG env variable in .zshrc file
nano ~/.zshrcAdd 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)" >> ~/.zshrcAdd shorthand alias for kubectl
nano ~/.zshrcAdd the following to the end of the .zshrc file
alias k=kubectl
complete -F __start_kubectl kRestart 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.1.2-linux-amd64.tar.gz
tar xvzf helm-v3.1.2-linux-amd64.tar.gz
sudo mv linux-amd64/helm /usr/local/bin/
#Cleanup
rm helm-v3.1.2-linux-amd64.tar.gz
rm -r linux-amd64Run command to add completion
echo "source <(helm completion zsh)" >> ~/.zshrcRestart 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/kubensRun 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/_kubensAdd 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; compinitRestart 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


