Beautiful command line interface for Windows 10 optimized for working with git and Kubernetes.
- 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/bhilburn/powerlevel9k.git ~/.oh-my-zsh/custom/themes/powerlevel9knano ~/.zshrcOpen .zsh in nano and change/add the following settings
ZSH_THEME="powerlevel9k/powerlevel9k"
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.14.2/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"Add completion
echo "if [ $commands[kubectl] ]; then source <(kubectl completion zsh); fi" >> ~/.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://storage.googleapis.com/kubernetes-helm/helm-v2.14.0-linux-amd64.tar.gz
tar xvzf helm-v2.14.0-linux-amd64.tar.gz
sudo mv linux-amd64/helm /usr/local/bin
helm init -c
#Cleanup
rm helm-v2.14.0-linux-amd64.tar.gz
rm -r linux-amd64Add completion
echo "if [ $commands[helm] ]; then source <(helm completion zsh); fi" >> ~/.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/kubensAdd 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
rm -f ~/.zcompdump; compinitAdd kns and kctx aliases to your ~/.zshrc file
alias kns=kubens
alias kctx=kubectxRestart your WSL command prompt and you will have kubens and kubectx available with completion.


