Setting up Istio with Docker-Desktop on Windows 10

Salman Qayyum
4 min readMay 26, 2020

--

Setting up Istio on Windows may not be straight-forward for beginners. Because of scattered and archived information on the web.

Docker Desktop

Install docker desktop edge using https://docs.docker.com/docker-for-windows/edge-release-notes/ make sure your operation system supports Hyper-V.

(Docker-desktop will install HyperV as part of setup otherwise you can manually Install Hyper-V on Windows 10 from https://docs.microsoft.com/en-gb/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v?redirectedfrom=MSDN)

Enable Kubernetes on docket for desktop. This may take few minutes depending on the system.

Kubectl

Make sure you have latest kubectl. Otherwise you can install latest version from https://kubernetes.io/docs/tasks/tools/install-kubectl/#install-kubectl-on-windows

Istioctl

Download latest version of Istioctl and Istio from https://github.com/istio/istio/releases with names istioctl-1.6.0-win.zip and istio-1.6.0-win.zip.

Add Istioctl path to windows

install istio different profile options from https://istio.io/docs/setup/getting-started/#download.

The commands from above links are as follows

1=> istioctl manifest apply --set profile=demo

demo profile will install ( Istio-Engressgateway, istio-ingressgateway, istio-pilot, grafana , istio-tracing, kiali, prometheus)

2=>kubectl label namespace default istio-injection=enabled
default label instruct istio to automatically inject Envoy Sidecar proxies when we deploy application

Deploy BookInfo Sample application.

Unzip istio-1.6.0-win.zip which we downloaded form one of our steps mentioned above.
3=> cd istio-1.6.0
4=>kubectl apply -f
samples/bookinfo/platform/kube/bookinfo.yaml
5=> kubectl get services

6=> kubectl get pods

Now you can run this command in Bash to check if your application is working
$ kubectl exec -it $(kubectl get pod -l app=ratings -o jsonpath=’{.items[0].metadata.name}’) -c ratings — curl productpage:9080/productpage | grep -o “<title>.*</title>”
<title>Simple Bookstore App</title>

7=> kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
this will open traffic for your application.

Determining the ingress IP and ports

Now this is tricky part on your laptop when you run
kubectl get svc istio-ingressgateway -n istio-system you will see external-ip as localhost.

Which means you need to map your laptop 8080 port to 80 port of istio-ingressgateway service.
kubectl port-forward svc/istio-ingressgateway 8080:80 -n istio-system

Congratulations that’s it now you can visit http://localhost:8080/productpage to see deployed BookInfo application using Istio.

Kiali dashboard

Play with Kiali dashboard with

istioctl dashboard kiali ( default username , password is admin,admin)

Grafana Dashboard

Run this cmmand for Grafana in bash not windows command

kubectl -n istio-system port-forward $(kubectl -n istio-system get pod -l app=grafana -o jsonpath=’{.items[0].metadata.name}’) 3000:3000 &

Visit http://localhost:3000/dashboard/db/istio-mesh-dashboard

Prometheus Dashboard

istioctl dashboard prometheus

Please feel free to reach me if you need any help for setting up.!

Thanks

References

--

--

No responses yet