Ლáááášááá. ááá áááá: á¡áá ááá¡áá¡ ááááááá ááááááááá ááá®áá áá¬áááá áááá ááŠááááááá ááá€á áá¡á¢á á£á¥á¢á£á áášá áááá áá¡áá ááá¡áá¡ áá á¥áá¢áá¥á¢á£á áá¡ ášááááá áááááááªááááá¡áááá¡. ááá£á®áááááá áááá¡á, á áá Istio ášááá«áááá áá§áá¡ áá ááááá DevOps áááááá áá¡ á áááá ášá, áá¡ áá áá¡ á¡áááááá áá®ááá áá ááá£á¥á¢á, á ááááááª, ááá£á®áááááá áááá¡á, á áá ááááááá¥á¡á£á áá ááá¡ áááá ááá¬ááááá£áá ááá®áá¡áááááááááá¡ ááááá¡ááá áá¡áá, ášááá«áááá áááášááááááááá áá á ááá¡ááá ááá¡ áááªááááá¡. ááá ááááááá ááááááá áá á áááá áááááá£á, á ááááá᪠ááá¡á£á®áá¡áááááááá á¡áá¢ááááááá£áááááªáá áááááááá Orange Networks-ášá áá¡á®áááá áááááá¢áááá¡áááá¡ áŠá á£ááááááá ááááááááááá, ááá¬áá á ááá¡áááááá¡ ášáá¡áááášáááá á¡áá áá, á ááááá᪠á¡áášá£áááááá¡ ááá«áááá á¡á¬á áá€áá áá áŠá ááá á©áá«áá áá áá¡á¢ááášá. áá¡ ááááá¡ áá¡á¢áá ááá¡ áá¬á§ááá¡ áááá, áᣠá áá¡á áááááááá ášáá£á«ááá áá¡á¢ááá¡ áá á áááá ášáááá«áááá á¡á¬á áá€áá ááá®áá áá¡ á¡ááá£ááá á áááááá.
áá¡á¢áá â áŠáá ááááá¡ áá ááá¥á¢á ášááá£ášááááá£áá Google-áá¡, IBM-áá¡á áá Lyft-áá¡ áá£ááááááá áááááášá ááááááá. áá¡ ááááá ááá¡ á¡áá áá£ááááá¡, á áááááá᪠á¬áá áááá¥ááááá áááá áá¡áá ááá¡áááá ááá€á£á«áááá£á áááááááªáááášá, á áááá ááªáá:
- ááá«á ááááá¡ ááá ááá: áááááá, ááááááá ááááá áªáááá, ááá¢ááá áááá¡ áááááááá¡ááá;
- á£á¡áá€á áá®ááááá¡: á¡áááááá áááá®ááá ááááá¡ ááá¢áá ááááªáá áá ááá¢áá ááááªáá;
- áááááá áááááááá: áááááááá, ááááá¢áá áááá, á®á-á¢á§á.
áá á§ááááá€á áá¡ áááááá ááá ášáá¡áá«ááááááá áááááááªááá¡ áááááá, áááá áá áááá¡ ášááááá áá¥áááá á¡áá ááá¡ááá ááŠáá áá¥áááá âáááá áâ. á§áááá ááááá¢ááááá á«áááá¡á®áááá áá áá ááááááááá¡ ááááá¡ááá áááá áá áá¡ ááááááááá¡ á áá¡á£á á¡áááá¡ á€áááááá, á ááááá᪠ášááá«áááá ááááá§ááááá£á áá¥ááá¡ á£ášá£áááá áááááá¡áá¡ áŠáá ááá£ááááá¡áááá¡. ááááá ášááá®áááá áááááááá¡:
áá ááá¥á¢áá¡ ááááá¯áá á: á áááááá áá á á¡ááá áááá ááááá®ááá£á áááá¡ á€á£áá¥áªááá¡ ááááá¢áááá¡?
ášááá¥ááááá: áá á á¡áá ááá¢á.áááá£á¢áá¢á: á á?.. áá¡ á£áá áááá á£á®áášáá!
R: CRUD-áá¡ áááááááá ááááªáááá¡ ááá á¢ááá ááá¬áááá, áááá áá á©ááá áááá᪠ááááá áááá áááá®ááá ááááááá¡á áá á¡áá ááá¡áááá¡ áááááá¢áá€ááááªáá áá ááá¢áá ááááªáá. áááááááá á¥á¡ááá áá áá¡ááááá, ááááá¬ááá ááááááá ááááá áááá®ááááááá¡ áááá®áá áªáááááá, áá¡áááááááá áááááá¡ áááá£ášá áááááá¢ááášá. áá¡ááá, áááá¡ááááá¡, á áá ááá á¬áá£áááá, á áá ááááá á¡áá¡á¢ááá áá ááá€á£ááá, á¢ááááá£á¢á ááášá£áá¡ááááááá (ááá¬áá ááááááá áá ááá ááŠááášáá£áá áááá£ášáá¡ ášáá¡áá®áá áá®áááá á¡á¢áá¢ááášá - áááá®á. ááá ááááá.)áá áá ááááááááá¡ ááŠááá¡áá©áááá, ááááá¢áá áááá, áááááááá, [âŠ]áááá£á¢áá¢á: áá°, ááááá, áá¡ á€á£áá¥áªáá áááááááá¡áá áá ááá£á¥á¢áá¡ á¡áá ááá¡ášá.
áá€áá¥á áá, áááá ááááááá: áá áá á¡áá ááá¡áá¡ ááá¡áááá¢ááááá á¡áááá á ááááá¯áááá¡á áá á«áááá¡á®ááááá¡ á áááááááá á£ááá ááááá áá. áá á¡á¢áá¢ááášá á©ááá áááááá®ááááá, áᣠá áááá áášáá ááá¡ Istio á§áááá ááááá ááá®á¡áááá á¡áá áá£ááá¡ (áá áá áá¡ áááááááááá áá£áá áááááá¡ ááááááá) á¡áá ááá¡áááááá.
ášáááášááá: áá¡ á¡á¢áá¢áá ááá áá£áááá¡, á áá áá¥ááá ááá¥áá Kubernetes-áá¡ á¡ááá£ášáá áªáááá. á¬áááááŠáááá ášáááá®ááááášá, ááá á©ááá á¬áááááá®áá
áá¡á¢ááá¡ áááá
áá¡áá€áááášá Istio-á¡ ááá áášá, áá áá á¡áá ááá¡á ááá ááááá áá®ááááá¡ á£ááááááá¡ áááá áá¡ áá á¬áá á£ááá¢ááááááá¡ ášáááá®ááááášá, á¡áá ááá¡áá ááááá á£ááá ááá£áááááááá¡ ááá¡: ááááá®áá áªááááá¡ áá®ááá ááªáááááá, á£áá á£ááááá§áá¡ áááá, ááá®á¡ááá¡ ááááá ááááá áá á.áš.
á¥á¡ááá£á á á¢á áá€ááá Kubernetes-ášá
Istio ááááááááá á¡áááªáááááááá£á ááááá¬á§ááá¢áá¡, á ááááá᪠áááááááá ááááá§áá€áááá á¡áá ááá¡áááá¡ááá áá á€á£áá¥áªááááá ááá¡ á¥á¡ááá£á áááá£áááááªááášá á©áá áááá. áá áá¡á áá®áá áªáááááá¡:
- ášááªááááá¡ á¢áááá ááá¢ááá: ááá¡á£á®ášá áá á¡ááá£áá á¡á¢áá¢á£á¡áá¡ ááááááá áááááááááá á, á®ááááá, ááá ááá®áá á®áá áᣠáá á áááá®áááá áá á®áááá®áá áá®áá áªáááááá¡ ááá¡.
- Canary Rollouts: ááááááá¡áááá áááá¡ áááá®ááááá¡ áá®áááá á€áá¥á¡áá ááá£á áá ááªááá¢á¡ á¡áá ááá¡áá¡ áá®áá ááá á¡áááá.
- ááááá¢áá áááá áá ááá¢á ááá: á áááááá áá á ááá¡ááá áá á¡áá ááá¡áá¡ á ááááá áááá¡?
- áááááááá áá áááááá áááá: áááá¢ááá¡ á¡áááªáááá£á á¡áááá£á ááá¡ áááááá£á áááá®ááááá¡ áá ááááá¢á ááááá¡ ááá áááá¡á¢áá ášá.
- á£á¡áá€á áá®ááááá¡: ááŠááá¡ JWT ááá¢ááá¡, áááá¬áááá¡ áá ááá¢áá ááááªááá¡ áá«áááá¡ áááá®ááá áááááá¡.
áá¡ áá®áááá á áááááááá ášáá¡áá«áááááááá (ááááááááá áá®áááá á áááááááá!) ááááááá¢áá áá¡áá. áá®áá ááááá á©ááá£áŠá áááááá á¢áá¥áááá£á ááá¢ááááá¡!
áá¡á¢ááá¡ áá á¥áá¢áá¥á¢á£á á
Istio á¬á§ááá¢á¡ áááá á¥á¡ááá£á á¢á áá€ááá¡ áá ááááá áááá¡ ááá¡áá á¬áá¡áááá¡ áá ááááááááá¡, áááááá£á áááášá ááááá¡ááá¡ áááááá áá áá¥á¡áá¡ áááá áááá ááá áá¡ áááá¢ááááá áá¡ á¡áá®áá. áá áá¥á¡áááá, á áááááá᪠ááá¥á¢áá£á áááá á§áááá ášáá¡áá«áááááááá¡, á¥ááááá á áááááªáááá áááááá€á ááááááá áááá ááááááá£á áá áááá€ááá£á ááªáá ášáá¡áá«ááááááá á¡ááááá¢á ááá áááááá€á ááááá.
áááááªáááá áááááá€á ááááá
ááá ááááá¢ááá, á áááááá᪠á©áá¡áá£ááá áááááášá, á¡áášá£áááááá¡ áá«áááá¡ Istio-á¡ ááááááá ááááŠá¬ááá¡ á©ááááááá¡ á¡áááá á áááá®áááááá¡. ááááááááá, ááááá ášáááááá¬ááá ááááááá ááááá áªáááá áá ááááá áááááá¡ á€á£áá¥áªáááá.
á áááá á®áá áªááááááá ááááááá ááááá áªáááá áá áááá áá¡á¥áááá¡ ááá¬á§ááá¢á Envoy-ášá
ášáááá¡áá:
- ááá¡áááá (á¡áá£ááá áá áááá áááá ááá áá¡ áááá¢ááááá ášá áááááá á áá áá¥á¡ááá, á ááááá᪠ááá¬áááááá áá á áááá
áªáááá áá ááá£á¥á¢á - áááá®á. ááá ááááá.) áááááááá¡ áááá®ááááá¡ B á¡áá ááá¡áá¡ ááá ááá ááá¡á¢áááªááášá áá ááá á®áá á®áááá. - ááá©á á¡áááááá á áá¡áá áªááá¡ (á®áááá®áá á¡áªáááá). (1)
- á¬áá á£ááá¢ááááá áááá®áááá á£áá á£ááááá áá áá¥á¡áá¡, á áááááá᪠ááá¡ ááá£á ááá.
- áá¡ á®á¡ááá¡ Circuit Breaker-á¡ áá áááááá«áá®ááá¡ ášááááá á¡áá ááá¡á¡ ášááááááá áááá®ááááááá¡áááá¡. (2)
áá¡ ááášáááá¡, á áá áá¥ááá áá áááá ááááá á¡á®áá á®áááá®áá á¡áªáááá ááááááááááá¡ ááááá§ááááá, áá¥ááá áá á£ááá áááááááá Circuit Breaking áá Service Discovery áá ááá áááá áááá¡ ááááá X, Y áá Z. áá¡ á§ááááá€áá á áá ááááá áááá á á¡á®áá á®ááááá¡áá¬áááááá á§á£áášá. áá¡á¢ááášá áá áá á¡áááá áááá¡ áá áá áá¡ áªááááááááá áááášá.
áááá! áá®áá ášááá«áááá áá¡á¢ááá¡ááá áá ááá áááááá£á ááá áááááááá¡, áááá áá á¯áá ááááá ááá¥áá ááá áááá£áá áááá, áŠáá áááá®áááá. áᣠáá¡ áá áá¡ á£ááááá á¡ááá£á á ááááá¬á§ááá¢á áªá®ááá áááá¡ á§áááá ášáááá®ááááá¡áááá¡, ááášáá áá¥ááá ááá¥áá áá£áááá ááá áááá: á§ááááááá áááá¡ ášááááá, á¡áááááááááášá á§áááá áá¡ááá ááááá¡ááááá ááááá¡áááá á ášáááá®ááááá¡áááá¡ ááááá£á¡áááááá á ááŠááá©ááááá.
áá ááááá¡ áá¥ááá á°áááá®ááá: "ááá ááááááá?"
áá®áá áá¥ááá áááá á®áá á á¡áááŠááá áááááá£á áááá¡áááá¡ - áá ááááá áááááªááá á¡ááááá¢á ááá áááááá€á ááááá¡.
á¡ááááá¢á ááá áááááá€á ááááá
ááá ášáááááá á¡ááá ááááááááá¢áá¡ááá: Pilot, ááá¥á¡áá á О áªáá®áá, á áááááá᪠áá ááá áá£ášááááá ááá©áááá¡ áááá€ááá£á ááªááá¡áááá¡, á ááá áááá¢áá áá á¢á áá€ááá, ááááá®áá áªááááá á¬áá¡ááá áá ášáááá áááá á¢áááááá¢á ááá¡ áááááªááááá. á¡á¥áááá¢á£á áá áá¡ á§ááááá€áá á áá¡á áááááá§á£á ááá:
á¡ááááá¢á ááá á¡ááá á¢á§áá¡ á£á áááá áá¥áááááá áááááªáááá á¡ááá á¢á§áá¡ááá
ááá¡áááááá (ááᣠáááááªáááá áááááá€á ááááá) áááá€ááá£á áá ááá£ááá ááááá§áááááá
á¡áá ááá¡áááá¡ á£á áááá áááá áá¡á¢ááá¡ááá
á©ááá ááŠáá¬áá áá áá¡á¢ááá¡ á£á áááá áááá á¡áá ááá¡ááááá, áááá áá áá á ááá áá¥áá: á áááá á£áááášáá áááá á¡áá ááá¡ááá áá¡á¢ááá¡?
ááá áááá áááá®á áá, á¡ááá¡áá®á£á áááá áá¡á ááªááá áá¡á¢ááá¡ áá á¡ááááá, á áááá ᪠ááááááá á¬á§ááá¡á, á ááªá á¡ááá£ááá áááá¡ ááááá®ááááá: "á á áá áá¡ á¬á§ááá áááááª?"
ááá£á¡á¢á ááªáá
ááá áááá, ášáááá«áááá áááŠáá á¡ááá£ášáá áááá¡á¢áá á áá Istio ááááááááá¢áááá¡ áááááááááá¡ ášááááá, ááá¡ášá áá á¡ááá£áá á¡áá ááá¡ááá ááááá á«áááááá áá£ášááááá¡ áá áá ááááááááá¢áááá¡ ááááŠáááá¡ ášááááá, á§ááááá€áá á áá¡áá ááá ááá áá¥áááá. ááá¡áááááá, á áá áá ášáááá®ááááášá áá¡á¢ááá¡ áááá ááá¬ááááá£á ášáá¡áá«ááááááááá¡ ááááá áááá.
á¡ááááá áá¡áá áááá áá - ááááá áá¡ áªáááá áá áá¥á¢áááášá ááááááá§áááá!
áá¡á¢áá áá áá¥á¢áááášá
Istio ááááá®ááá¡ Kubernetes áááá¡á¢áá á¡ áááááá£á 4 vCPU áá 8 GB áááá áá¢áá£áá ááá®á¡ááá ááá. áááá¡á¢áá áá¡ á¡á¬á áá€áá ááá¡áá§ááááááá áá á¡á¢áá¢ááá¡ ááá¡á¢á á£á¥áªááááá¡ ášáá¡á á£ááááá¡áááá¡, ááá á©ááá áááááá§áááá Google Cloud Platform, á ááááá᪠áá®áá áááá®ááá áááááá¡ á¡áááááááá¡
áááá¡á¢áá áá¡ ášáá¥áááá¡á áá Kubernetes-áá á¬áááááá¡ áááá€ááá£á ááªááá¡ ášááááá áááá¡áááá¡ á£á¢áááá¢áá¡ á¡áášá£áááááá, ášáááá«áááá áááááá¡á¢áááá áá Istio Helm ááááá¢áá¡ ááááá¯áá áá¡ ááášáááááá.
á©áá€á®á£á¢áá¡ áááá¢ááá
áááááá¡á¢áááá áá Helm áááááá¢á áá¥áááá¡ áááááá£á¢áá áá, á áááá ᪠áá¡ ááŠá¬áá áááá
ááá¡á¢ááááªáá
á©áááá¢ááá ááá Istio á áá¡á£á á¡ááá [istio-resources]
.
Istio á áá¡á£á á¡áááá¡ ááááááá ááááá¢áá€ááªáá áááá¡áááá¡, ášáá¥ááááá á¡áá®áááá á¡ááá áªá K8s áááá¡á¢áá ášá istio-system
:
$ kubectl create namespace istio-system
áááá¡á á£ááá ááá¡á¢ááááªáá ááá áá¥á¢áá ááášá áááááááªááá [istio-resources]
áá ááá£ášááá áá á«ááááá:
$ helm template install/kubernetes/helm/istio
--set global.mtls.enabled=false
--set tracing.enabled=true
--set kiali.enabled=true
--set grafana.enabled=true
--namespace istio-system > istio.yaml
áá¡ áá á«ááááá ááááá¡áªááá¡ Istio-á¡ á«áá áááá ááááááááá¢ááá¡ á€áááášá istio.yaml
. á©ááá ášáááªááááá á¡á¢ááááá á¢á£áá ášáááááá á©ááááááá¡ ášáááááá ááá áááá¢á áááá¡ ááááááááá:
-
global.mtls.enabled
ááááá¡á¢áááá ááá£ááfalse
(ááᣠmTLS áááááá¢áá€ááááªáá ááááá áá£ááá - áááá®á.)á©áááá áááªááááá¡ áá ááªáá¡áá¡ ááááá á¢ááááá; -
tracing.enabled
ááááªááá¡ áááá®ááááá¡ ááááááááá¡ Jaeger-áá¡ ááááá§áááááá; -
kiali.enabled
áááááá¡á¢áááá ááá¡ Kiali-á¡ áááá¡á¢áá ášá á¡áá ááá¡áááá¡á áá á¢á áá€áááá¡ áááá£ááááááªááá¡áááá¡; -
grafana.enabled
áááá¡á¢áááá ááá¡ Grafana-á¡ ášááá ááááá£áá ááá¢á áááá¡ áááá£ááááááªááá¡áááá¡.
ááááááá§áááá ááááá áá ááá£áá á áá¡á£á á¡ááá áá á«áááááá:
$ kubectl apply -f istio.yaml
Istio-á¡ ááá¡á¢ááááªáá áááá¡á¢áá áá ááá¡á á£áááá£ááá! áááááááá á¡áááá á§áááá ááááá áá¥áááá á¡áá®áááá á¡ááá áªáášá istio-system
ášáá«áááá¡ Running
áá Completed
á¥ááááá áááªááá£áá áá á«áááááá¡ ááášááááá:
$ kubectl get pods -n istio-system
áá®áá á©ááá áááá ááá á áááááá á«áááá ášáááááá áááá§áá€ááááá, á¡ááá᪠áááááááªááá¡ ááášááááá¡ ášááá«áááá.
áááá¬á§áááá¡ áááááááá¡ áááááááªááá¡ áá á¥áá¢áá¥á¢á£á á
ááááááá§áááá á£ááá ááŠááášáá£áášá ááááá§ááááá£áá Sentiment Analysis áááá áá¡áá ááá¡áá¡ áááááááªááá¡ áááááááá
áááááááªáá ášáááááá ááá®á áááá áá¡áá ááá¡áá¡ááá:
- á¡ááá¡áá®á£á áá¡ SA-á€á ááá¢áááá, á ááááá᪠ááá¡áá®á£á ááá á€á ááá¢-ááááá¡ áááááááªááá¡ Reactjs-áá;
- á¡ááá¡áá®á£á áá¡ SA WebApp, á ááááá᪠ááá¡áá®á£á ááá á¡ááá¢ááááá¢á£á á áááááááá¡ ášááááá®áááá¡;
- á¡ááá¡áá®á£á áá¡ SA-ááááááá ááááá᪠ááááá áá¡á á£áááá¡
áááá¬á§áááá¡ ááááááá ; - á¡ááá¡áá®á£á áá¡ SA áááášáá á, á ááááá᪠ááŠááá¡ á£áá£áááášáá á¡ áááá®ááá ááááááá¡ááá áááááááá¡ á¡ááá£á¡á¢áá¡ ášáá¡áá®áá.
áá ááááá áááášá, á¡áá ááá¡áááá¡ ááá áá, á©ááá áá¡ááá áá®ááááá Ingress Controller-á¡, á ááááá᪠Kubernetes-ášá áááááááá¡ ášáááááááá áááá®áááááá¡ ášáá¡áááááá¡ á¡áá ááá¡áááá. Istio áá§ááááá¡ áá¡áááá¡ ááááªáá€áªááá¡ Ingress Gateway-ášá, á ááááá¡ ááá¢á ááá¢ááá ááá°á§áááá.
áááááááªááá¡ ááášáááá áá áá¥á¡áá áá¡á¢ááááá
á¡á¢áá¢ááášá ááá®á¡ááááá ášááááááá áááá ááªááááá¡áááá¡, áááááá áá áá¥áááá á¡ááªááá
áááá áááá ááá áááá¡ á©áá¡áá
á©áá¡áá ášááá«áááá ááá¢áááá¢á£á áá áá á®áááá. áááá áááá ááá áá¡ áááá¢ááááá áááá¡ ááá¢áááá¢á£á áá á©áá¡áá ááááá, áá¥ááá á£ááá áááá§áááá áá¢áááá¢á á¡áá®áááá á¡ááá áªáášá istio-injection=enabled
, á ááááá᪠ááááááá ášáááááá áá á«áááááá:
$ kubectl label namespace default istio-injection=enabled
namespace/default labeled
áá®áá áááááá£áá áááá, á ááááá᪠áááááááááá áááá£ááá¡á®ááá á¡áá®áááá á¡ááá áªáášá (default
) ááááŠááá¡ ááááá¡ áááá áááá áááá¢ááááá á¡. áááá¡ ášáá¡áááá¬áááááá, ááááá ááááááááá¡áá á¡áá¢áá¡á¢á áááááááªáá á¡ááªáááá¡ root ááá áá¥á¢áá ááášá ááááá¡áááá [istio-mastery]
áá ááá£ášááá ášáááááá áá á«ááááá:
$ kubectl apply -f resource-manifests/kube
persistentvolumeclaim/sqlite-pvc created
deployment.extensions/sa-feedback created
service/sa-feedback created
deployment.extensions/sa-frontend created
service/sa-frontend created
deployment.extensions/sa-logic created
service/sa-logic created
deployment.extensions/sa-web-app created
service/sa-web-app created
á¡áá ááá¡áááá¡ áááááááááá¡ ášááááá, áá á«áááááá¡ ááášááááá ášáááááá¬ááá, á áá áááááá¡ áá¥áá áá á áááá¢ááááá á (ááááá á¡áá ááá¡áá áá ááá¡á áááá áááá ááá áá). kubectl get pods
áá ááá á¬áá£áááá, á áá á¡ááá¢áá¡ á¥áááš READY
áááááááá£áá áŠáá ááá£áááá 2/2
, á¡ááááááá, á áá áá ááá áááá¢ááááá á áá£ášáááá¡:
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
sa-feedback-55f5dc4d9c-c9wfv 2/2 Running 0 12m
sa-frontend-558f8986-hhkj9 2/2 Running 0 12m
sa-logic-568498cb4d-2sjwj 2/2 Running 0 12m
sa-logic-568498cb4d-p4f8c 2/2 Running 0 12m
sa-web-app-599cf47c7c-s7cvd 2/2 Running 0 12m
áááá£ááá£á áá áá¡á áááááá§á£á ááá:
ááá¡ááááá¡ ááá ááááá¢á£áá á¬áá ááááááááááá áá á-áá á áááášá
áá®áá, á áááá¡á᪠áááááááªáá ááášáááá£ááá, á©ááá á£ááá áááá£ášááá ášáááááááá á¢á áá€ááá¡ áááááááªááášá ášáá¡ááá.
Ingress Gateway
áááá¡ ááá¡ááŠá¬áááá á¡áá£ááááá¡á áá áá¥á¢ááá (áááá¡á¢áá ášá á¢á áá€áááá¡ ááášáááá) ááááá¡ Ingress Gateway Istio-ášá, á ááááá᪠áááááá áááá¡ áááá¡á¢áá áá¡ âááááááâ áá á¡áášá£áááááá¡ ááá«áááá á©áá ááá Istio áá¡ááá á€á£áá¥áªáááá, á áááá ááªáá ááá ášá á£á¢áá ááá, ááá¢ááá áááá¡ áááááááá¡ááá, á£á¡áá€á áá®áááá áá ášááááááááá á¢á áá€áááá¡ ááááá¢áá áááá.
Ingress Gateway ááááááááá¢á áá á¡áá ááá¡á, á ááááá᪠ááá¡ ááá áááá áááááááá¡, ááááá¡á¢áááá ááá£áá áá§á áááá¡á¢áá ášá Istio-á¡ ááá¡á¢ááááªááá¡ áá áá¡. á¡áá ááá¡áá¡ ááá á IP ááá¡áááá ááá¡ ááá¡áá áááááá, ááá£ášááá:
$ kubectl get svc -n istio-system -l istio=ingressgateway
NAME TYPE CLUSTER-IP EXTERNAL-IP
istio-ingressgateway LoadBalancer 10.0.132.127 13.93.30.120
á©ááá áááááá á«ááááá áááááááªáááá á¬áááááá¡ áá IP-áá¡ ááááá§áááááá (áá ááá¡ ááááá®á¡ááááá á áááá ᪠EXTERNAL-IP), áá¡á á áá, ááá®áá á®ááá£ááááá¡áááá¡ á©ááá á©ááá¬áá á áááášáááááááá¡ áªááááášá:
$ EXTERNAL_IP=$(kubectl get svc -n istio-system
-l app=istio-ingressgateway
-o jsonpath='{.items[0].status.loadBalancer.ingress[0].ip}')
áᣠáá®áá áªáááááá áá IP-áá á¬áááááá¡ áá áá£ááá áá¡ á¡áášá£áááááá, ááááŠááá ášááªááááá¡ Service Unavailable, á ááááá áááá£ááá¡á®ááááá Istio ááááááá¡ á§áááá ášáááááááá á¢á áá€ááá¡á¡áááá Gateway áá áá¥áááá áááá¡áááŠáá á£áá.
ááá ááááá¡ á áá¡á£á á¡á
Gateway áá áá¡ CRD (Custom Resource Definition) Kubernetes-ášá, á ááááá᪠ááááá¡áááŠáá ááá Istio-á¡ áááá¡á¢áá ášá ááááá¡á¢áááá áááá¡ ášááááá áá áá«áááá ášáá¡áá«áááááááá¡ ááá£ááááá ááá á¢ááá, áá áá¢ááááá áá á°áá¡á¢ááá, á ááááááá¡áááá¡á᪠áááááá ášááááááááá á¢á áá€áááá¡ ááášáááá.
á©áááá¡ ášáááá®ááááášá, á©ááá ááá¡á£á á¡ áááá£ášááá HTTP á¢á áá€ááá 80 ááá á¢áá á§áááá á°áá¡á¢áá¡áááá¡. áá áááááá á áááááááá£ááá ášáááááá áááááá á¢áááá (
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: http-gateway
spec:
selector:
istio: ingressgateway
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- "*"
áá áááá€ááá£á ááªááá¡ áá á¡ááá áááá áá®á¡áá á¡áááá¥á¢áá áá¡ ááá áá istio: ingressgateway
. áá á¡áááá¥á¢áá áá¡ á¡áášá£áááááá ášááááá«ááá ááááá¡áááŠáá áá, á áááá Ingress Gateway-áá áááááá ááá áááá€ááá£á ááªááá¡. á©áááá¡ ášáááá®ááááášá, áá¡ áá áá¡ Ingress Gateway áááá¢á áááá á, á ááááá᪠áááá£ááá¡á®ááááá áá§á ááááá¡á¢áááá ááá£áá áá¡á¢ááášá.
áááá€ááá£á ááªáá áááááá§ááááá ášáááááá áá á«áááááá¡ ááááá«áá®áááá:
$ kubectl apply -f resource-manifests/istio/http-gateway.yaml gateway.networking.istio.io/http-gateway created
ááá áááá áá®áá 80-á ááá á¢áá á¬áááááá¡ á¡áášá£áááááá¡ áá«áááá, áááá áá á¬áá ááááááá áá áá¥áá¡, á¡áá áááá¢áá áá¡ áááá®áááááá. áááá¡áááá¡ áááááá ááááá ááá á¢á£ááá£á á á¡áá ááá¡ááá.
ááá á¢á£ááá£á á á¡áá ááá¡áá¡ á áá¡á£á á¡á
VirtualService áá£ááááá Ingress Gateway-á¡, áᣠá áááá áááá¢áá áá¡ áááá®áááááá, á áááááá᪠ááášáááá£ááá áááá¡á¢áá ášá.
áááá®áááááá á©áááá¡ áááááááªáááá, á ááááá᪠ááááá¡ http-gateway-áá, á£ááá áááááááááá¡ sa-frontend, sa-web-app áá sa-feedback á¡áá ááá¡ááá¡:
ááá ášá á£á¢ááá, á áááááá᪠á£ááá áá§áá¡ áááá€ááá£á áá ááá£áá VirtualServices-áá
ááááá ášááá®áááá áááá®áááááá¡, á áááááá᪠á£ááá áááááááááá¡ SA-Frontend-ášá:
- áá£á¡á¢á ááá¢á©á ááááá
/
á£ááá áááááááááá¡ SA-Frontend-áá index.html-áá¡ ááá¡ááŠáááá; - áááááááá áá áá€áá¥á¡áá
/static/*
á£ááá áááááááááá¡ SA-Frontend-ášá, á ááá ááááŠáá á¡á¢áá¢ááá£á á á€áááááá, á áááááá᪠áááááá§ááááá á€á ááá¢áááášá, á áááá ááªáá CSS áá JavaScript; - áááááááá, á áááááá᪠ášááá¡ááááááá á ááá£ááá á£á ááááá®áá¢á£ááááá¡
'^.*.(ico|png|jpg)$'
, á£ááá áááááááááá¡ SA-Frontend-ášá, á ááááá áá¡ áá áá¡ áááá ááá ááá©áááááá á¡á£á ááááá.
áááá®áá áªáááááá ááááŠá¬ááá ášáááááá áááá€ááá£á ááªááá (
kind: VirtualService metadata: name: sa-external-services spec: hosts: - "*" gateways: - http-gateway # 1 http: - match: - uri: exact: / - uri: exact: /callback - uri: prefix: /static - uri: regex: '^.*.(ico|png|jpg) ÐажМÑе ЌПЌеМÑÑ:
ÐÑОЌеÑаМОе: ÐПМÑОгÑÑаÑÐžÑ Ð²ÑÑе Ñ ÑаМОÑÑÑ Ð² Ñайле
- ÐÑÐŸÑ VirtualService ПÑМПÑОÑÑÑ Ðº запÑПÑаЌ, пÑÐžÑ ÐŸÐŽÑÑОЌ ÑеÑез http-gateway;
- Ð
destination
ПпÑеЎелÑеÑÑÑ ÑеÑвОÑ, кÑЎа ПÑпÑавлÑÑÑÑÑ Ð·Ð°Ð¿ÑПÑÑ.sa-virtualservice-external.yaml
, кПÑПÑÑй Ñакже ÑПЎеÑÐ¶ÐžÑ ÐœÐ°ÑÑÑПйкО ÐŽÐ»Ñ ÐŒÐ°ÑÑÑÑÑОзаÑОО в SA-WebApp О SA-Feedback, МП бÑл ÑПкÑаÑÑÐœ зЎеÑÑ Ð² ÑÑаÑÑе ÐŽÐ»Ñ Ð»Ð°ÐºÐŸÐœÐžÑМПÑÑО. ÐÑОЌеМОЌ VirtualService вÑзПвПЌ:$ kubectl apply -f resource-manifests/istio/sa-virtualservice-external.yaml virtualservice.networking.istio.io/sa-external-services created
ÐÑОЌеÑаМОе: ÐПгЎа ÐŒÑ Ð¿ÑОЌеМÑеЌ ÑеÑÑÑÑÑ Istio, Kubernetes API Server ÑПзЎаÑÑ ÑПбÑÑОе, кПÑПÑПе пПлÑÑÐ°ÐµÑ Istio Control Plane, О Ñже пПÑле ÑÑПгП ÐœÐŸÐ²Ð°Ñ ÐºÐŸÐœÑОгÑÑаÑÐžÑ Ð¿ÑОЌеМÑеÑÑÑ Ðº пÑПкÑО-ÑеÑвеÑаЌ Envoy кажЎПгП pod'а. РкПМÑÑÐŸÐ»Ð»ÐµÑ Ingress Gateway пÑеЎÑÑавлÑеÑÑÑ ÐŸÑеÑеЎМÑÐŒ Envoy, ÑкПМÑОгÑÑОÑПваММÑÐŒ в Control Plane. ÐÑÑ ÑÑП Ма ÑÑ ÐµÐŒÐµ вÑглÑÐŽÐžÑ Ñак:
ÐПМÑОгÑÑаÑÐžÑ Istio-IngressGateway ÐŽÐ»Ñ ÐŒÐ°ÑÑÑÑÑОзаÑОО запÑПÑПвÐÑОлПжеМОе Sentiment Analysis ÑÑалП ЎПÑÑÑпМÑÐŒ пП
http://{EXTERNAL-IP}/
. Ðе пеÑежОвайÑе, еÑлО Ð²Ñ Ð¿ÐŸÐ»ÑÑаеÑе ÑÑаÑÑÑ Not Found: ОМПгЎа ÑÑебÑеÑÑÑ ÑÑÑÑ Ð±ÐŸÐ»ÑÑе вÑеЌеМО ÐŽÐ»Ñ ÑПгП, ÑÑÐŸÐ±Ñ ÐºÐŸÐœÑОгÑÑаÑÐžÑ Ð²ÑÑÑпОла в ÑÐžÐ»Ñ Ðž кÑÑО Envoy ПбМПвОлОÑÑ.ÐеÑеЎ ÑеЌ, как пÑПЎПлжОÑÑ, пПÑабПÑайÑе МеЌМПгП Ñ Ð¿ÑОлПжеМОеЌ, ÑÑÐŸÐ±Ñ ÑгеМеÑОÑПваÑÑ ÑÑаÑОк (егП МалОÑОе ÐœÐµÐŸÐ±Ñ ÐŸÐŽÐžÐŒÐŸ ÐŽÐ»Ñ ÐœÐ°Ð³Ð»ÑЎМПÑÑО в пПÑлеЎÑÑÑÐžÑ ÐŽÐµÐ¹ÑÑвОÑÑ â пÑОЌ. пеÑев.).
Kialiâ: МаблÑЎаеЌПÑÑÑ
ЧÑÐŸÐ±Ñ Ð¿ÐŸÐ¿Ð°ÑÑÑ Ð² аЎЌОМОÑÑÑаÑОвМÑй ОМÑеÑÑÐµÐ¹Ñ Kiali, вÑпПлМОÑе ÑлеЎÑÑÑÑÑ ÐºÐŸÐŒÐ°ÐœÐŽÑ:
$ kubectl port-forward $(kubectl get pod -n istio-system -l app=kiali -o jsonpath='{.items[0].metadata.name}') -n istio-system 20001
⊠О ПÑкÑПйÑе
http://localhost:20001/ , залПгОМОвÑОÑÑ Ð¿ÐŸÐŽ admin/admin. ÐЎеÑÑ Ð²Ñ ÐœÐ°Ð¹ÐŽÐµÑе ЌМПжеÑÑвП пПлезМÑÑ Ð²ÐŸÐ·ÐŒÐŸÐ¶ÐœÐŸÑÑей, МапÑОЌеÑ, ÐŽÐ»Ñ Ð¿ÑПвеÑкО кПМÑОгÑÑаÑОО кПЌпПМеМÑПв Istio, вОзÑалОзаÑОО ÑеÑвОÑПв пП ОМÑПÑЌаÑОО, ÑПбÑаММПй пÑО пеÑÐµÑ Ð²Ð°Ñе ÑеÑевÑÑ Ð·Ð°Ð¿ÑПÑПв, пПлÑÑÐµÐœÐžÑ ÐŸÑвеÑПв Ма вПпÑПÑÑ Â«ÐÑП к ÐºÐŸÐŒÑ ÐŸÐ±ÑаÑаеÑÑÑ?», «У какПй веÑÑОО ÑеÑвОÑа вПзМОкаÑÑ ÑбПО?» О Ñ.п. РПбÑеЌ, ОзÑÑОÑе вПзЌПжМПÑÑО Kiali пеÑеЎ ÑеЌ, как ЎвОгаÑÑÑÑ ÐŽÐ°Ð»ÑÑе â к вОзÑалОзаÑОО ЌеÑÑОк Ñ Grafana.Grafana: вОзÑалОзаÑÐžÑ ÐŒÐµÑÑОк
СПбÑаММÑе в Istio ЌеÑÑОкО пПпаЎаÑÑ Ð² Prometheus О вОзÑалОзОÑÑÑÑÑÑ Ñ Grafana. ЧÑÐŸÐ±Ñ Ð¿ÐŸÐ¿Ð°ÑÑÑ Ð² аЎЌОМОÑÑÑаÑОвМÑй ОМÑеÑÑÐµÐ¹Ñ Grafana, вÑпПлМОÑе ÐºÐŸÐŒÐ°ÐœÐŽÑ ÐœÐžÐ¶Ðµ, пПÑле ÑегП ПÑкÑПйÑе
http://localhost:3000/ :$ kubectl -n istio-system port-forward $(kubectl -n istio-system get pod -l app=grafana -o jsonpath={.items[0].metadata.name}) 3000
ÐлОкМÑв Ма ÐŒÐµÐœÑ Home Ñлева ÑвеÑÑ Ñ Ðž вÑбÑав Istio Service Dashboard в левПЌ веÑÑ ÐœÐµÐŒ ÑглÑ, МаÑМОÑе Ñ ÑеÑвОÑа sa-web-app, ÑÑÐŸÐ±Ñ Ð¿ÐŸÑЌПÑÑеÑÑ ÐœÐ° ÑПбÑаММÑе ЌеÑÑОкО:
ÐЎеÑÑ ÐœÐ°Ñ Ð¶ÐŽÑÑ Ð¿ÑÑÑПе О ÑПвеÑÑеММП ÑкÑÑМПе пÑеЎÑÑавлеМОе â ÑÑкПвПЎÑÑвП МОкПгЎа ÑакПе Ме ПЎПбÑОÑ. ÐавайÑе же ÑПзЎаЎОЌ МебПлÑÑÑÑ ÐœÐ°Ð³ÑÑÐ·ÐºÑ ÑлеЎÑÑÑей кПЌаМЎПй:
$ while true; do curl -i http://$EXTERNAL_IP/sentiment -H "Content-type: application/json" -d '{"sentence": "I love yogobella"}'; sleep .8; done
ÐÐŸÑ ÑепеÑÑ Ñ ÐœÐ°Ñ Ð³ÐŸÑазЎП бПлее ÑОЌпаÑОÑÐœÑе гÑаÑОкО, а в ЎПпПлМеМОе к МОЌ â заЌеÑаÑелÑÐœÑе ОМÑÑÑÑЌеМÑÑ Prometheus ÐŽÐ»Ñ ÐŒÐŸÐœÐžÑПÑОМга О Grafana ÐŽÐ»Ñ Ð²ÐžÐ·ÑалОзаÑОО ЌеÑÑОк, ÑÑП пПзвПлÑÑ ÐœÐ°ÐŒ ÑзМаÑÑ ÐŸ пÑПОзвПЎОÑелÑМПÑÑО, ÑПÑÑПÑМОО зЎПÑПвÑÑ, ÑлÑÑÑеМОÑÑ /ЎегÑаЎаÑОО в ÑабПÑе ÑеÑвОÑПв Ма пÑПÑÑжеМОО вÑеЌеМО.
ÐакПМеÑ, пПÑЌПÑÑОЌ Ма ÑÑаÑÑОÑÐŸÐ²ÐºÑ Ð·Ð°Ð¿ÑПÑПв в ÑеÑвОÑÐ°Ñ .
Jaegerâ: ÑÑаÑÑОÑПвка
ТÑаÑÑОÑПвка МаЌ пПÑÑебÑеÑÑÑ, пПÑÐŸÐŒÑ ÑÑП ÑеЌ бПлÑÑе Ñ ÐœÐ°Ñ ÑеÑвОÑПв, ÑеЌ ÑлПжМее ЎПбÑаÑÑÑÑ ÐŽÐŸ пÑОÑÐžÐœÑ ÑбПÑ. ÐПÑЌПÑÑОЌ Ма пÑПÑÑПй ÑлÑÑай Оз каÑÑОМкО МОже:
ТОпПвПй пÑÐžÐŒÐµÑ ÑлÑÑайМПгП МеÑЎаÑМПгП запÑПÑаÐапÑÐŸÑ Ð¿ÑÐžÑ ÐŸÐŽÐžÑ, Ð¿Ð°ÐŽÐ°ÐµÑ â в ÑÑÐŒ же пÑОÑОМа? ÐеÑвÑй ÑеÑвОÑ? ÐлО вÑПÑПй? ÐÑклÑÑÐµÐœÐžÑ ÐµÑÑÑ Ð² ÐŸÐ±ÐŸÐžÑ â ЎавайÑе пПÑЌПÑÑОЌ Ма лПгО кажЎПгП. Ðак ÑаÑÑП Ð²Ñ Ð»ÐŸÐ²ÐžÐ»Ðž ÑÐµÐ±Ñ Ð·Ð° ÑакОЌ заМÑÑОеЌ? ÐаÑа ÑабПÑа бПлÑÑе Ð¿ÐŸÑ ÐŸÐ¶Ð° Ма ЎеÑекÑОвПв пÑПгÑаЌЌМПгП ПбеÑпеÑеМОÑ, а Ме ÑазÑабПÑÑОкПвâŠ
ÐÑП ÑОÑПкП ÑаÑпÑПÑÑÑаМÑÐœÐœÐ°Ñ Ð¿ÑПблеЌа в ЌОкÑПÑеÑвОÑÐ°Ñ Ðž ÑеÑаеÑÑÑ ÐŸÐœÐ° ÑаÑпÑеЎелÑММÑЌО ÑОÑÑеЌаЌО ÑÑаÑÑОÑПвкО, в кПÑПÑÑÑ ÑеÑвОÑÑ Ð¿ÐµÑеЎаÑÑ ÐŽÑÑг ÐŽÑÑÐ³Ñ ÑМОкалÑÐœÑй загПлПвПк, пПÑле ÑегП ÑÑа ОМÑПÑЌаÑÐžÑ Ð¿ÐµÑеМапÑавлÑеÑÑÑ Ð² ÑОÑÑÐµÐŒÑ ÑÑаÑÑОÑПвкО, гЎе ПМа ÑПпПÑÑавлÑеÑÑÑ Ñ ÐŽÐ°ÐœÐœÑЌО запÑПÑа. ÐÐŸÑ ÐžÐ»Ð»ÑÑÑÑаÑОÑ:
ÐÐ»Ñ ÐžÐŽÐµÐœÑОÑОкаÑОО запÑПÑа ОÑпПлÑзÑеÑÑÑ TraceIdÐ Istio ОÑпПлÑзÑеÑÑÑ Jaeger Tracer, кПÑПÑÑй ÑеалОзÑÐµÑ ÐœÐµÐ·Ð°Ð²ÐžÑОЌÑй ÐŸÑ Ð²ÐµÐœÐŽÐŸÑПв ÑÑейЌвПÑк OpenTracing API. ÐПлÑÑОÑÑ ÐŽÐŸÑÑÑп к пПлÑзПваÑелÑÑкПгП ОМÑеÑÑейÑÑ Jaeger ЌПжМП ÑлеЎÑÑÑей кПЌаМЎПй:
$ kubectl port-forward -n istio-system $(kubectl get pod -n istio-system -l app=jaeger -o jsonpath='{.items[0].metadata.name}') 16686
ТепеÑÑ Ð·Ð°Ð¹ÐŽÐžÑе Ма
http://localhost:16686/ О вÑбеÑОÑе ÑеÑÐ²ÐžÑ sa-web-app. ÐÑлО ÑеÑÐ²ÐžÑ ÐœÐµ пПказаМ в вÑпаЎаÑÑеЌ ÐŒÐµÐœÑ â пÑПÑвОÑе/ÑгеМеÑОÑÑйÑе акÑОвМПÑÑÑ ÐœÐ° ÑÑÑаМОÑе О ПбМПвОÑе ОМÑеÑÑейÑ. ÐПÑле ÑÑПгП МажЌОÑе Ма ÐºÐœÐŸÐ¿ÐºÑ Find Traces, кПÑПÑÐ°Ñ Ð¿ÐŸÐºÐ°Ð¶ÐµÑ ÑаЌÑе пПÑлеЎМОе ÑÑейÑÑ â вÑбеÑОÑе лÑбПй â пПкажеÑÑÑ ÐŽÐµÑалОзОÑÐŸÐ²Ð°ÐœÐœÐ°Ñ ÐžÐœÑПÑЌаÑÐžÑ Ð¿ÐŸ вÑеЌ ÑÑейÑаЌ:ÐÑÐŸÑ ÑÑÐµÐ¹Ñ Ð¿ÐŸÐºÐ°Ð·ÑваеÑ:
- ÐапÑÐŸÑ Ð¿ÑÐžÑ ÐŸÐŽÐžÑ Ð² istio-ingressgateway (ÑÑП пеÑвПе взаОЌПЎейÑÑвОе Ñ ÐŸÐŽÐœÐžÐŒ Оз ÑеÑвОÑПв, О ÐŽÐ»Ñ Ð·Ð°Ð¿ÑПÑа геМеÑОÑÑеÑÑÑ Trace ID), пПÑле ÑегП ÑлÑз МапÑавлÑÐµÑ Ð·Ð°Ð¿ÑÐŸÑ Ð² ÑеÑÐ²ÐžÑ sa-web-app.
- Ð ÑеÑвОÑе sa-web-app запÑÐŸÑ Ð¿ÐŸÐŽÑ Ð²Ð°ÑÑваеÑÑÑ Envoy sidecar'ПЌ, ÑПзЎаÑÑÑÑ Â«ÑебÑМПк» в span'е (пПÑÑÐŸÐŒÑ ÐŒÑ Ð²ÐžÐŽÐžÐŒ егП в ÑÑейÑÐ°Ñ ) О пеÑеМапÑавлÑеÑÑÑ Ð² кПМÑÐµÐ¹ÐœÐµÑ sa-web-app. (
Span â лПгОÑеÑÐºÐ°Ñ ÐµÐŽÐžÐœÐžÑа ÑабПÑÑ Ð² Jaeger, ОЌеÑÑÐ°Ñ ÐœÐ°Ð·Ð²Ð°ÐœÐžÐµ, вÑÐµÐŒÑ ÐœÐ°ÑалП ПпеÑаÑОО О ÐµÑ Ð¿ÑПЎПлжОÑелÑМПÑÑÑ. Span'Ñ ÐŒÐŸÐ³ÑÑ Ð±ÑÑÑ Ð²Ð»ÐŸÐ¶ÐµÐœÐœÑЌО О ÑпПÑÑЎПÑеММÑЌО. ÐÑОеМÑОÑПваММÑй аÑОклОÑеÑкОй гÑÐ°Ñ ÐžÐ· span'Пв ПбÑазÑÐµÑ trace. â пÑОЌ. пеÑев.)- ÐЎеÑÑ Ð·Ð°Ð¿ÑÐŸÑ ÐŸÐ±ÑабаÑÑваеÑÑÑ ÐŒÐµÑПЎПЌ sentimentAnalysis. ÐÑО ÑÑейÑÑ Ñже ÑгеМеÑОÑÐŸÐ²Ð°ÐœÑ Ð¿ÑОлПжеМОеЌ, Ñ.е. ÐŽÐ»Ñ ÐœÐžÑ Ð¿ÐŸÑÑебПвалОÑÑ ÐžÐ·ÐŒÐµÐœÐµÐœÐžÑ Ð² кПЎе.
- С ÑÑПгП ЌПЌеМÑа ОМОÑООÑÑеÑÑÑ POST-запÑÐŸÑ Ð² sa-logic. Trace ID ЎПлжеМ бÑÑÑ Ð¿ÑПбÑПÑеМ Оз sa-web-app.
- âŠ
ÐÑОЌеÑаМОе: Ðа 4 Ñаге пÑОлПжеМОе ЎПлжМП ÑвОЎеÑÑ Ð·Ð°Ð³ÐŸÐ»ÐŸÐ²ÐºÐž, ÑгеМеÑОÑПваММÑе Istio, О пеÑеЎаÑÑ ÐžÑ Ð² пПÑлеЎÑÑÑОе запÑПÑÑ, как пПказаМП Ма ОзПбÑажеМОО МОже:
(A) Ðа пÑПбÑÐŸÑ Ð·Ð°Ð³ÐŸÐ»ÐŸÐ²ÐºÐŸÐ² ПÑвеÑÐ°ÐµÑ Istio; (B) Ðа загПлПвкО ПÑвеÑаÑÑ ÑеÑвОÑÑIstio ÐŽÐµÐ»Ð°ÐµÑ ÐŸÑМПвМÑÑ ÑабПÑÑ, Ñ.к. геМеÑОÑÑÐµÑ Ð·Ð°Ð³ÐŸÐ»ÐŸÐ²ÐºÐž ÐŽÐ»Ñ Ð²Ñ ÐŸÐŽÑÑÐžÑ Ð·Ð°Ð¿ÑПÑПв, ÑПзЎаÑÑ ÐœÐŸÐ²Ñе span'Ñ Ð² кажЎПЌ sidecare'е О пÑПбÑаÑÑÐ²Ð°ÐµÑ ÐžÑ . ÐЎМакП без ÑабПÑÑ Ñ Ð·Ð°Ð³ÐŸÐ»ÐŸÐ²ÐºÐ°ÐŒÐž вМÑÑÑО ÑеÑвОÑПв пПлМÑй пÑÑÑ ÑÑаÑÑОÑПвкО запÑПÑа бÑÐŽÐµÑ ÑÑеÑÑÐœ.
ÐÐµÐŸÐ±Ñ ÐŸÐŽÐžÐŒÐŸ ÑÑОÑÑваÑÑ (пÑПбÑаÑÑваÑÑ) ÑлеЎÑÑÑОе загПлПвкО:
x-request-id x-b3-traceid x-b3-spanid x-b3-parentspanid x-b3-sampled x-b3-flags x-ot-span-context
ÐÑП МеÑÐ»ÐŸÐ¶ÐœÐ°Ñ Ð·Ð°ÐŽÐ°Ñа, ПЎМакП ÐŽÐ»Ñ ÑпÑПÑÐµÐœÐžÑ ÐµÑ ÑеалОзаÑОО Ñже ÑÑÑеÑÑвÑеÑ
ЌМПжеÑÑвП бОблОПÑек â МапÑОЌеÑ, в ÑеÑвОÑе sa-web-app ÐºÐ»ÐžÐµÐœÑ RestTemplate пÑПбÑаÑÑÐ²Ð°ÐµÑ ÑÑО загПлПвкО, еÑлО пÑПÑÑП ЎПбавОÑÑ Ð±ÐžÐ±Ð»ÐžÐŸÑекО Jaeger О OpenTracing вегП завОÑОЌПÑÑО .ÐаЌеÑÑÑе, ÑÑП пÑОлПжеМОе Sentiment Analysis ЎеЌПМÑÑÑОÑÑÐµÑ ÑеалОзаÑОО Ма Flask, Spring О ASP.NET Core.
ТепеÑÑ, кПгЎа ÑÑалП ÑÑМП, ÑÑП ÐŒÑ Ð¿ÐŸÐ»ÑÑаеЌ Оз кПÑПбкО (ОлО пПÑÑО «Оз кПÑПбкО»), ÑаÑÑЌПÑÑОЌ вПпÑПÑÑ ÑПМкП МаÑÑÑаОваеЌПй ЌаÑÑÑÑÑОзаÑОО, ÑпÑÐ°Ð²Ð»ÐµÐœÐžÑ ÑеÑевÑÐŒ ÑÑаÑОкПЌ, безПпаÑМПÑÑО О Ñ.п.!
ÐÑОЌ. пеÑев.: Пб ÑÑПЌ ÑОÑайÑе в ÑлеЎÑÑÑей ÑаÑÑО ЌаÑеÑОалПв пП Istio ÐŸÑ Rinor Maloku, пеÑÐµÐ²ÐŸÐŽÑ ÐºÐŸÑПÑÑÑ Ð¿ÐŸÑлеЎÑÑÑ Ð² МаÑеЌ блПге в блОжайÑее вÑеЌÑ. UPDATE (14 ЌаÑÑа):
ÐÑПÑÐ°Ñ ÑаÑÑÑ Ñже ПпÑблОкПваМа.P.S. ÐŸÑ Ð¿ÐµÑевПЎÑОка
ЧОÑайÑе Ñакже в МаÑеЌ блПге:
- «ÐазаЎ к ЌОкÑПÑеÑвОÑаЌ вЌеÑÑе Ñ Istio»:
ÑаÑÑÑ 2 (ЌаÑÑÑÑÑОзаÑОÑ, ÑпÑавлеМОе ÑÑаÑОкПЌ) ,ÑаÑÑÑ 3 (аÑÑеМÑОÑОкаÑÐžÑ Ðž авÑПÑОзаÑОÑ) ;- «
Conduit â легкПвеÑÐœÑй service mesh ÐŽÐ»Ñ Kubernetes »;- «
ЧÑП ÑакПе service mesh О пПÑÐµÐŒÑ ÐŸÐœ ЌМе ÐœÑжеМ [ÐŽÐ»Ñ ÐŸÐ±Ð»Ð°ÑМПгП пÑÐžÐ»ÐŸÐ¶ÐµÐœÐžÑ Ñ ÐŒÐžÐºÑПÑеÑвОÑаЌО]? »;- «
ÐллÑÑÑÑОÑПваММПе ÑÑкПвПЎÑÑвП пП ÑÑÑÑПйÑÑÐ²Ñ ÑеÑО в Kubernetes. ЧаÑÑО 1 О 2 »;- «
Ðак ÑÑÐŸÑ sidecar-кПМÑÐµÐ¹ÐœÐµÑ ÐŸÐºÐ°Ð·Ð°Ð»ÑÑ Ð·ÐŽÐµÑÑ [в Kubernetes]? ».ÐÑÑПÑМОк: habr.com
route:
- destination:
host: sa-frontend # 2
port:
number: 80
áááášááááááááá á áááááááá:
- áá¡ ááá á¢á£ááá£á á á¡áá ááá¡á áá®ááá ášáááá¡á£á áááá®áááááá¡ http- ááá áááá;
- Ð
destination
áááá¡áááŠáá ááá¡ á¡áá ááá¡á¡, á áááááá᪠ááááááááá áááá®áááááá.ášáááášááá: ááááá áááªááá£áá áááá€ááá£á ááªáá áááá®ááá á€áááášá
sa-virtualservice-external.yaml
, á ááááá᪠áá¡ááá ášáááªááá¡ SA-WebApp-ášá áá SA-Feedback-ášá ááá ášá á£á¢ááááªááá¡ ááá áááá¢á ááá¡, áááá áá áááááá ášáááªáá áá áᥠá¡á¢áá¢ááášá.ááááá ááááááá§áááá VirtualService ááá ááááá:
ášáááášááá: á áááá¡á᪠á©ááá ááá§ááááá Istio á áá¡á£á á¡ááá¡, Kubernetes API á¡áá ááá á á¥áááá¡ áááááááá¡, á ááááá᪠ááááŠááá Istio Control Plane-áá¡ áááá áá áááá¡ ášááááá áá®ááá áááá€ááá£á ááªáá áááááá§ááááá áááááá£áá pod-áá¡ Envoy ááá ááááá¢áááá¡áááá¡. áá Ingress Gateway áááá¢á áááá á, á áááá ᪠á©ááá¡, áá áá¡ ááááá áá áá ááá¡áááá, á ááááá᪠áááá€ááá£á áá ááá£ááá á¡ááááá¢á ááá á¡ááá á¢á§áášá. áá¡ á§ááááá€áá á áá¡á áááááá§á£á ááá ááááá ááááá:
Istio-IngressGateway-áá¡ áááá€ááá£á ááªáá áááá®ááááá¡ ááá ášá á£á¢ááááªááá¡áááá¡áááá¬á§áááá¡ ááááááá áá®áá á®ááááá¡áá¬áááááá
http://{EXTERNAL-IP}/
. áá áááá ááá£ááá, áᣠááááŠááá Not Found á¡á¢áá¢á£á¡á¡: áááá¯áá áªáá¢á ááá¢á áá á á¡ááá áááá áááá€ááá£á ááªááá¡ áááá¥ááááááá¡ áá Envoy-áá¡ á¥áášáá¡ ááááá®ááááá¡.á¡áááá ááááá á«ááááá, áªáá¢ááá áááááášáá áááá á¢á áá€áááá¡ ááááá áá áááá¡áááá¡. (ááá¡á áá á¡ááááá áá£áªáááááááá ášáááááá ááá¥áááááááášá á¡ááªá®áááá¡áááá¡ - áááá®á. ááá ááááá.).
ááááá: áááááá áááááááá
Kiali-á¡ ááááááá¡á¢á ááªáá£á ááá¢áá á€ááá¡áááá ááá¡áá¡áááááá, ášááá¡á á£ááá ášáááááá áá á«ááááá:
... áá ááá®á¡ááá
http://localhost:20001/ , ášáá¡ááá á áááá ᪠áááááá/ááááááá¡á¢á áá¢áá á. áᥠááá®ááá áááá á¡áá¡áá ááááá á€á£áá¥áªááá¡, ááááááááá, Istio-á¡ ááááááááá¢áááá¡ áááá€ááá£á ááªááá¡ ášáá¡áááá¬áááááá, á¡áá ááá¡áááá¡ áááá£ááááááªááá¡áááá¡, á¥á¡áááá¡ áááá®ááááááá ášááá ááááá£áá ááá€áá áááªááá¡ ááááá§áááááá, ááááŠáá ááá¡á£á®ááá áááá®ááááá âááá ááá¡ á£áááášáá áááá?â, âá¡áá ááá¡áá¡ á áááá ááá á¡ááá¡ áááááªááá¡â. á¬áá á£ááá¢áááááá?â áá áá¡á ášááááá. ááááááá, ááááááááááá Kiali-á¡ ášáá¡áá«ááááááááá, á¡áááá ááááá®áááá ááá¢á áááá¡ áááá£ááááááªáááá Grafana-á¡ááá áá ááá.áá áá€ááá: ááá¢á áááá¡ áááá£ááááááªáá
áá¡á¢ááášá ášááá ááááá£áá ááá¢á ááá ááááá áááá áá áááááášá áá áááá£áááááááá áá áá€áááá¡ááá. Grafana ááááááá¡á¢á áá¢áá áá¡ ááá¢áá á€ááá¡ášá ááá¡áá®áááá áá, ááá£ášááá á¥ááááá áááªááá£áá áá á«ááááá, ášááááá ááá®á¡áááá
http://localhost:3000/ :ááááá£áá ááááá áá áááááá á áááá ááá áªá®ááá áá ááá á©ááá áá¡á¢ááá¡ á¡áá ááá¡áá¡ ááá€á áááá ááá áªá®ááá áá£áá®áášá áááá¬á§áá á¡áá ááá¡áá á¡á-ááá-áááášááá ááááá£áá ááá¢á áááá¡ ááá¡áááááááá ááááá:
á á᪠áᥠááááááááá áªáá áááá áá á¡á á£áááá ááá¡áá¬á§ááá ášáá¡á á£ááááá - ááááá¯áááá¢á áááá¡ áá áá¡áááá¡ ááááá¢áááªááá¡. ááááá ášááá¥áááá ááªáá á ááá¢ááá ááá ášáááááá áá á«áááááá:
áá®áá á©ááá áááá¥áá¡ áááá áá á£á€á á áááááá áá áá€ááááá áá ááá ááá áá, áášáááááá á á®ááá¡áá¬á§áááá Prometheus ááááá¢áá ááááá¡áááá¡ áá Grafana ááá¢á áááá¡ áááá£ááááááªááá¡áááá¡, á á᪠á¡áášá£áááááá¡ áááááªááá¡ ááááááá áá£ášááááá¡, á¯áááá ááááááá¡ ááááááá ááááá¡, á¡áá ááá¡áááá¡ ááá£áá¯áááá¡ááá/áááá ááááªáá áá ááá ááááááááááášá.
ááááááá¡, ááááá áááááá®áááá áááá®áááááá¡ á¡áá ááá¡ááášá.
ááááá á: áááááááá
á©ááá ááááááá áááá áááááá€ááááªáá, á ááááá á á᪠ááá¢á á¡áá ááá¡á áááá¥áááá, ááá á£á€á á á áá£ááá ááá áªá®áá¡ ááááááááá ááá¡ááá. ááááá ášááá®áááá ááá á¢áá ášáááá®ááááá¡ á¥ááááá áááªááá£áá á¡á£á áááááá:
ášáááá®áááááá á¬áá á£ááá¢ááááá áááá®ááááá¡ á¢áááá£á á áááááááááááá®áááá ááááá¡, ááªááá - á á áá áá¡ áááááá? ááá áááá á¡áá ááá¡á? áá áááá á? áá áááášá áá áá¡ áááááááááá¡ááá - ááááá áááááá®áááá áááááá£ááá¡ áá£á áááá¡. á ááááááá á®ášáá áá áááááá áá á¡ááá£ááá á áááá áááá¡ ááááááášá? á©áááá áá£ášáááá á£á€á á á°áááá¡ áá ááá ááá£á ááá¢áá¥á¢ááááá¡, áááá á ááááááááá ááá¡...
áá¡ áá áá¡ á¡ááá áá áá áááááá áááá áá¡áá ááá¡ááášá áá áááááá ááá£ááá ááááá¬ááááá£áá á¢á áá¡ááááá¡ á¡áá¡á¢áááááá, á áááááášá᪠á¡áá ááá¡ááá áá ááááááá¡ ááááá¡áªáááá á£áááááá£á á¡áááá£á á¡, á áá¡ ášáááááá᪠áá¡ ááá€áá áááªáá ááááááááááááá á¢á áá¡ááááá¡ á¡áá¡á¢áááá¡, á¡ááá᪠ášáááá ááá£ááá áááá®ááááá¡ áááááªááááááá. áá ááá£á¡á¢á ááªáá:
TraceId áááááá§ááááá áááá®ááááá¡ ááááá¢áá€ááªáá áááá¡áááá¡Istio áá§ááááá¡ Jaeger Tracer-á¡, á ááááá᪠áá®áá áªáááááá¡ áááá§ááááááá¡ááá ááááá£ááááááá OpenTracing API á©áá á©áá¡. áá¥ááá ášáááá«áááá ášáá®ááááá Jaeger-áá¡ áááá®ááá ááááá¡ ááá¢áá á€ááá¡áá ášáááááá áá á«áááááá:
áá®áá ááááááá
http://localhost:16686/ áá ááá á©ááá á¡áá ááá¡á á¡á-ááá-ááá. áᣠá¡áá ááá¡á áá áá áá¡ ááá©áááááá á©áááá¡áášááá ááááá£ášá, áá©ááááá/ášáá¥ááááá áá¥á¢ááááá áááá ááá áá áááááá®ááá ááá¢áá á€ááá¡á. áááá¡ ášááááá áááááá áá áŠááááá¡ ááááááá ááááá, á ááááá᪠áá©áááááá¡ á£áá®ááá¡ ááááá¡ - ááá á©ááá ááááá¡áááá á - ááááá©ááááá ááá¢ááá£á á ááá€áá áááªáá á§áááá áááááá¡ ášáá¡áá®áá:áá¡ ááááá áá©áááááá¡:
- áááá®áááá ášáááááá¡ istio-ingressgateway (áá¡ áá áá¡ ááá áááá á£á áááá áá¥áááááá áá á-áá á á¡áá ááá¡ááá áá áááá®ááááá¡áááá¡ áá¥ááááá Trace ID), á áá¡ ášáááááá᪠ááá áááá áááááááá¡ áááá®ááááá¡ á¡áá ááá¡á¡ á¡á-ááá-ááá.
- á¡ááá¡áá®á£á ášá á¡á-ááá-ááá áá®ááááá¡ áááŠááá¡ Envoy sidecar-á, áá¥ááááá "áááášáá" ááááááááášá (áááá¢áá áá®ááááá ááá¡ ááááášá) áá ááááááá¡áááá áááá£ááá áááá¢ááááá ášá. á¡á-ááá-ááá. (
Span - ááááá ášá áá£ášááááá¡ áááááá£á á áá ááá£áá, á ááááá¡á᪠áá¥áá¡ á¡áá®ááá, áááá ááªááá¡ ááá¬á§áááá¡ áá á áá á®áááá á«áááááá. á¡ááááááá¡ ááá¬á§ááá áá ášáááááá ášáá¡áá«ááááááá. á¡ááááááá¡ ááááá áá£áá ááªáááá£á á áá áá€ááá á¥áááá¡ ááááá¡. - áááá®á. ááá ááááá.)- áᥠáááá®áááá áá£ášáááááá ááááááá á¡ááá¢ááááá¢ááá£á á ááááááá. áá¡ ááááá á£ááá ááááá áá ááá£ááá áááááááªááá¡ áááá , á.á. ááá ááááá®áááá¡ ááááá¡ áªááááááááá.
- áá áááááá¢áááá áá¬á§ááá POST áááá®áááá á¡á-áááááá. Trace ID á£ááá áá§áá¡ áááááááááááá á¡á-ááá-ááá.
- ...
ášáááášááá: ááááá¯á 4, áááááááªááá á£ááá ááá®áá¡ Istio-á¡ áááá ááááá áá ááá£áá á¡áááá£á ááá áá ááááá¡áªáá¡ áá¡ááá ášáááááá áááá®ááááááá, á áááá ᪠ááá©ááááááá á¥ááááá áááªááá£á á¡á£á áááá:
(á) áá¡á¢áá ááá¡á£á®áá¡áááááááá á¡áááá£á áááá¡ áááááááááááá; (B) á¡áá ááá¡ááá ááá¡á£á®áá¡áááááááá áá ááá á¡áááá£á áááááá¡á¢áá á¡ááá£ášááá¡ á£ááá¢áá¡ ááá¬ááá¡ ááááááá¡, á ááááá... á¬áá ááá¥áááá¡ á¡áááá£á ááá¡ ášááááááááá áááá®ááááááá¡áááá¡, á¥áááá¡ áá®áá á¡áááááá¡ áááááá£á áááá áááá áááá§áá€áááááášá áá ááááá¡áªááá¡ ááá. áá£ááªá, á¡áá ááá¡áááá¡ ášááááá á¡áááá£á ááááá áá£ášááááá¡ ááá áášá, á¡á á£áá áááá®ááááá¡ áááááá¡ áááááá áááááá áááá.
ááá¡ááááááá¡á¬áááááááá ášáááááá á¡áááá£á ááá:
áá¡ áá áá áá¡ á áá£áá ááááªááá, áááá áá ááá¡á áááá®áá áªááááááá¡ ááááá á¢ááááá á£ááá áá á¡ááááá¡
áááá á áááááááááá - ááááááááá, sa-web-app á¡áá ááá¡ášá RestTemplate áááááá¢á ááááá¡áªááá¡ áá á¡áááá£á ááá¡, áᣠáá¥ááá á£áá áááá áááááá¢ááá Jaeger áá OpenTracing áááááááááááá¡ááá¡á áááááááááá£áááááá .ááááááááá¡á¬áááá, á áá Sentiment Analysis áááááááªáá áá©áááááá¡ áááá®áá áªáááááááá¡ Flask, Spring áá ASP.NET Core-ášá.
áá®áá, á ááªá á£ááá ááááááá, á áá¡ áááŠááá á§á£ááááá (áá áááá¥ááá¡ ááá áááá), ááááá áááááá®áááá ááá ášá á£á¢áá¡ áááá£á¡á¢áááá¡, á¥á¡ááá£á á á¢á áá€áááá¡ ááá áááá¡, á£á¡áá€á áá®ááááá¡ áá á¡á®ááá¡!
Ლáááášááá. ááá áááá: áááá¡ ášáá¡áá®áá á¬áááááá®áá Istio-á¡ ááá¡áááááá¡ ášááááá ááá¬ááášá Rinor Maloku-ááá, á ááááá¡ ááá ááááááá᪠á£áá®áááá¡ áááááááášá ášáááááááááááá á©áááá¡ áááááá. ááááá®ááááá¡ (14 ááá á¢á):
áááá á ááá¬ááá á£ááá ááááá¥ááá§áááá£ááá.PS áááá ááááááá¡ááá
áá¡ááá á¬áááááá®áá á©áááá¡ áááááá:
- "á£áá á£ááá áááá áá¡áá ááá¡ááá¡ Istio-á¡ááá áá ááá":
ááá¬ááá 2 (ááá ášá á£á¢ááááªáá, ááá«á ááááá¡ áááá¢á ááá) ,ááá¬ááá 3 (áááááá¢áá€ááááªáá áá ááá¢áá ááááªáá) ; - «
ááááá£áá¢á - áá¡á£áá£á¥á á¡áá ááá¡áá¡ áááá Kubernetes-áá¡áááá¡ "; - «
á á áá áá¡ á¡áá ááá¡á£áá á¥á¡ááá áá á áá¢áá áááá áááá áá¡ [áááá á¡áá ááá¡áááá áŠá á£ááááááá áááááááªááá¡áááá¡]? "; - «
ááá£á¡á¢á áá ááá£áá áááááááááá á¥á¡ááášá Kubernetes-ášá. ááá¬ááááá 1 áá 2 "; - «
á áááá ááŠááá©ááá áá¡ áááá áááá áááá¥áááá¡ áááá¢ááááá á áᥠ[áá£ááá ááá¢áá¡ášá]? ".
á¬á§áá á: www.habr.com