Retounen nan microservices ak Istio. Pati 1

Retounen nan microservices ak Istio. Pati 1

Remak. trad.: Sèvis may yo definitivman vin tounen yon sijè ki cho nan enfrastrikti jodi a pou aplikasyon pou swiv achitekti mikwosèvis. Pandan ke Istio ka sou rada a nan anpil enjenyè DevOps, li se yon pwodwi san patipri nouvo ki, pandan y ap konplèks an tèm de karakteristik li bay, ka pran yon kantite tan enpòtan pou jwenn konnen. Enjenyè Alman Rinor Maloku, ki responsab cloud computing pou gwo kliyan nan konpayi telekominikasyon Orange Networks, te ekri yon seri bèl bagay ki pèmèt ou plonje byen vit ak pwofondman nan Istio. Li kòmanse istwa li ak sa Istio ka fè ak ki jan ou ka byen vit wè li ak pwòp je ou.

Istio — Open Source-pwojè, devlope an kolaborasyon ak ekip Google, IBM ak Lyft. Li rezoud konpleksite ki parèt nan aplikasyon ki baze sou mikwosèvis, pou egzanp, tankou:

  • jesyon trafik: timeouts, retry, load balancing;
  • Безопасность: otantifikasyon itilizatè fen ak otorizasyon;
  • obsèvabilite: trase, siveyans, antre.

Tout nan yo ka rezoud nan nivo aplikasyon an, sepandan apre sa sèvis ou yo pral pa "mikwo". Tout efò siplemantè pou adrese pwoblèm sa yo se yon fatra nan resous konpayi ki ta ka itilize dirèkteman pou valè biznis. Konsidere yon egzanp:

Manadjè Pwojè: Konbyen tan li pran pou ajoute yon karakteristik fidbak?
Devlopè: De sprint.

MP: Kisa?.. Se jis CRUD!
R: Fè CRUD se pati ki fasil nan travay la, men nou toujou bezwen otantifye ak otorize itilizatè yo ak sèvis yo. Depi rezo a se enfidèl, w ap bezwen aplike demann repete, osi byen ke modèl disjoncteurs nan kliyan yo. Epitou, asire w ke tout sistèm nan pa t 'kraze, timeouts ak klwazon (Gade pita nan atik la pou plis detay sou tou de modèl mansyone yo.), ak nan lòd yo detekte pwoblèm, siveyans, trase, [...]

MP: Oh, ann jis mete karakteristik sa a nan sèvis la pwodwi Lè sa a,.

Mwen panse ke lide a klè: kantite etap ak efò ki nesesè pou ajoute yon sèl sèvis se gwo. Nan atik sa a, nou pral pran yon gade nan ki jan Istio retire tout konpleksite ki mansyone pi wo a (pa vize pa lojik biznis) nan sèvis yo.

Retounen nan microservices ak Istio. Pati 1

Note: Atik la sipoze ke ou gen konesans k ap travay nan Kubernetes. Sinon, mwen rekòmande lekti entwodiksyon mwen an nan Kubernetes epi sèlman lè sa a kontinye li materyèl sa a.

Istio lide

Nan yon monn san Istio, yon sèvis fè demann dirèk nan yon lòt, ak nan ka echèk, sèvis la dwe okipe li tèt li: fè yon nouvo tantativ, bay pou yon timeout, louvri yon disjoncteurs, elatriye.

Retounen nan microservices ak Istio. Pati 1
Trafik rezo nan Kubernetes

Istio, nan lòt men an, ofri yon solisyon espesyalize ki konplètman separe de sèvis ak fonksyon pa entèfere ak entèraksyon rezo a. Epi konsa li aplike:

  • tolerans fòt: baze sou kòd estati a nan repons lan, li konprann si demann lan echwe epi li resoumèt li.
  • Sou entènèt jwèt Canary Rollouts: redireksyon sèlman yon pousantaj fiks nan demann nan nouvo vèsyon an nan sèvis la.
  • Siveyans ak metrik: konbyen tan sa te pran pou sèvis la reponn?
  • Trase ak obsèvabilite: Ajoute tèt espesyal nan chak demann epi trase yo atravè gwoup la.
  • Безопасность: Rekipere yon siy JWT, otantifye ak otorize itilizatè yo.

Sa yo se jis kèk nan posiblite yo (reyèlman jis yon kèk!) Entrige ou. Koulye a, ann plonje nan detay teknik yo!

Achitekti

Istio entèsepte tout trafik rezo a epi aplike yon seri règ sou li, mete yon prokurasyon entelijan nan fòm yon veso sidecar nan chak gous. Prokurasyon ki aktive tout posiblite fòme yon Done Avyon, epi yo ka ajiste dinamik ak Kontwòl avyon.

Done Avyon

Prokurasyon yo ki mete nan gous yo pèmèt Istio fasil reyalize kondisyon nou bezwen yo. Pa ekzanp, an n tcheke réessais ak fonksyon disjoncteurs.

Retounen nan microservices ak Istio. Pati 1
Ki jan yo aplike ressai ak kraze sikwi nan Envoy

Adisyone:

  1. anvwaye (nou ap pale de yon prokurasyon ki sitiye nan yon veso sidecar, ki distribye ak ki jan pwodwi separe - approx. trad.) voye yon demann bay premye egzanp sèvis B la epi li echwe.
  2. Envoy Sidecar ap eseye ankò (reesye). (1)
  3. Demann ki echwe a retounen bay prokurasyon ki rele l la.
  4. Sa a ouvè Circuit Breaker la epi rele pwochen sèvis la pou demann ki vin apre yo. (2)

Sa vle di ke ou pa oblije sèvi ak pwochen bibliyotèk Retry la, ou pa oblije fè pwòp aplikasyon ou nan Circuit Breaking ak Dekouvèt Sèvis nan langaj pwogramasyon X, Y oswa Z. Tout bagay sa a ak plis ankò ki disponib soti nan la. bwat nan Istio epi li pa mande non chanjman kòd.

Gwo! Koulye a, ou ka vle ale nan yon vwayaj ak Istio, men gen toujou kèk dout, kesyon ouvè. Si sa a se yon solisyon inivèsèl pou tout okazyon nan lavi, Lè sa a, ou gen yon sispèk lejitim: apre tout, tout solisyon sa yo se an reyalite pa apwopriye pou nenpòt ka.

Epi finalman ou mande: "Èske li customizable?"

Koulye a, ou yo pare pou yon vwayaj lanmè - epi kite a fè konesans ak Avyon Kontwòl.

Kontwòl avyon

Li konsiste de twa eleman: pilòt, Mixer и Sitadèl, ki ansanm configured Envoys pou wout trafik, aplike règleman, ak kolekte done telemetrik. Chematikman, li tout sanble sa a:

Retounen nan microservices ak Istio. Pati 1
Entèaksyon Avyon Kontwòl ak Avyon Done

Anvwaye (sa vle di avyon done) yo configuré ak Kubernetes CRD (Definisyon Resous Custom) defini pa Istio epi ki fèt espesyalman pou objektif sa a. Ki sa sa vle di pou ou se ke yo se jis yon lòt resous nan Kubernetes ak yon sentaks abitye. Yon fwa ke li te kreye, resous sa a pral ranmase pa avyon kontwòl Et aplike pou anvwaye yo.

Relasyon sèvis ak Istio

Nou te dekri relasyon Istio a ak sèvis yo, men se pa lòt fason alantou: ki jan sèvis yo gen rapò ak Istio?

Pou yo dwe onèt, sèvis yo konnen sou prezans Istio osi byen ke pwason konnen sou dlo, lè yo mande tèt yo: "Ki sa ki dlo de tout fason?".

Retounen nan microservices ak Istio. Pati 1
Ilistrasyon Victoria Dimitrakopoulos: Ki jan ou renmen dlo a? - Ki sa ki dlo de tout fason?

Kidonk, ou ka pran yon gwoup k ap travay epi apre yo fin deplwaye konpozan Istio yo, sèvis yo nan li yo ap kontinye travay, epi apre yo fin retire eleman sa yo, tout bagay pral byen ankò. Li klè ke nan ka sa a ou pral pèdi opòtinite yo ofri pa Istio.

Ase teyori - ann mete konesans sa a an pratik!

Istio nan pratik

Istio mande pou yon gwoup Kubernetes ak omwen 4 vCPU ak 8 GB RAM ki disponib. Pou ogmante gwoup la byen vit epi swiv enstriksyon ki soti nan atik la, mwen rekòmande pou itilize Google Cloud Platform, ki ofri nouvo itilizatè yo gratis $300.

Apre ou fin kreye gwoup la ak etabli aksè nan Kubernetes atravè sèvis piblik konsole a, ou ka enstale Istio atravè manadjè a pake Helm.

Helm Enstalasyon

Enstale kliyan an Helm sou òdinatè w lan jan sa dekri nan dokiman ofisyèl yo. Nou pral sèvi ak li pou jenere modèl pou enstale Istio nan pwochen seksyon an.

Enstalasyon

Telechaje resous Istio soti nan dènye lage (Lyen otè orijinal la nan vèsyon 1.0.5 yo te chanje nan youn aktyèl la, sa vle di 1.0.6 - apeprè tradiksyon), ekstrè sa ki nan yon sèl anyè, ke mwen pral refere yo kòm [istio-resources].

Pou fasil idantifikasyon resous Istio, kreye yon espas non nan gwoup K8s la istio-system:

$ kubectl create namespace istio-system

Konplete enstalasyon an pa navige nan anyè a [istio-resources] epi kouri lòd la:

$ 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

Kòmand sa a pral soti eleman kle yo nan Istio nan yon dosye istio.yaml. Nou te modifye modèl estanda a pou tèt nou lè nou espesifye paramèt sa yo:

  • global.mtls.enabled enstale nan false (sa vle di otantifikasyon mTLS enfim - apeprè tradiksyon)senplifye pwosesis date nou an;
  • tracing.enabled pèmèt trase demann ak Jaeger;
  • kiali.enabled enstale Kiali nan yon gwoup pou visualiser sèvis ak trafik;
  • grafana.enabled enstale Grafana pou vizyalize mezi yo kolekte.

Aplike resous pwodwi yo ak kòmandman an:

$ kubectl apply -f istio.yaml

Enstalasyon Istio nan gwoup la fini! Tann jiskaske tout gous nan espas non an istio-system yo pral kapab Running oswa Completedpa kouri lòd ki anba a:

$ kubectl get pods -n istio-system

Kounye a nou pare pou nou kontinye nan pwochen seksyon an, kote nou pral ogmante epi kouri aplikasyon an.

Achitekti aplikasyon analiz santiman

Ann sèvi ak egzanp aplikasyon mikwosèvis Sentiment Analysis yo itilize nan deja mansyone a Entwodiksyon atik nan Kubernetes. Li se konplèks ase yo montre posiblite yo nan Istio nan pratik.

Aplikasyon an konsiste de kat mikwosèvis:

  1. Lapòs SA-Frontend, ki sèvi aplikasyon front-end sou Reactjs;
  2. Lapòs SA Web App, ki sèvi demann analiz santiman;
  3. Lapòs SA Lojikki fè tèt li analiz santiman;
  4. Lapòs SA Feedback, ki resevwa fidbak nan men itilizatè yo sou presizyon nan analiz la fè.

Retounen nan microservices ak Istio. Pati 1

Nan dyagram sa a, anplis sèvis, nou wè tou Ingress Controller, ki nan Kubernetes wout demann fèk ap rantre nan sèvis korespondan yo. Istio sèvi ak yon konsèp menm jan an kòm yon pati nan Ingress Gateway, detay sou ki pral swiv.

Lanse yon aplikasyon ak yon prokurasyon soti nan Istio

Pou plis operasyon ki mansyone nan atik la, klonaj depo ou a istio-mesi. Li gen aplikasyon an ak manifeste pou Kubernetes ak Istio.

Mete sidecars

Ensèsyon ka fèt otomatikman oswa manyèlman. Pou otomatikman mete resipyan sidecar, ou bezwen mete etikèt la nan espas non an istio-injection=enabled, ki fè pa kòmandman sa a:

$ kubectl label namespace default istio-injection=enabled
namespace/default labeled

Koulye a, chak gous ki pral deplwaye nan espas non default la (default) pral jwenn veso sidecar li yo. Pou verifye sa a, ann deplwaye yon aplikasyon tès lè nou ale nan anyè rasin depo a [istio-mastery] epi kouri lòd sa a:

$ 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

Lè w fin deplwaye sèvis yo, tcheke si gous yo gen de resipyan chak (avèk sèvis la li menm ak sidecar li) lè w ap kouri kòmandman an. kubectl get pods epi asire w ke anba kolòn nan READY valè espesifye 2/2, senbolize ke tou de veso yo ap kouri:

$ 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

Vizyèlman li sanble sa a:

Retounen nan microservices ak Istio. Pati 1
Anvwaye prokurasyon nan youn nan gous yo

Kounye a ke aplikasyon an ap fonksyone, nou bezwen pèmèt trafik fèk ap rantre antre nan aplikasyon an.

Ingress Gateway

Pi bon pratik pou reyalize sa (pèmèt trafik nan gwoup la) se via Ingress Gateway nan Istio, ki sitiye nan "kwen" gwoup la epi ki pèmèt ou pèmèt karakteristik Istio tankou routage, balans chaj, sekirite, ak siveyans pou trafik fèk ap rantre.

Eleman Ingress Gateway la ak sèvis ki voye li deyò a te enstale sou gwoup la pandan enstalasyon Istio a. Pou chèche konnen adrès IP ekstèn yon sèvis, kouri:

$ 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

Nou pral kontinye jwenn aksè nan aplikasyon an lè l sèvi avèk IP sa a (mwen pral refere li kòm EXTERNAL-IP), kidonk pou konvenyans, nou pral ekri valè a nan yon varyab:

$ EXTERNAL_IP=$(kubectl get svc -n istio-system 
  -l app=istio-ingressgateway 
  -o jsonpath='{.items[0].status.loadBalancer.ingress[0].ip}')

Si w eseye jwenn aksè IP sa a atravè yon navigatè kounye a, w ap jwenn yon erè Sèvis Disponib, paske pa default Istio bloke tout trafik fèk ap rantrejiskaske Gateway yo defini.

Resous Gateway

Gateway se yon CRD (Definisyon Resous Customize) nan Kubernetes, defini apre enstale Istio nan yon gwoup ak pèmèt kapasite nan presize pò, pwotokòl, ak lame pou ki nou vle pèmèt trafik fèk ap rantre.

Nan ka nou an, nou vle pèmèt trafik HTTP sou pò 80 pou tout lame. Pwoblèm nan reyalize pa definisyon sa a (http-gateway.yaml):

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: http-gateway
spec:
  selector:
    istio: ingressgateway
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
- "*"

Konfigirasyon sa a pa bezwen okenn eksplikasyon eksepte pou seleksyon an istio: ingressgateway. Avèk seleksyon sa a, nou ka presize nan ki Ingress Gateway pou aplike pou konfigirasyon an. Nan ka nou an, sa a se kontwolè Ingress Gateway, ki te enstale pa default nan Istio.

Konfigirasyon an aplike lè w rele lòd sa a:

$ kubectl apply -f resource-manifests/istio/http-gateway.yaml gateway.networking.istio.io/http-gateway created

Pòtay la kounye a pèmèt aksè nan pò 80 men li pa gen okenn lide ki kote yo mennen demann yo. Pou sa w ap bezwen Sèvis Virtual.

Resous sèvis vityèl

VirtualService la di Ingress Gateway kòman pou w achemine demann ki pèmèt yo nan gwoup la.

Yo dwe voye demann nan aplikasyon nou an atravè http-gateway la nan sèvis sa-frontend, sa-web-app ak sa-feedback:

Retounen nan microservices ak Istio. Pati 1
Wout yo dwe konfigirasyon ak VirtualServices

Konsidere demann yo ta dwe voye bay SA-Frontend:

  • Match egzak sou wout la / yo ta dwe voye bay SA-Frontend pou jwenn index.html;
  • Chemen ak yon prefiks /static/* yo ta dwe voye bay SA-Frontend pou jwenn fichye estatik yo itilize nan entèfas la, tankou CSS ak JavaScript;
  • Chemen ki matche ak ekspresyon regilye a '^.*.(ico|png|jpg)$', yo dwe voye bay SA-Frontend, paske Sa yo se foto yo parèt sou paj la.

Aplikasyon an reyalize pa konfigirasyon sa a (sa-virtualservice-external.yaml):

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)$'
    route:
    - destination:
        host: sa-frontend             # 2
        port:
number: 80

Pwen enpòtan:

  1. Sèvis Virtual sa a refere a demann k ap vini http-gateway;
  2. В destination defini sèvis kote yo voye demann yo.

Note: Konfigirasyon ki anwo a estoke nan yon dosye sa-virtualservice-external.yaml, ki gen tou anviwònman pou routage nan SA-WebApp ak SA-Feedback, men li te pi kout isit la nan atik la pou konsizyon.

Aplike VirtualService lè w rele:

$ kubectl apply -f resource-manifests/istio/sa-virtualservice-external.yaml
virtualservice.networking.istio.io/sa-external-services created

Note: Lè nou aplike resous Istio, sèvè API Kubernetes a lanse yon evènman ke Avyon Kontwòl Istio resevwa, epi apre sa, nouvo konfigirasyon an aplike nan proxy Envoy chak gous la. Ak kontwolè Ingress Gateway la parèt yon lòt Envoy configuré nan Avyon Kontwòl. Tout bagay sa yo sanble nan dyagram nan:

Retounen nan microservices ak Istio. Pati 1
Istio-IngressGateway konfigirasyon pou routage demann

Sentiment Analysis disponib kounye a sou http://{EXTERNAL-IP}/. Pa enkyete w si w jwenn estati Not Found: pafwa li pran yon ti tan ankò pou konfigirasyon an pran efè ak pou kachèt Envoy yo mete ajou.

Anvan ou kontinye, jwe yon ti kras ak aplikasyon an pou jenere trafik (prezans li nesesè pou klè nan aksyon ki vin apre yo - apeprè tradiksyon).

Kiali: observability

Pou ale nan koòdone admin Kiali, kouri lòd sa a:

$ kubectl port-forward 
    $(kubectl get pod -n istio-system -l app=kiali 
    -o jsonpath='{.items[0].metadata.name}') 
    -n istio-system 20001

…epi louvri http://localhost:20001/pa konekte kòm admin/admin. La a ou pral jwenn anpil karakteristik itil, pou egzanp, tcheke konfigirasyon konpozan Istio, vizyalize sèvis ki soti nan enfòmasyon yo kolekte nan entèsepte demann rezo a, jwenn repons a kesyon yo "Ki moun ki kontakte ki moun?", "Ki vèsyon sèvis la ap fè eksperyans. echèk?" ak sou sa. An jeneral, eksplore posiblite ki genyen nan Kiali anvan ou ale nan vizyalize mezi ak Grafana.

Retounen nan microservices ak Istio. Pati 1

Grafana: vizyalizasyon nan metrik

Paramèt yo kolekte nan Istio fini nan Prometheus epi yo vizyalize ak Grafana. Pou ale nan koòdone admin Grafana, kouri kòmandman ki anba a, epi louvri 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

Lè w klike sou meni an Akèy anlè gòch epi chwazi Istio Sèvis Dach nan kwen an tèt gòch, kòmanse ak sèvis sa-web-apppou wè mezi yo kolekte:

Retounen nan microservices ak Istio. Pati 1

Isit la nou ap tann pou yon pèfòmans vid ak konplètman raz - jesyon pa janm ap apwouve sa a. Ann kreye yon ti chaj ak lòd sa a:

$ while true; do 
    curl -i http://$EXTERNAL_IP/sentiment 
    -H "Content-type: application/json" 
    -d '{"sentence": "I love yogobella"}'; 
    sleep .8; done

Koulye a, nou gen pi bèl graf, epi anplis de yo, bèl zouti Prometheus pou siveyans ak Grafana pou vizyalize mezi, ki pral pèmèt nou aprann sou pèfòmans, eta sante, amelyorasyon / degradasyon nan sèvis yo sou tan.

Finalman, an n gade sou demann tras nan sèvis yo.

Jaeger: trase

Nou pral bezwen trase, paske plis nou gen sèvis, se pi difisil pou rive nan kòz echèk la. Ann gade nan yon ka senp nan foto ki anba a:

Retounen nan microservices ak Istio. Pati 1
Egzanp tipik nan yon demann o aza echwe

Demann vini, tonbe - ki rezon an? Premye sèvis? Oswa dezyèm? Gen eksepsyon nan tou de - an n gade nan mòso bwa yo chak. Konbyen fwa ou kenbe tèt ou ap fè sa? Travay nou an se plis tankou detektif lojisyèl pase devlopè...

Sa a se yon pwoblèm ki gaye toupatou nan mikwosèvis epi li rezoud pa sistèm trase distribiye, nan ki sèvis yo pase yon header inik youn ak lòt, apre sa enfòmasyon sa a yo redireksyon nan sistèm trase a, kote yo konpare li ak done demann lan. Men yon ilistrasyon:

Retounen nan microservices ak Istio. Pati 1
Yo itilize TraceId pou idantifye demann lan

Istio sèvi ak Jaeger Tracer, ki aplike yon kad API OpenTracing endepandan. Ou ka jwenn aksè nan koòdone itilizatè Jaeger ak lòd sa a:

$ kubectl port-forward -n istio-system 
    $(kubectl get pod -n istio-system -l app=jaeger 
    -o jsonpath='{.items[0].metadata.name}') 16686

Koulye a, ale nan http://localhost:16686/ epi chwazi yon sèvis sa-web-app. Si sèvis la pa montre nan meni an deroulant, montre/jenere aktivite sou paj la epi mete ajou koòdone a. Apre sa klike sou bouton an Jwenn tras, ki pral montre tras ki pi resan yo - chwazi nenpòt - enfòmasyon detaye sou tout tras ap parèt:

Retounen nan microservices ak Istio. Pati 1

Tras sa a montre:

  1. Demann lan vini istio-ingressgateway (sa a se premye entèraksyon ak youn nan sèvis yo, epi yo kreye yon ID Trace pou demann lan), apre sa pòtay la voye demann lan bay sèvis la. sa-web-app.
  2. Nan sèvis sa-web-app se demann lan ranmase pa sidecar la Envoy, yon "timoun" kreye nan span a (se poutèt sa nou wè li nan tras) ak redireksyon nan veso a sa-web-app. (Span - yon inite lojik nan travay nan Jaeger, ki gen yon non, tan an kòmanse nan operasyon an ak dire li yo. Spans yo ka enbrike ak bay lòd. Yon graf asilik dirije nan span fòme yon tras. - approx. trad.)
  3. Isit la se demann lan trete pa metòd la santiman analiz. Tras sa yo deja pwodwi pa aplikasyon an, i.e. yo te mande chanjman kòd.
  4. Soti nan moman sa a, yon demann POST inisye nan sa-lojik. Trace ID dwe voye soti nan sa-web-app.
  5. ...

Note: Nan etap 4, aplikasyon an ta dwe wè tèt yo ki te pwodwi pa Istio epi pase yo nan demann ki vin apre yo, jan yo montre nan imaj ki anba a:

Retounen nan microservices ak Istio. Pati 1
(A) Transmisyon header se responsablite Istio; (B) Sèvis yo responsab pou headers

Istio fè gwo travay la paske jenere headers pou demann fèk ap rantre, kreye nouvo span nan chak sidecare epi voye yo. Sepandan, san yo pa travay ak en-tête andedan sèvis yo, chemen an tras plen demann yo pral pèdi.

Tèt sa yo dwe konsidere (voye):

x-request-id
x-b3-traceid
x-b3-spanid
x-b3-parentspanid
x-b3-sampled
x-b3-flags
x-ot-span-context

Sa a se yon travay ki senp, men senplifye aplikasyon li yo, gen deja anpil bibliyotèk - pou egzanp, nan sèvis sa-web-app, kliyan RestTemplate voye tèt sa yo si ou tou senpleman ajoute bibliyotèk Jaeger ak OpenTracing nan depandans li yo.

Remake byen ke aplikasyon an analiz santiman demontre aplikasyon nan Flask, Spring, ak ASP.NET Core.

Kounye a ke li klè sa n ap jwenn soti nan bwat la (oswa prèske soti nan bwat la), an n gade nan amann routage, jesyon trafik rezo, sekirite, ak plis ankò!

Remak. trad.: li sou li nan pwochen pati nan materyèl sou Istio soti nan Rinor Maloku, tradiksyon yo ki pral swiv nan blog nou an nan fiti prè. MIZAJOU (14 mas): Dezyèm pati deja pibliye.

PS soti nan tradiktè

Li tou sou blog nou an:

Sous: www.habr.com

Add nouvo kòmantè