Студент: Дмитриев С.А. Группа OTUS MicroserviceArchitecture-2023-04
Работа выполнена на основании демо из лекции
Состоит из двух неравных частей:
- установка указанного набора приложений и достижение состояния в котором запрос в proxy-app достигает echoserver и это видно в Kiali.
- дополнение системы согласно ДЗ
-
Linux Mint на отдельном железном хосте
-
Minikube 1.30.1
-
Kubectl 1.27.3
-
Istioctl 1.19.1
-
Helm 3.12.1
-
Prometheus (последний)
-
Grafana (последний)
-
Istio (последний)
-
Kiali 1.74.0
- Установил всё согласно демо, увидел в kiali как проходят запросы в штатном режиме
- Исправил ошибку в нагрузочном js, там не хватало фразы "url=" перед указанием echoserver и из-за этого нагрузка не проходила с proxy-app на echoserver
- Сделал второй деплоймент для второй версии приложения (manifest/05_echoserver-2-deployment.yaml) Изменил name деплоя на echoserver-2 и labels на version: "2"
- Сделал destination rule (manifest/07_destination-rule.yaml) Объявил там trafficPolicy - Round_robin и два сабсета - определяемые по метке Version в поде
- Сделал virtual service (manifest/09_virtual-service.yaml) С тем же именем echoserver, что и реальный сервис и определил правила роутинга по 50% на каждый из subset echoserver
- Снял скриншот с Kiali (App_in_work.png)
Для выполнения задания вам потребуется установить зависимости:
Задание состоит из этапов
- Развернуть Minikube
- Развернуть Istio c Ingress gateway
- Развернуть две версии приложения с использованием Istio
- Настроить балансировку трафика между версиями приложения на уровне Gateway 50% на 50%
- Сделать снимок экрана с картой сервисов в Kiali с примеров вызова двух версии сервиса
- Сделать форк этого репозитория на Github
- Выполнить задание в отдельной ветке
- Создать Pull request с изменениями в этот репозиторий
Для выполнения задания вы можете воспользоваться материалами демо.
Спецификацию IstioOperator можно посмотреть в документации Istio или можно посмотреть исходники манифестов, исполняемых оператором.
Если вы хотите изменить текущую конфигурацию Istio, достаточно применить манифест с указанием конфигурации:
kubectl apply -f istio/istio-manifest.yaml
Для выключения шифрования между прокси, нужно применить настройку:
kubectl apply -f istio/defaults.yaml
Для доступа к какому-либо сервису с хоста можно использовать тип NodePort в сервисе:
---
apiVersion: v1
kind: Service
metadata:
name: test
namespace: default
spec:
type: NodePort
ports:
- port: 80
nodePort: 32080
targetPort: 8080
selector:
app: test
Использовать специальную команду для доступа к сервису:
minikube service -n <namespace> <service>