Terug na mikrodienste met Istio. Deel 1

Terug na mikrodienste met Istio. Deel 1

Let wel. vertaal.: Diensnetwerke het beslis 'n warm onderwerp geword in vandag se infrastruktuur vir toepassings wat mikrodiensargitektuur volg. Alhoewel Istio dalk op die radar van baie DevOps-ingenieurs is, is dit 'n taamlik nuwe produk wat, hoewel kompleks in terme van kenmerke wat dit bied, 'n aansienlike hoeveelheid tyd kan neem om te leer ken. Die Duitse ingenieur Rinor Maloku, wat in beheer is van wolkrekenaars vir groot kliënte by die telekommunikasiemaatskappy Orange Networks, het 'n wonderlike reeks materiaal geskryf wat jou toelaat om vinnig en diep in Istio te duik. Hy begin sy storie met wat Istio kan doen en hoe jy dit vinnig met jou eie oë kan sien.

Istio — Open Source-projek, ontwikkel in samewerking met spanne van Google, IBM en Lyft. Dit los die kompleksiteite op wat ontstaan ​​in toepassings gebaseer op mikrodienste, byvoorbeeld, soos:

  • verkeersbestuur: timeouts, herprobasies, laaibalansering;
  • sekuriteit: eindgebruiker-verifikasie en magtiging;
  • waarneembaarheid: opsporing, monitering, logging.

Almal van hulle kan op toepassingsvlak opgelos word, maar daarna sal u dienste nie meer "mikro" wees nie. Al die ekstra moeite om hierdie kwessies aan te spreek is 'n vermorsing van maatskappyhulpbronne wat direk vir besigheidswaarde gebruik kan word. Oorweeg 'n voorbeeld:

Projekbestuurder: Hoe lank neem dit om 'n terugvoerfunksie by te voeg?
Ontwikkelaar: Twee naellope.

MP: Wat?.. Dis net CRUD!
R: Om CRUD te doen is die maklike deel van die taak, maar ons moet steeds gebruikers en dienste verifieer en magtig. Aangesien die netwerk onbetroubaar is, sal jy herhaalde versoeke moet implementeer, asook stroombreker patroon in kliënte. Ook, om seker te maak dat die hele stelsel nie ineenstort nie, time-outs en schotten (Sien later in die artikel vir meer besonderhede oor beide genoemde patrone.), en om probleme op te spoor, monitering, opsporing, […]

MP: O, laat ons dan net hierdie kenmerk in die produkdiens plaas.

Ek dink die idee is duidelik: die hoeveelheid stappe en moeite wat nodig is om 'n enkele diens by te voeg, is groot. In hierdie artikel sal ons kyk hoe Istio al die kompleksiteit wat hierbo genoem word (nie geteiken deur besigheidslogika nie) van dienste verwyder.

Terug na mikrodienste met Istio. Deel 1

Let daarop: Die artikel veronderstel dat jy werkende kennis van Kubernetes het. Andersins beveel ek aan om te lees my inleiding tot Kubernetes en dan eers voort om hierdie materiaal te lees.

Istio idee

In 'n wêreld sonder Istio rig een diens direkte versoeke aan 'n ander, en in geval van mislukking moet die diens dit self hanteer: maak 'n nuwe poging, maak voorsiening vir 'n time-out, maak 'n stroombreker oop, ens.

Terug na mikrodienste met Istio. Deel 1
Netwerkverkeer in Kubernetes

Istio, aan die ander kant, bied 'n gespesialiseerde oplossing wat heeltemal apart is van dienste en funksies deur met netwerkinteraksie in te meng. En so implementeer dit:

  • fout verdraagsaamheid: gebaseer op die statuskode in die antwoord, verstaan ​​dit of die versoek misluk het en dien dit weer in.
  • Kanarie-uitrol: herlei slegs 'n vaste persentasie versoeke na die nuwe weergawe van die diens.
  • Monitering en Metrieke: hoe lank het dit geneem vir die diens om te reageer?
  • Naspeuring en waarneembaarheid: Voeg spesiale opskrifte by elke versoek en spoor dit oor die groepie na.
  • sekuriteit: Haal 'n JWT-token op, verifieer en magtig gebruikers.

Hierdie is net 'n paar van die moontlikhede (regtig net 'n paar!) om jou te intrigeer. Kom ons duik nou in die tegniese besonderhede!

Argitektuur

Istio onderskep alle netwerkverkeer en pas 'n stel reëls daarop toe, en plaas 'n slim proxy in die vorm van 'n syspanhouer in elke peul. Gevolmagtigdes wat alle moontlikhede aktiveer, vorm a Data Vliegtuig, en hulle kan dinamies aangepas word met Beheervliegtuig.

Data Vliegtuig

Die gevolmagtigdes wat in die peule geplaas word, stel Istio in staat om maklik die vereistes te bereik wat ons benodig. Kom ons kyk byvoorbeeld na die herprobasies en stroombrekerfunksies.

Terug na mikrodienste met Istio. Deel 1
Hoe herprobasies en stroomonderbreking in Envoy geïmplementeer word

Opsomming:

  1. gesant (Ons praat van 'n instaanbediener wat in 'n syspanhouer geleë is, wat versprei word en hoe aparte produk - ongeveer. vertaal.) stuur 'n versoek na die eerste instansie van diens B en misluk.
  2. Envoy Sidecar probeer weer (weer probeer). (1)
  3. Die mislukte versoek word teruggestuur na die gevolmagtigde wat dit geroep het.
  4. Dit maak die stroombreker oop en roep die volgende diens vir daaropvolgende versoeke. (2)

Dit beteken dat jy nie die volgende Herprobeer-biblioteek hoef te gebruik nie, jy hoef nie jou eie implementering van Circuit Breaking and Service Discovery in die X-, Y- of Z-programmeertaal te maak nie. Dit alles en meer is beskikbaar uit die boks in Istio en vereis nie geen kode verander.

Puik! Nou wil jy dalk saam met Istio op reis gaan, maar daar is nog twyfel, oop vrae. As dit 'n universele oplossing is vir alle geleenthede in die lewe, dan het jy 'n regmatige vermoede: al sulke oplossings is immers in werklikheid nie geskik vir enige geval nie.

En uiteindelik vra jy: "Is dit aanpasbaar?"

Nou is jy gereed vir 'n seereis – en kom ons maak kennis met Control Plane.

Beheervliegtuig

Dit bestaan ​​uit drie komponente: Pilot, Mixer и Citadel, wat saam Gesante konfigureer om verkeer te stuur, beleide toe te pas en telemetriedata in te samel. Skematies lyk dit alles so:

Terug na mikrodienste met Istio. Deel 1
Interaksie van beheervlak met datavlak

Gesante (d.w.s. datavlak) is gekonfigureer met Kubernetes CRD (Custom Resource Definitions) gedefinieer deur Istio en spesifiek ontwerp vir hierdie doel. Wat dit vir jou beteken, is dat dit net nog 'n hulpbron in Kubernetes is met 'n bekende sintaksis. Sodra dit geskep is, sal hierdie hulpbron deur die beheervliegtuig opgetel word en op Gesante toegepas word.

Verhouding van dienste aan Istio

Ons het Istio se verhouding tot dienste beskryf, maar nie andersom nie: hoe hou dienste verband met Istio?

Om eerlik te wees, dienste weet van die teenwoordigheid van Istio sowel as visse weet van water, wanneer hulle hulself afvra: "Wat is water in elk geval?".

Terug na mikrodienste met Istio. Deel 1
illustrasie Victoria Dimitrakopoulos: Hoe hou jy van die water? - Wat is water in elk geval?

U kan dus 'n werkende groepering neem en nadat u die Istio-komponente ontplooi het, sal die dienste daarin aanhou werk, en nadat u hierdie komponente verwyder het, sal alles weer reg wees. Dit is duidelik dat u in hierdie geval die geleenthede wat Istio bied, sal verloor.

Genoeg teorie – kom ons sit hierdie kennis in die praktyk!

Istio in die praktyk

Istio benodig 'n Kubernetes-kluster met ten minste 4 vCPU's en 8 GB RAM beskikbaar. Om die groep vinnig te verhoog en die instruksies uit die artikel te volg, beveel ek aan om die Google Wolk-platform te gebruik, wat nuwe gebruikers bied gratis $300.

Nadat u die groepering geskep het en toegang tot Kubernetes deur die konsolehulpmiddel opgestel het, kan u Istio installeer deur die Helm-pakketbestuurder.

Roer installasie

Installeer die Helm-kliënt op jou rekenaar soos beskryf in amptelike dokumentasie. Ons sal dit gebruik om sjablone te genereer vir die installering van Istio in die volgende afdeling.

Installasie

Laai Istio-hulpbronne af van nuutste vrystelling (die oorspronklike skrywer se skakel na weergawe 1.0.5 is verander na die huidige een, d.w.s. 1.0.6 - ongeveer transl.), onttrek die inhoud na 'n enkele gids, waarna ek sal verwys as [istio-resources].

Vir maklike identifikasie van Istio-hulpbronne, skep 'n naamruimte in die K8s-groepering istio-system:

$ kubectl create namespace istio-system

Voltooi die installasie deur na die gids te navigeer [istio-resources] en voer die opdrag uit:

$ 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

Hierdie opdrag sal die sleutelkomponente van Istio na 'n lêer uitvoer istio.yaml. Ons het die standaard sjabloon vir onsself gewysig deur die volgende parameters te spesifiseer:

  • global.mtls.enabled geïnstalleer in false (m.a.w. mTLS-verifikasie is gedeaktiveer - ongeveer transl.)om ons dating proses te vereenvoudig;
  • tracing.enabled maak versoekopsporing met Jaeger moontlik;
  • kiali.enabled installeer Kiali in 'n groepering om dienste en verkeer te visualiseer;
  • grafana.enabled installeer Grafana om die versamelde statistieke te visualiseer.

Pas die gegenereerde hulpbronne toe met die opdrag:

$ kubectl apply -f istio.yaml

Installasie van Istio in die cluster is voltooi! Wag totdat alle peule in die naamruimte is istio-system sal in staat wees om Running of Completeddeur die opdrag hieronder uit te voer:

$ kubectl get pods -n istio-system

Ons is nou gereed om voort te gaan na die volgende afdeling, waar ons die toepassing sal verhoog en uitvoer.

Sentimentanalise Toepassingsargitektuur

Kom ons gebruik die voorbeeld van die Sentiment Analysis-mikrodienstoepassing wat in die reeds genoemde gebruik is Inleidingsartikel tot Kubernetes. Dit is kompleks genoeg om die moontlikhede van Istio in die praktyk te wys.

Die toepassing bestaan ​​uit vier mikrodienste:

  1. Service SA-Frontend, wat die front-end-toepassing op Reactjs bedien;
  2. Service SA WebApp, wat Sentimentanalise-navrae bedien;
  3. Service SA Logikawat homself verrig sentiment analise;
  4. Service SA Terugvoer, wat terugvoer van gebruikers ontvang oor die akkuraatheid van die analise wat uitgevoer is.

Terug na mikrodienste met Istio. Deel 1

In hierdie diagram sien ons, benewens dienste, ook die ingangbeheerder, wat in Kubernetes inkomende versoeke na die ooreenstemmende dienste stuur. Istio gebruik 'n soortgelyke konsep as deel van die Ingress Gateway, waarvan besonderhede sal volg.

Begin 'n toepassing met 'n proxy van Istio

Vir verdere bewerkings wat in die artikel genoem word, kloon u bewaarplek istio-meesterskap. Dit bevat die toepassing en manifeste vir Kubernetes en Istio.

Syspan insit

Invoeging kan gemaak word outomaties of hand. Om syspanhouers outomaties in te voeg, moet jy die etiket op die naamruimte stel istio-injection=enabled, wat gedoen word deur die volgende opdrag:

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

Nou is elke pod wat in die verstek naamruimte (default) sal sy syspanhouer kry. Om dit te verifieer, laat ons 'n toetstoepassing ontplooi deur na die wortelgids van die bewaarplek te gaan [istio-mastery] en voer die volgende opdrag uit:

$ 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

Nadat u die dienste ontplooi het, maak seker dat die peule twee houers het (met die diens self en sy syspan) deur die opdrag uit te voer kubectl get pods en maak seker dat onder die kolom READY waarde gespesifiseer 2/2, wat simboliseer dat beide houers loop:

$ 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

Visueel lyk dit so:

Terug na mikrodienste met Istio. Deel 1
Gesant volmag in een van die peule

Noudat die toepassing aan die gang is, moet ons toelaat dat inkomende verkeer die toepassing binnegaan.

Ingangpoort

Die beste praktyk om dit te bereik (laat verkeer in die groep toe) is via Ingangpoort in Istio, wat aan die "rand" van die groep geleë is en jou toelaat om Istio-kenmerke soos roetering, vragbalansering, sekuriteit en monitering vir inkomende verkeer te aktiveer.

Die Ingress Gateway-komponent en die diens wat dit na buite stuur, is tydens die Istio-installasie op die groep geïnstalleer. Om die eksterne IP-adres van 'n diens uit te vind, hardloop:

$ 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

Ons sal voortgaan om toegang tot die toepassing te kry met hierdie IP (ek sal daarna verwys as EXTERNAL-IP), so gerieflikheidshalwe sal ons die waarde na 'n veranderlike skryf:

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

As jy nou probeer om toegang tot hierdie IP deur 'n blaaier te kry, sal jy 'n Service Unavailable-fout kry, want by verstek blokkeer Istio alle inkomende verkeertotdat Gateway gedefinieer is.

Gateway hulpbron

Gateway is 'n CRD (Custom Resource Definition) in Kubernetes, gedefinieer nadat Istio in 'n cluster geïnstalleer is en die vermoë moontlik maak om poorte, protokol en gashere te spesifiseer waarvoor ons inkomende verkeer wil toelaat.

In ons geval wil ons HTTP-verkeer op poort 80 vir alle gashere toelaat. Die probleem word deur die volgende definisie besef (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:
- "*"

Hierdie konfigurasie het geen verduideliking nodig nie, behalwe vir die kieser istio: ingressgateway. Met hierdie kieser kan ons spesifiseer op watter Ingress Gateway die konfigurasie moet toegepas word. In ons geval is dit die Ingress Gateway-beheerder, wat by verstek in Istio geïnstalleer is.

Die konfigurasie word toegepas deur die volgende opdrag te roep:

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

Die poort laat nou toegang tot poort 80 toe, maar het geen idee waarheen om die versoeke te stuur nie. Hiervoor sal jy nodig hê Virtuele dienste.

Virtuele dienshulpbron

Die VirtualService vertel die Ingress Gateway hoe om versoeke te stuur wat binne die groep toegelaat word.

Versoeke na ons aansoek wat deur die http-gateway kom, moet na die sa-frontend, sa-web-app en sa-terugvoerdienste gestuur word:

Terug na mikrodienste met Istio. Deel 1
Roetes wat met VirtualServices gekonfigureer moet word

Oorweeg die versoeke wat aan SA-Frontend gestuur moet word:

  • Presiese passing langs die pad / moet na SA-Frontend gestuur word om index.html te kry;
  • Paadjies met 'n voorvoegsel /static/* moet na SA-Frontend gestuur word om statiese lêers wat in die frontend gebruik word, soos CSS en JavaScript te kry;
  • Paadjies wat ooreenstem met die gereelde uitdrukking '^.*.(ico|png|jpg)$', moet aan SA-Frontend gestuur word, want Dit is die prente wat op die bladsy vertoon word.

Die implementering word bereik deur die volgende konfigurasie (sa-virtuele diens-ekstern.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

Belangrike punte:

  1. Hierdie virtuele diens verwys na versoeke wat deurkom http-poort;
  2. В destination definieer die diens waarna die versoeke gestuur word.

Let daarop: Die konfigurasie hierbo word in 'n lêer gestoor sa-virtualservice-external.yaml, wat ook instellings bevat vir roetering na SA-WebApp en SA-Terugvoer, maar is kortliks hier in die artikel verkort.

Pas VirtualService toe deur te skakel:

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

Let daarop: Wanneer ons Istio-hulpbronne toepas, vuur die Kubernetes API-bediener 'n gebeurtenis af wat die Istio-beheervliegtuig ontvang, en daarna word die nuwe konfigurasie op elke pod se Envoy-instaanbediener toegepas. En die Ingress Gateway-beheerder blyk nog 'n gesant te wees wat in die beheervlak gekonfigureer is. Dit alles lyk soos volg in die diagram:

Terug na mikrodienste met Istio. Deel 1
Istio-IngressGateway-konfigurasie vir versoekroetering

Sentimentanalise is nou beskikbaar op http://{EXTERNAL-IP}/. Moenie bekommerd wees as jy Nie Gevind-status kry nie: soms neem dit 'n bietjie langer vir die konfigurasie om in werking te tree en vir die Envoy-geheue om op te dateer.

Voordat u voortgaan, speel 'n bietjie met die toepassing om verkeer te genereer. (die teenwoordigheid daarvan is nodig vir duidelikheid in daaropvolgende aksies - ongeveer vertaal.).

Kiali: waarneembaarheid

Voer die volgende opdrag uit om by die Kiali-administrasie-koppelvlak te kom:

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

…en oop http://localhost:20001/deur aan te meld as admin/admin. Hier sal jy baie nuttige kenmerke vind, byvoorbeeld om die opstelling van Istio-komponente na te gaan, dienste te visualiseer uit inligting wat ingesamel is deur netwerkversoeke te onderskep, antwoorde te kry op die vrae "Wie kontak wie?", "Watter weergawe van die diens ervaar mislukkings?” en so aan. Oor die algemeen, verken die moontlikhede van Kiali voordat u verder gaan met die visualisering van metrieke met Grafana.

Terug na mikrodienste met Istio. Deel 1

Grafana: visualisering van metrieke

Die maatstawwe wat in Istio versamel word, beland in Prometheus en word met Grafana gevisualiseer. Om by die Grafana-administrasie-koppelvlak te kom, voer die opdrag hieronder uit en maak dan oop 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

Deur op die spyskaart te klik What is This links bo en kies Istio Service Dashboard in die boonste linkerhoek, begin met diens sa-web-appom die versamelde maatstawwe te sien:

Terug na mikrodienste met Istio. Deel 1

Hier wag ons vir 'n leë en heeltemal vervelige optrede – die bestuur sal dit nooit goedkeur nie. Kom ons skep 'n klein vrag met die volgende opdrag:

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

Nou het ons baie mooier grafieke, en bykomend tot hulle, die wonderlike instrumente Prometheus vir monitering en Grafana vir die visualisering van statistieke, wat ons in staat sal stel om te leer oor prestasie, gesondheidstatus, verbeterings / agteruitgang in dienste met verloop van tyd.

Laastens, kom ons kyk na versoekopsporing in dienste.

Jaeger: opspoor

Ons sal opsporing nodig hê, want hoe meer dienste ons het, hoe moeiliker is dit om by die oorsaak van die mislukking uit te kom. Kom ons kyk na 'n eenvoudige geval uit die prentjie hieronder:

Terug na mikrodienste met Istio. Deel 1
Tipiese voorbeeld van 'n ewekansige mislukte versoek

Versoek kom, val - wat is die rede? Eerste diens? Of tweede? Daar is uitsonderings in beide - kom ons kyk na die logs van elkeen. Hoe gereeld het jy jouself al gevang om dit te doen? Ons werk is meer soos sagteware-speurders as ontwikkelaars ...

Dit is 'n wydverspreide probleem in mikrodienste en word opgelos deur verspreide opsporingstelsels, waarin dienste 'n unieke kop aan mekaar deurgee, waarna hierdie inligting na die opsporingstelsel herlei word, waar dit met die versoekdata vergelyk word. Hier is 'n illustrasie:

Terug na mikrodienste met Istio. Deel 1
TraceId word gebruik om die versoek te identifiseer

Istio gebruik Jaeger Tracer, wat 'n verskaffer-onafhanklike OpenTracing API-raamwerk implementeer. U kan toegang tot die Jaeger-gebruikerskoppelvlak verkry met die volgende opdrag:

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

Gaan nou na http://localhost:16686/ en kies 'n diens sa-web-app. As die diens nie in die aftreklys gewys word nie, wys/genereer aktiwiteit op die bladsy en werk die koppelvlak op. Klik daarna op die knoppie Soek spore, wat die mees onlangse spore sal wys - kies enige - gedetailleerde inligting oor alle spore sal verskyn:

Terug na mikrodienste met Istio. Deel 1

Hierdie spoor toon:

  1. Die versoek kom in istio-ingangpoort (dit is die eerste interaksie met een van die dienste, en 'n Trace ID word vir die versoek gegenereer), waarna die poort die versoek na die diens stuur sa-web-app.
  2. In diens sa-web-app die versoek word deur die Gesant-syspan opgetel, 'n "kind" word in die span geskep (dis hoekom ons dit in spore sien) en herlei word na die houer sa-web-app. (span - 'n logiese eenheid van werk in Jaeger, met 'n naam, die begintyd van die operasie en die duur daarvan. Spanninge kan genesteer en bestel word. 'n Gerigte asikliese grafiek van streke vorm 'n spoor. - ongeveer. vertaal.)
  3. Hier word die versoek volgens die metode verwerk sentimentontleding. Hierdie spore word reeds deur die toepassing gegenereer, d.w.s. hulle het kodeveranderings vereis.
  4. Vanaf hierdie oomblik word 'n POST-versoek geïnisieer in sa-logika. Spoor ID moet aangestuur word vanaf sa-web-app.
  5. ...

Let daarop: In stap 4 moet die toepassing die opskrifte sien wat deur Istio gegenereer is en dit aan daaropvolgende versoeke deurgee, soos in die prent hieronder getoon:

Terug na mikrodienste met Istio. Deel 1
(A) Kopaanstuur is die verantwoordelikheid van Istio; (B) Dienste is verantwoordelik vir opskrifte

Istio doen die grootste deel van die werk omdat genereer opskrifte vir inkomende versoeke, skep nuwe spanne in elke sysorg en stuur dit aan. Sonder om met opskrifte binne dienste te werk, sal die volle versoekspoorpad egter verlore gaan.

Die volgende opskrifte moet oorweeg word (aanstuur):

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

Dit is 'n eenvoudige taak, maar om die implementering daarvan te vereenvoudig, is daar reeds baie biblioteke - byvoorbeeld, in die sa-web-app-diens, stuur die RestTemplate-kliënt hierdie opskrifte aan as jy bloot die Jaeger- en OpenTracing-biblioteke byvoeg sy afhanklikhede.

Let daarop dat die Sentiment Analysis-toepassing implementerings in Flask, Spring en ASP.NET Core demonstreer.

Noudat dit duidelik is wat ons uit die boks kry (of amper uit die boks), kom ons kyk na fyn ingestelde roetering, netwerkverkeerbestuur, sekuriteit en meer!

Let wel. vertaal.: lees daaroor in die volgende deel van materiaal op Istio van Rinor Maloku, waarvan die vertalings in die nabye toekoms in ons blog sal volg. UPDATE (14 Maart): Tweede deel reeds gepubliseer.

PS van vertaler

Lees ook op ons blog:

Bron: will.com

Voeg 'n opmerking