Install Linux subystem in Windows
There are several guides available online, describing what needs to be enabled in Windows for this to work. Good start is always Microsoft's own documentation at https://docs.microsoft.com/en-us/windows/wsl/install-win10 .
Once Linux subsystem is up and running, open the shell and install docker for linux. Stop the daemon and export DOCKER_HOST env variable
To make it permanent, add it to your `.bashrc` or whatever configuration file your shell is using . After we install docker on Windows and enable it, you will be able to connect to it.
Install Docker for Windows
Easiest way to do this is to follow the instructions from Docker site. Install Docker edge with Linux containers and enable Kubernetes on it. Since we will use docker from Linux subsystem, open settings for docker and make sure expose daemon on without TLS is enabled, as shown on the image.
Docker Edge has frequent updates, and they often fail to install (in my case), when docker is running, as the installer can not delete files from previous docker installation, this seems to be caused by Windows Event Log Service. Restarting this service and then trying again to install docker solved my problems.
Helm installation in Linux subsystem does not work out of the box. When helm install is ran, following happens:
➜ programming helm init --service-account default $HELM_HOME has been configured at /home/edejket/.helm. Error: error installing: Post http://localhost:8080/apis/extensions/v1beta1/namespaces/kube-system/deployments: dial tcp 127.0.0.1:8080: connect: connection refused
To fix this problem (provided that k8s is running), we need valid kubeconfig file.
mkdir $USER/.kube kubectl.exe config view --raw >> $USER/.kube/kubeconfig
and then init helm again
➜ programming helm init --service-account default $HELM_HOME has been configured at /home/edejket/.helm. Tiller (the Helm server-side component) has been installed into your Kubernetes Cluster. Please note: by default, Tiller is deployed with an insecure 'allow unauthenticated users' policy. To prevent this, run `helm init` with the --tiller-tls-verify flag. For more information on securing your installation see: https://docs.helm.sh/using_helm/#securing-your-helm-installation Happy Helming!