never-sleeps / service-mesh-using-istio

πŸ“š Service mesh Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Istio (Microservice Architecture course)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Microservice Architecture

Π’Π΅ΠΌΠ°: Service mesh Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Istio.

Π—Π°Π΄Π°Π½ΠΈΠ΅ β„–4:

Π Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π² кластСрС Π΄Π²Π΅ вСрсии прилоТСния ΠΈ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ балансировку Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ

ЦСль:

  • Π Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Minikube
  • Π Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Istio c Ingress gateway
  • Π Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π΄Π²Π΅ вСрсии прилоТСния с использованиСм Istio
  • ΠΠ°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ балансировку Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρƒ вСрсиями прилоТСния Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Gateway 50% Π½Π° 50%
  • Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ снимок экрана с ΠΊΠ°Ρ€Ρ‚ΠΎΠΉ сСрвисов Π² Kiali с ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Π²Ρ‹Π·ΠΎΠ²Π° Π΄Π²ΡƒΡ… вСрсии сСрвиса

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ ΠΊ заданию ΠΈ Π΅Π³ΠΎ описаниС находится ΠΏΠΎ ссылкС https://github.com/izhigalko/otus-homework-istio


Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: kiali-map

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΏΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ:

Зависимости

Запуск Kubernetes

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.yaml

Π Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅ΠΌ Jaeger

Jaeger - Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ трассировки. ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ 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.yaml

Π Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅ΠΌ Prometheus

Prometheus - систСма ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π½Π΅Ρ‘ ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‚ΡΡ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ 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.yaml

Π Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅ΠΌ Istio

Istio - Service mesh Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π΅ Envoy.

Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ Istio, ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Istio c ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°:

istioctl operator init --watchedNamespaces istio-system --operatorNamespace istio-operator
kubectl apply -f istio/istio.yaml

УстанавливаСм Kiali

Kiali - доска управлСния 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.yaml

Π Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

kubectl apply -f app/my-app.yaml
kubectl apply -f app/istio-settings.yaml

Π”Π΅Π»Π°Π΅ΠΌ запрос ΠΊ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ:

curl $(minikube service my-app --url)

Web-интСрфСйсы инструмСнтов

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ web-интСрфСйс Jaeger:

minikube service -n jaeger jaeger-query-nodeport

web-интСрфСйс Jaeger

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ web-интСрфСйс Grafana:

minikube service -n monitoring prometheus-grafana-nodeport

web-интСрфСйс Grafana

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ web-интСрфСйс Prometheus:

minikube service -n monitoring prom-prometheus-nodeport

web-интСрфСйс Prometheus

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ web-интСрфСйс Kiali:

minikube service -n kiali kiali-nodeport

web-интСрфСйс Prometheus

About

πŸ“š Service mesh Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Istio (Microservice Architecture course)


Languages

Language:Java 85.8%Language:Dockerfile 14.2%