= Installing and configuring WSL for a DevOps Engineer = **Summary**: This wiki page shows how to install and configure WSL for use with all sort of DevOps tools like kubernetes, helm, Argo CD and more. \\ **Date**: 28 July 2025 \\ {{tag>windows bash azurecli kubernetes helm argocd}} WSL is the Windows Subsystem for Linux, which allows you to run a Linux distribution alongside your Windows installation. This is particularly useful for DevOps engineers who need to work with tools that are more commonly used in Linux environments. == Installing WSL == To install WSL, you can simply run the command {{{wsl --install}}} in a PowerShell or Command Prompt window with administrator privileges. This will install the default Linux distribution (usually Ubuntu) and set up WSL 2. This is the preferred version as it provides better performance and compatibility with Linux applications. See the [[https://learn.microsoft.com/en-us/windows/wsl/install |official WSL installation guide]] for more details. The guide below assumes you're using Ubuntu as your WSL distribution. This is the default, but in case you've installed a different distribution, the command to install Ubuntu is: {{{wsl --install -d Ubuntu}}}. After the installation a prompt will tell you to setup a local user account. > Note: After installation of WSL a reboot might be required. I also recommend to install the [[https://learn.microsoft.com/en-us/windows/terminal/install |Windows Terminal from the Microsoft Store]], which provides a better command line experience than the default console. == Configuring WSL for DevOps Tools == For all installations below, you can start WSL by opening the Windows Terminal and selecting the Ubuntu profile from the dropdown menu. This will open a new terminal window running your WSL distribution. === Docker Desktop === Docker Desktop is the best way to use the docker cli in WSL. Install Docker Desktop from the [[https://docs.docker.com/desktop/install/windows-install/ |Docker website]]. After installation, you can start Docker Desktop and it will automatically configure WSL to use Docker. Use the following commands to add your user to the docker group, so you can run docker commands without sudo: sudo groupadd docker sudo usermod -aG docker $USER Be sure to start Docker Desktop before you start WSL if you plan to use Docker commands. === Azure CLI === Azure CLI is a cross-platform command-line tool for managing Azure resources with interactive commands or scripts. To install [[https://learn.microsoft.com/en-us/cli/azure/install-azure-cli-linux |azure cli in WSL]] you can run the following command: curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash # Verify the installation az version === Kubectl === > Note that kubectl can also be installed using the Azure CLI with {{{az aks install-cli}}}. The following instructions are for manual installation. Kubectl is the command-line tool for interacting with Kubernetes clusters. To install [[https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/ |kubectl in WSL]], follow these steps: * Check the latest stable [[https://dl.k8s.io/release/stable.txt |release]] and download the appropriate binary for your architecture. # Download the latest stable release of kubectl curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" # Install kubectl sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl # Verify the installation kubectl version --client === Helm === Helm is a package manager for Kubernetes that allows you to easily install and manage applications on your Kubernetes cluster. To install [[https://helm.sh/docs/intro/install/ |Helm in WSL]], follow these steps: # Download the Helm installation script curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 # Make the script executable chmod 700 get_helm.sh # Run the script to install Helm ./get_helm.sh # Verify the installation helm version You can also install the [[https://github.com/aslafy-z/helm-git |helm-git plugin]] by running the following command: helm plugin install https://github.com/aslafy-z/helm-git --version 1.3.0 === Helmfile === Helmfile is a tool that helps you manage multiple Helm charts and their configurations. To install [[https://helmfile.readthedocs.io/en/latest/#installation |Helmfile in WSL]], follow these steps: * Check the latest stable [[https://github.com/helmfile/helmfile/releases |release]] and download the appropriate tarball for your architecture. For example, for version 0.168.0, you can use: # Download the latest stable release of Helmfile wget https://github.com/helmfile/helmfile/releases/download/v0.168.0/helmfile_0.168.0_linux_amd64.tar.gz # Extract the tarball tar -xf helmfile_0.168.0_linux_amd64.tar.gz # Move the helmfile binary to /usr/local/bin sudo mv helmfile /usr/local/bin/ # Verify the installation helmfile version === Argo CD === Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes. To install [[https://argo-cd.readthedocs.io/en/stable/getting_started/ |Argo CD in WSL]], follow these steps: Install latest version: # Download the latest version of Argo CD CLI sudo curl -sSL -o /usr/local/bin/argocd https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64 # Make the binary executable sudo chmod +x /usr/local/bin/argocd # Verify the installation argocd version Install specific version: # Download a specific version of Argo CD CLI VERSION=v2.14.11 sudo curl -sSL -o /usr/local/bin/argocd https://github.com/argoproj/argo-cd/releases/download/$VERSION/argocd-linux-amd64 # Make the binary executable sudo chmod +x /usr/local/bin/argocd # Verify the installation argocd version === Kustomize === Kustomize is a tool for customizing Kubernetes YAML configurations. To install [[https://kubernetes-sigs.github.io/kustomize/installation/ |Kustomize in WSL]], follow these steps: # Download the Kustomize installation script curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash # Move the kustomize binary to /usr/local/bin sudo mv kustomize /usr/local/bin # Verify the installation kustomize version === Kubelogin === > Note that kubelogin can also be installed using the Azure CLI with {{{az aks install-cli}}}. The following instructions are for manual installation. Kubelogin is a tool that allows you to authenticate to Kubernetes clusters using Azure Active Directory. To install [[https://github.com/Azure/kubelogin/releases |Kubelogin in WSL]], follow these steps: # Download the latest version of Kubelogin curl -L --insecure -o kubelogin-linux-amd64.zip # Unzip the downloaded file sudo apt-get install unzip unzip -o kubelogin-linux-amd64.zip -d kubelogin # Move the kubelogin binary to /usr/local/bin sudo cp kubelogin/bin/linux_amd64/kubelogin /usr/local/bin/ # Configure kubelogin to use Azure CLI for authentication kubelogin convert-kubeconfig -l azurecli === YQ === YQ is a command-line YAML processor that is useful for working with Kubernetes manifests and other YAML files. To install [[https://github.com/mikefarah/yq/#install |YQ in WSL]], follow these steps: # Download the latest version of YQ wget https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 # Make the binary executable chmod +x yq_linux_amd64 # Move the yq binary to /usr/local/bin sudo mv yq_linux_amd64 /usr/local/bin/yq # Verify the installation yq --version == Troubleshooting == If you encounter issues with kubectl not being able to connect to the Kubernetes API server, you may need to set the KUBECONFIG environment variable to point to your kubeconfig file. This is often located at `~/.kube/config` or in a custom location. echo 'export KUBECONFIG=/mnt/c/Users/sjoerd/.kube/config' >> ~/.bashrc source ~/.bashrc