[That DevOps Guy] Istio Service mesh explained


Делаю:
14.02.2021


Если сначала поднять ISTIO, а потом попробовать запустить в minikube предустановленный ingress, возможно он не заведется. (Долго пытался установиться, но не судьба. М.б. нужно было ждать дольше).


Поднимаю как здесь


YouTube
https://www.youtube.com/watch?v=KUHzxTCe5Uc


GitHub
https://github.com/marcel-dempers/docker-development-youtube-series


Дока
https://github.com/marcel-dempers/docker-development-youtube-series/tree/master/kubernetes/servicemesh/istio


Запуск приложения

$ cd ~/tmp
$ git clone https://github.com/marcel-dempers/docker-development-youtube-series
$ cd docker-development-youtube-series/


Ingress конфиг лежит вместе с остальными файлами в каталоге videos-web/:


applications

$ kubectl apply -f kubernetes/servicemesh/applications/playlists-api/
$ kubectl apply -f kubernetes/servicemesh/applications/playlists-db/
$ kubectl apply -f kubernetes/servicemesh/applications/videos-api/
$ kubectl apply -f kubernetes/servicemesh/applications/videos-web/
$ kubectl apply -f kubernetes/servicemesh/applications/videos-db/


$ kubectl get pods
NAME                             READY   STATUS    RESTARTS   AGE
playlists-api-684fb4c5d7-crvqk   2/2     Running   0          57s
playlists-db-7d68bbf5c4-rvt7z    2/2     Running   0          50s
videos-api-ccc8f5b46-qvqj6       2/2     Running   0          45s
videos-db-85ccd8bc-xbzrr         2/2     Running   0          34s
videos-web-cdbc466f4-nqsm6       2/2     Running   0          39s


$  kubectl get ing
NAME            CLASS    HOSTS              ADDRESS        PORTS   AGE
playlists-api   <none>   servicemesh.demo   192.168.49.2   80      22m
videos-web      <none>   servicemesh.demo   192.168.49.2   80      22m


$ sudo vi /etc/hosts
192.168.49.2  servicemesh.demo


http://servicemesh.demo/home/

OK!


Изучаем

while :
do
    curl "http://servicemesh.demo/home/";
    curl "http://servicemesh.demo/api/playlists";
    sleep 10;
done


Попробовали GIT Grafana (istio / Istio Mesh Dashboard) и Kiali.

Поломали контейнер, чтобы он работал неправильно.


Создали виртуальный сервис и поделили трафик между этими сервисами.


Попробовали Canary Deployment в зависимости от cookies. Если есть на 1 сервис, если нет, на другой.