Setting up Istio with Docker-Desktop on Windows 10
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