Π Π°Π·Π²Π΅ΡΠ½ΡΡΡ Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅ Π΄Π²Π΅ Π²Π΅ΡΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ Π½Π°ΡΡΡΠΎΠΈΡΡ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΡ ΡΡΠ°ΡΠΈΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ
Π¦Π΅Π»Ρ:
- Π Π°Π·Π²Π΅ΡΠ½ΡΡΡ Minikube
- Π Π°Π·Π²Π΅ΡΠ½ΡΡΡ Istio c Ingress gateway
- Π Π°Π·Π²Π΅ΡΠ½ΡΡΡ Π΄Π²Π΅ Π²Π΅ΡΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Istio
- ΠΠ°ΡΡΡΠΎΠΈΡΡ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΡ ΡΡΠ°ΡΠΈΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρ Π²Π΅ΡΡΠΈΡΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ Gateway 50% Π½Π° 50%
- Π‘Π΄Π΅Π»Π°ΡΡ ΡΠ½ΠΈΠΌΠΎΠΊ ΡΠΊΡΠ°Π½Π° Ρ ΠΊΠ°ΡΡΠΎΠΉ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Π² Kiali Ρ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² Π²ΡΠ·ΠΎΠ²Π° Π΄Π²ΡΡ Π²Π΅ΡΡΠΈΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ°
ΠΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΊ Π·Π°Π΄Π°Π½ΠΈΡ ΠΈ Π΅Π³ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅ https://github.com/izhigalko/otus-homework-istio
- Minikube 1.17.1
- Kubectl 1.20.2
- Istioctl 1.9.0 (brew install istioctl)
- Heml 3.5.2
minikube start --cpus=4 --memory=8g --vm-driver=hyperkit --cni=flannel --kubernetes-version="v1.19.0" --extra-config=apiserver.enable-admission-plugins=NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota,PodPreset --extra-config=apiserver.authorization-mode=Node,RBACΠ‘ΠΎΠ·Π΄Π°ΡΡ Π½Π΅ΠΉΠΌΡΠΏΠ΅ΠΉΡΡ Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ²:
kubectl apply -f namespaces.yamlJaeger - ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠΈ. ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Istio, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ: sidecar-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, gateway, ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ Π΄Π°Π½Π½ΡΠ΅ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π² ΡΠΈΡΡΠ΅ΠΌΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΠΏΠΎΠ»Π½Π°Ρ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠ° Π·Π°ΠΏΡΠΎΡΠ°.
helm repo add jaegertracing https://jaegertracing.github.io/helm-charts
helm repo update
helm install --version "2.19.0" -n jaeger-operator -f jaeger/operator-values.yaml jaeger-operator jaegertracing/jaeger-operator
kubectl apply -f jaeger/jaeger.yamlPrometheus - ΡΠΈΡΡΠ΅ΠΌΠ° ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π°. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π΅Ρ ΡΠΎΠ±ΠΈΡΠ°ΡΡΡΡ ΠΌΠ΅ΡΡΠΈΠΊΠΈ Service mesh.
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo add stable https://charts.helm.sh/stable
helm repo update
helm install --version "13.7.2" -n monitoring -f prometheus/operator-values.yaml prometheus prometheus-community/kube-prometheus-stack
kubectl apply -f prometheus/monitoring-nodeport.yamlIstio - Service mesh ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΎΠ±Π»Π°ΡΠ½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅Π΅ Envoy.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ, ΡΠ°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°ΡΡΠΈΠΉ Istio, ΠΈ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ Istio c ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°:
istioctl operator init --watchedNamespaces istio-system --operatorNamespace istio-operator
kubectl apply -f istio/istio.yamlKiali - Π΄ΠΎΡΠΊΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Service mesh
helm repo add kiali https://kiali.org/helm-charts
helm repo update
helm install --version "1.29.1" -n kiali-operator kiali-operator kiali/kiali-operator
kubectl apply -f kiali/kiali.yamlkubectl apply -f app/my-app.yaml
kubectl apply -f app/istio-settings.yamlΠΠ΅Π»Π°Π΅ΠΌ Π·Π°ΠΏΡΠΎΡ ΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ:
curl $(minikube service my-app --url)ΠΡΠΊΡΡΡΡ web-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Jaeger:
minikube service -n jaeger jaeger-query-nodeportΠΡΠΊΡΡΡΡ web-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Grafana:
minikube service -n monitoring prometheus-grafana-nodeportΠΡΠΊΡΡΡΡ web-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Prometheus:
minikube service -n monitoring prom-prometheus-nodeportΠΡΠΊΡΡΡΡ web-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Kiali:
minikube service -n kiali kiali-nodeport



