Ku laabo adeegaha yaryar ee Istio. Qaybta 1

Ku laabo adeegaha yaryar ee Istio. Qaybta 1

Ogow. turjumiMeshes-ka adeeggu waxa uu noqday xal ku haboon kaabayaasha casriga ah ee codsiyada ka dib qaab dhismeedka adeega-yaraha. In kasta oo Istio laga yaabo inuu ku jiro bushimaha injineero badan oo DevOps ah, waa badeecad cadaalad ah oo cusub, in kasta oo la dhammaystiro marka la eego awoodaha ay bixiso, waxay u baahan kartaa waqti aad u badan si aad u barato. Injineer Jarmal ah Rinor Maloku, oo mas'uul ka ah xisaabinta daruuraha macaamiisha waaweyn ee shirkadda isgaarsiinta Orange Networks, ayaa qoray qalab taxane ah oo cajiib ah oo kuu oggolaanaya inaad si deg deg ah oo qoto dheer u dhex gasho Istio. Wuxuu ku bilaabay sheekadiisa waxa uu Istio qaban karo guud ahaan iyo sida aad si dhakhso ah ugu arki karto indhahaaga.

Istio - Mashruuc Isha Furan oo la sameeyay iyadoo lala kaashanayo kooxaha Google, IBM iyo Lyft. Waxay xallisaa kakanaanta ka soo baxa codsiyada ku salaysan adeeg-yaraha, sida:

  • Maamulka GaadiidkaWakhtiga ka baxay, isku-dayga, dheelli-tirka culayska;
  • Amniga: xaqiijinta dhamaadka isticmaalaha iyo oggolaanshaha;
  • U fiirsashada: baafinta, la socodka, gaynta.

Dhammaan kuwan waxaa lagu xallin karaa heerka codsiga, laakiin intaa ka dib adeegyadaadu ma sii ahaan doonaan "micro". Dhammaan dadaalka dheeraadka ah ee lagu xallinayo dhibaatooyinkan waa luminta hantida shirkadda oo si toos ah loogu isticmaali karo qiimaha ganacsiga. Bal aan tusaale u soo qaadano:

Maareeyaha Mashruuca: Muddo intee le'eg ayay qaadanaysaa in lagu daro sifada jawaab celinta?
Horumariye: Laba sprints.

Xildhibaan: Waa maxay?... Waa CRUD kaliya!
R: Samaynta CRUD waa qaybta ugu fudud, laakiin waxaan wali u baahanahay inaan xaqiijino oo aan ogolaano isticmaalayaasha iyo adeegyada. Maadaama shabakadu tahay mid aan la isku halayn karin, waxaad u baahan doontaa inaad fuliso codsiyada soo noqnoqda, iyo sidoo kale qaabka wareegga wareegga macaamiisha. Sidoo kale, si aad u hubiso in nidaamka oo dhan aanu shil ku iman, waxaad u baahan doontaa waqti-gooyo iyo bulkheads (si aad u hesho tafaasiil dheeraad ah oo ku saabsan labada qaab ee la soo sheegay, eeg dambe ee maqaalka - qiyaastii. tarjumaad.), iyo si loo ogaado dhibaatooyinka, la socodka, raadinta, [...]

MP: Oh, markaas aan gelinno sifadan adeegga Alaabta.

Waxaan u maleynayaa in fikraddu ay caddahay: qaddarka tillaabooyinka iyo dadaalka loo baahan yahay in lagu daro hal adeeg waa mid aad u weyn. Maqaalkan, waxaan ku eegi doonaa sida Istio uu uga saaro dhammaan kakanaanta kor ku xusan (taas oo aan loogu talagalin inay noqoto macquul ganacsi) adeegyada.

Ku laabo adeegaha yaryar ee Istio. Qaybta 1

tacliiqMaqaalkani waxa uu u malaynayaa in aad aqoon shaqo u leedahay Kubernetes. Haddii kale, waxaan ku talinayaa in la akhriyo hordhacayga Kubernetes oo kaliya intaa ka dib sii wad akhrinta qoraalkan.

Fikradda ah

Adduunyada aan Istio lahayn, hal adeeg ayaa si toos ah u codsada mid kale, haddii ay dhacdo guuldarro, adeeggu waa inuu iskiis u maamulaa: samee isku day cusub, bixi waqti xaddidan, fur furaha wareegga, iwm.

Ku laabo adeegaha yaryar ee Istio. Qaybta 1
Taraafikada shabakada ee Kubernetes

Istio waxay bixisaa xal gaar ah, oo gebi ahaanba ka soocay adeegyada oo ku shaqeeya faragelinta isgaarsiinta shabakada. Oo sidaas ayay u fulisaa:

  • dulqaadka qaladka: Iyada oo ku saleysan code-ka jawaabta, waxay fahamsan tahay in codsigu guuldareystay oo dib loo fulinayo.
  • Soo-bandhigista Canary: waxa uu u jiheeyaa kaliya boqolkiiba go'an ee codsiyada nooca cusub ee adeega.
  • Kormeerka iyo cabbiradaMuddo intee le'eg ayay qaadatay in adeeggu ka jawaabo?
  • Baafinta iyo La fiirsashada: Ku dara madax gaar ah codsi kasta oo ka raad raacaa kutlada.
  • Amniga: Soo celisa summada JWT, xaqiijisa oo oggolaada isticmaalayaasha.

Kuwani waa dhawr ka mid ah fursadaha (dhab ahaantii dhowr!) si ay kuu xiiso galiyaan. Hadda aan u dhex galno faahfaahinta farsamada!

Dhismaha Istio

Istio waxay ka hortagtaa dhammaan taraafikada shabakada waxayna ku dabaqdaa xeerar, isaga oo geliya wakiil caqli-gal ah oo qaab weel dhinaceed ah mid kasta. Wakiilo dhaqaajiya dhammaan awoodaha waxay sameeyaan a Diyaarada Xogta, waxaana si firfircoon loo habayn karaa iyadoo la isticmaalayo Diyaaradda Xakamaynta.

Diyaarada Xogta

Proxies-ka la geliyo pods-ka ayaa u oggolaanaya Istio inuu si fudud u buuxiyo shuruudaha aan u baahanahay. Tusaale ahaan, aynu eegno dib u tijaabinta iyo hawlaha wareegyada.

Ku laabo adeegaha yaryar ee Istio. Qaybta 1
Sida dib-u-eegisyada iyo kala-goynta wareegyada loogu fuliyo Ergayga

Soo koobid:

  1. Ergayga (waxaanu ka hadlaynaa wakiil ku yaal weel dhinaceed ah, kaas oo loo qaybiyo sida alaab gaar ah - qiyaastii. turjumi.) wuxuu codsi u diraa heerka koowaad ee adeega B wuuna ku guuldareystay.
  2. Ergeyga Sidecar ayaa mar kale isku dayaya (dib u tijaabi). (1)
  3. Codsigu wuu guuldarraystay waxaana lagu celiyaa wakiilkii u yeedhay.
  4. Tani waxay fureysaa Wareegtada Wareegga waxayna wacdaa adeegga xiga ee codsiyada xiga. (2)

Tani waxay ka dhigan tahay inaadan isticmaalin maktabad kale oo Dib-u-isku-day ah, maahan inaad adigu sameysato hirgelinta wareegga wareegga iyo Raadinta Adeegga ee luuqadda barnaamijka X, Y ama Z. Dhammaan waxaas iyo wax ka badan ayaa laga heli karaa sanduuqa dhexdiisa gudaha Istio oo uma baahna maya isbeddelka koodka.

Wayn! Hadda waxaa laga yaabaa inaad rabto inaad safar la baxdo Istio, laakiin wali waxaad haysataa xoogaa shaki ah, su'aalo furan. Haddii tani ay tahay xal caalami ah oo loogu talagalay dhammaan xaaladaha nolosha, markaa waxaad leedahay shaki dabiici ah: ka dib, dhammaan xalalka noocaas ah ee dhabta ah waxay u noqdaan kuwo aan ku habboonayn kiis kasta.

Ugu dambayntiina waxaad waydiisaa: "Miyaa la beddeli karaa?"

Hadda waxaad diyaar u tahay safarka badda, aan is barano Diyaaradda Xakamaynta.

Diyaaradda Xakamaynta

Waxay ka kooban tahay saddex qaybood: Pilot, Mashiinka ΠΈ khan, kuwaas oo ka wada shaqeeya habaynta Ergooyinka si ay u maraan taraafikada, dhaqan geliyaan siyaasadaha, iyo ururinta xogta telemetry. Nidaam ahaan waxay u egtahay sidan:

Ku laabo adeegaha yaryar ee Istio. Qaybta 1
Is dhexgalka Diyaaradda Xakamaynta ee Diyaaradda Xogta

Ergada (sida diyaarada xogta) ayaa lagu habeeyey iyadoo la isticmaalayo Kubernetes CRD (Qeexitaannada Kheyraadka Gaarka ah) waxaa qeexay Istio oo si gaar ah loogu talagalay ujeedadan. Waxa ay tani adiga kugu tahay waa inay u muuqdaan inay yihiin kheyraad kale oo Kubernetes ah oo leh eray-bixin la yaqaan. Marka la abuuro, kheyraadkan waxaa qaadi doonta diyaaradda kontoroolka waxaana lagu dabaqi doonaa Ergada.

Xiriirka adeegyada Istio

Waxaan ku sifeynay xiriirka Istio ee adeegyada, laakiin ma ahan dhanka kale: sidee ayay adeegyadu ula xiriiraan Istio?

Si daacad ah, adeegyadu waxay ogyihiin joogitaanka Istio sida kalluunku u yahay biyaha marka ay is weydiiyaan, "Waa maxay biyuhu si kastaba?"

Ku laabo adeegaha yaryar ee Istio. Qaybta 1
Sawir Victoria DimitakopoulosSideed u jeceshahay biyaha? - si kastaba waa maxay biyuhu?

Sidaa darteed, waxaad qaadan kartaa koox shaqo ka dib markaad geyso qaybaha Istio, adeegyada ku yaal waxay sii wadi doonaan inay shaqeeyaan, ka dib markaad ka saarto qaybahan, wax waliba way fiicnaan doonaan mar kale. Way caddahay in kiiskan aad waayi doonto awoodaha uu bixiyay Istio.

Aragti nagu filan - aan ku dhaqan galno aqoontan!

Istio ficil ahaan

Istio wuxuu u baahan yahay kutlada Kubernetes oo leh ugu yaraan 4 vCPUs iyo 8 GB ee RAM la heli karo. Si aad si dhakhso ah u dejiso koox ah oo aad raacdo tilmaamaha maqaalka, waxaan ku talinayaa isticmaalka Google Cloud Platform, kaas oo siiya isticmaalayaasha cusub $300 oo bilaash ah.

Ka dib markii la abuuro koox iyo habaynta gelitaanka Kubernetes iyada oo loo marayo utility console, waxaad ku rakibi kartaa Istio maareeyaha xirmada Helm.

Ku rakibida Helm

Ku rakib macmiilka Helm kombiyuutarkaaga, sida lagu sharaxay dukumeenti rasmi ah. Waxaan tan u isticmaali doonaa si aan u soo saarno habab lagu rakibo Istio qaybta xigta.

Ku rakibida Istio

Ka soo deji ilaha Istio sii dayntii ugu dambeysay (Xiriirka qoraaga asalka ah ee nooca 1.0.5 ayaa loo beddelay kan hadda jira, ie. 1.0.6 - qiyaastii. tarjumaad.), soo saar waxa ku jira hal hage, oo aan wici doono hadda ka dib [istio-resources].

Si aad si sahal ah u aqoonsato ilaha Istio, ka samee meel magac ah kooxda K8s istio-system:

$ kubectl create namespace istio-system

Buuxi rakibaadda adiga oo aadaya hagaha [istio-resources] oo socodsiiya amarka:

$ 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

Amarkani wuxuu soo saari doonaa qaybaha muhiimka ah ee Istio faylka istio.yaml. Waxaan wax ka bedelnay qaab-dhismeedka caadiga ah si aan nafteena ku habboono, annagoo qeexnay cabbirrada soo socda:

  • global.mtls.enabled lagu rakibay false (tusaale ahaan, aqoonsiga mTLS waa naafo - qiyaastii.)si loo fududeeyo habka shukaansiga;
  • tracing.enabled waxaa ka mid ah raadinta codsiga iyadoo la isticmaalayo Jaeger;
  • kiali.enabled Ku rakibida Kiali koox si ay u aragto adeegyada iyo taraafikada;
  • grafana.enabled wuxuu rakibaa Grafana si uu u arko cabbirrada la ururiyey.

Aan u isticmaalno agabka la soo saaray amarka:

$ kubectl apply -f istio.yaml

Ku rakibida Istio ee kutlada waa dhammaatay! Sug ilaa dhammaan galalka ay ku jiraan booska magaca istio-system awood u yeelan doonaan Running ama Completedadigoo raacaya amarka hoose:

$ kubectl get pods -n istio-system

Hadda waxaan diyaar u nahay inaan ku sii wadno qaybta xigta, halkaas oo aan ka heli doono codsiga iyo socodsiinta.

Naqshadeynta codsiga falanqaynta dareenka

Aynu isticmaalno tusaalaha arjiga falanqaynta dareenka ee adeeg-yaraha ee loo adeegsaday kuwan hore loo sheegay Maqaalka hordhaca ah ee Kubernetes. Waa mid adag oo ku filan in lagu muujiyo kartida Istio ficil ahaan.

Codsigu wuxuu ka kooban yahay afar adeeg-yar:

  1. adeegga SA-Frontend, kaas oo u adeega afka hore ee codsiga Reactjs;
  2. adeegga SA-WebApp, kaas oo u adeega weydiimaha falanqaynta dareenka;
  3. adeegga SA-Logic, taas oo iskeed u shaqeysa falanqaynta dareenka;
  4. adeegga SA-celinta, kaas oo ka hela jawaab celin isticmaalayaasha ku saabsan saxnaanta falanqaynta.

Ku laabo adeegaha yaryar ee Istio. Qaybta 1

Jaantuskan, marka lagu daro adeegyada, waxaanu sidoo kale ku aragnaa Kontoroolka Gudaha, kaas oo Kubernetes ku yaala wadooyinka soo gala codsiyada adeegyada ku habboon. Istio waxay isticmaashaa fikrad la mid ah gudaha Gateway-ka Gateway, tafaasiil dheeri ah oo ku saabsan taas ayaa raaci doonta.

Ku socodsiinta codsiga wakiil ka socda Istio

Hawlgallada dheeraadka ah ee lagu sheegay maqaalka, xidho kaydkaaga istio-sare. Waxay ka kooban tahay codsiga iyo muujinta Kubernetes iyo Istio.

Gelida gawaarida dhinaceeda

Gelida waa la samayn karaa si toos ah ama gacanta. Si aad si otomaatig ah u geliso weelasha baabuurta dhinaceeda, waxaad u baahan doontaa inaad calaamad u dejiso meesha magaca istio-injection=enabled, kaas oo lagu sameeyo amarka soo socda:

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

Hadda boodh kasta oo la geyn doono goobta magaca caadiga ah (default) waxay heli doontaa weelkeeda dhinaca baabuurka. Si loo xaqiijiyo tan, aynu dirno arjiga tijaabada anagoo tagayna tusaha xididka ee kaydka [istio-mastery] oo socodsiiya amarka soo socda:

$ 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

Markaan adeegyadii geynay, aan eegno in boorashyadu ay leeyihiin laba weel (oo leh adeegga laftiisa iyo baabuurka dhinaceeda) annagoo ku shaqeynayna amarka kubectl get pods iyo hubinta in tiirka hoostiisa READY qiimo cayiman 2/2, oo astaan ​​u ah in labada weel ay socdaan:

$ 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

Muuqaal ahaan waxay u egtahay sidan:

Ku laabo adeegaha yaryar ee Istio. Qaybta 1
Ergeyga wakiil ka ah mid ka mid ah galalka

Hadda arjigu wuu shaqaynayaa, waxaanu u baahan doonaa inaanu ogolaano taraafikada soo galaya inay soo galaan codsiga.

Gateway ka soo gelida

Habka ugu fiican ee tan lagu gaari karo (u ogolow taraafikada kooxda) waa la maraa Gateway ka soo gelida gudaha Istio, taas oo ku taal "cirka" kooxda waxayna kuu ogolaaneysaa inaad awood u yeelatid sifooyinka Istio sida jiheynta, isku dheelitirka culeyska, amniga iyo la socodka gaadiidka soo socda.

Qaybta Ingress Gateway iyo adeegga u soo gudbiya dibadda ayaa lagu rakibay kutlada inta lagu jiro rakibidda Istio. Si aad u ogaato ciwaanka IP-ga ee adeega, orod:

$ 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

Waxaan sii wadi doonaa gelitaanka arjiga annagoo adeegsanayna IP-kan (waxaan u tixraaci doonaa sida EXTERNAL-IP), si ay ugu habboonaato waxaan u qori doonaa qiimaha doorsoome:

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

Haddii aad isku daydo inaad hadda ka gasho IP-gan browserka, waxaad heli doontaa cilad aan la heli karin adeegga, sababtoo ah Sida caadiga ah Istio wuxuu xannibaa dhammaan taraafikada soo galaya, Gateway weli lama qeexin.

Ilaha Gateway

Gateway waa CRD (Qeexida Kheyraadka Gaarka ah) ee Kubernetes, oo lagu qeexay ka dib markii lagu rakibo Istio kooxda oo awood u leh in lagu qeexo dekedaha, borotokoolka iyo martigeliyayaasha kuwaas oo aan rabno inaan u oggolaano taraafikada soo socota.

Xaaladeena, waxaan rabnaa inaan u oggolaano taraafikada HTTP ee dekedda 80 dhammaan martigeliyayaasha. Hawsha waxaa lagu fuliyay qeexida soo socota (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:
- "*"

Qaabayntan wax sharraxaad ah uma baahna marka laga reebo cidda dooratay istio: ingressgateway. Xulashadan waxaan ku qeexi karnaa Kadinka Ingress-ka ee lagu dabaqayo qaabeynta. Xaaladeena, kani waa kantaroolaha Ingress Gateway, kaas oo si caadi ah loogu rakibay Istio.

Qaabaynta waxa lagu dabaqaa adoo wacaya amarka soo socda:

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

Albaabka hadda waxa uu ogolyahay gelitaanka dekedda 80, laakiin ma laha fikrad halka loo maro codsiyada. Tan waxaad u baahan doontaa Adeegyada Virtual.

Ilaha Adeegga Virtual

Adeegga 'VirtualService' wuxuu u sheegaa Kadinka Ingress-ka sida loo maro codsiyada loo ogolyahay kooxda dhexdeeda.

Codsiyada codsigayaga ka imanaya http-gateway waa in loo diraa sa-frontend, sa-web-app iyo adeegyada jawaab celinta:

Ku laabo adeegaha yaryar ee Istio. Qaybta 1
Wadooyinka u baahan in lagu habeeyo VirtualServices

Aynu eegno codsiyada loo diro SA-Frontend:

  • Ciyaarta saxda ah ee jidka / waa in loo diraa SA-Frontend si loo helo index.html;
  • Wadooyin hore loo sii cayimay /static/* waa in loo diraa SA-Frontend si loo helo faylal aan caadi ahayn oo loo isticmaalo dhinaca hore, sida CSS iyo JavaScript;
  • Wadooyinka ku habboon tibaaxaha caadiga ah '^.*.(ico|png|jpg)$', waa in loo diraa SA-Frontend, sababtoo ah Kuwani waa sawirada bogga lagu soo bandhigay.

Hirgelinta waxaa lagu gaaraa qaabeynta soo socota (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

Qodobbada muhiimka ah:

  1. Adeeggan Virtual waxa loola jeedaa codsiyada soo socda http-gateway;
  2. Π’ destination Adeegga codsiyada loo soo diro waa la go'aamiyay.

tacliiqQaabaynta sare waxa lagu kaydiyaa fayl sa-virtualservice-external.yaml, kaas oo sidoo kale ka kooban jaangooyooyin loogu talagalay marinka SA-WebApp iyo SA-Feedback, laakiin halkan lagu soo koobay maqaalka si kooban.

Aan codsano VirtualService annagoo waca:

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

tacliiqMarka aan isticmaalno ilaha Istio, Kubernetes API Server wuxuu abuuraa dhacdo ay heshay Diyaaradda Xakamaynta Istio, ka dibna qaabaynta cusub ayaa lagu dabaqayaa wakiil kasta oo Ergeyga ah. Iyo kontoroolka Gateway-ga Ingress-ka ayaa u muuqda inuu yahay Ergeyga kale ee lagu habeeyay Diyaaradda Xakamaynta. Waxaas oo dhami waxay u eg yihiin sidan jaantuska:

Ku laabo adeegaha yaryar ee Istio. Qaybta 1
Qaabeynta Istio-IngressGateway ee habaynta codsiga

Codsiga Falanqaynta Dareenka ayaa hadda la heli karaa http://{EXTERNAL-IP}/. Ha werwerin haddii aad hesho xaalad aan la helin: Mararka qaarkood waxa ay qaadataa wax yar in habayntu dhaqan gasho oo kaydinta Ergadu in ay cusboonaysiiso.

Kahor intaadan sii wadin, la ciyaar abka waxoogaa si aad u abuurto taraafikada. (joogitaanka ayaa lagama maarmaan u ah caddaynta ficilada xiga - qiyaastii. transl.).

Kiali: fiirsashada

Si aad u hesho interface-ka maamulka Kiali, ku orod amarka soo socda:

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

... oo furan http://localhost:20001/, Gelida sida admin/admin. Halkan waxaad ka heli doontaa sifooyin badan oo faa'iido leh, tusaale ahaan, si aad u hubiso qaabaynta qaybaha Istio, sawir adeegyada adoo isticmaalaya macluumaadka laga soo ururiyay codsiyada shabakada, u hel jawaabaha su'aalaha "Yaa la xidhiidhaya?", "Nooca adeegga ayaa la kulma guuldarrooyinka? iyo wixi la mida. Guud ahaan, sahamin kartida Kiali ka hor intaadan u dhaqaaqin inaad ku sawirto mitirka Grafana.

Ku laabo adeegaha yaryar ee Istio. Qaybta 1

Grafana: metrics visualization

Metrics laga soo ururiyay Istio waxay galaan Prometheus waxaana lagu sawiray Grafana. Si aad u hesho interface-ka maamulka Grafana, ku orod amarka hoose ka dibna fur 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

Gujinaya liiska Bogga Hore bidix sare iyo xulashada Dashboardka Adeegga Istio geeska bidix ee sare, ka bilow adeeg sa-web-appsi loo eego cabbirada la ururiyey:

Ku laabo adeegaha yaryar ee Istio. Qaybta 1

Waxa halkan nagu sugaya waa waxqabad madhan oo caajis ah - maamulku waligiis ma aqbali doono tan. Aan abuurno rar yar oo wata amarka soo socda:

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

Hadda waxaan haynaa garaafyo aad u fiican, oo iyaga lagu daro, aaladaha Prometheus ee cajiibka ah ee kormeerka iyo Grafana si loo sawiro cabbirada noo oggolaan doona inaan wax ka barano waxqabadka, caafimaadka, hagaajinta / hoos u dhaca adeegyada waqti ka dib.

Ugu dambeyntii, aan eegno codsiyada raadinta ee adeegyada.

Jaeger: baafin

Waxaan u baahan doonaa baafin sababtoo ah adeegyada badan ee aan haysano, way sii adkaanaysaa in la gaadho sababta fashilka. Bal aan eegno kiis fudud sawirka hoose:

Ku laabo adeegaha yaryar ee Istio. Qaybta 1
Tusaalaha caadiga ah ee codsiga fashilka random

Codsigu wuu yimaadaa, wuu dhacaa - waa maxay sababtu? Adeegga koowaad? Mise kan labaad? Labaduba waxa ka reeban - bal aynu eegno mid walba diiwaankiisa. Immisa jeer ayaad isku qabatay inaad sidan samaynayso? Shaqadeenu waxay la mid tahay baarayaasha software-ka marka loo eego kuwa horumariya...

Tani waa dhibaato caadi ah oo ka jirta microservices waxaana lagu xalliyaa hababka raadinta ee loo qaybiyo, kuwaas oo adeegyadu u gudbiyaan madax gaar ah midba midka kale, ka dib macluumaadkan waxaa loo gudbiyaa nidaamka raadinta, halkaas oo lagu barbar dhigo xogta codsiga. Waa tan tusaale:

Ku laabo adeegaha yaryar ee Istio. Qaybta 1
TraceId waxa loo isticmaalaa in lagu aqoonsado codsiga

Istio waxay isticmaashaa Jaeger Tracer, kaas oo fuliya qaab-dhismeedka API-ga OpenTracing-ka madax-bannaan ee iibiyaha. Waxaad geli kartaa is-dhexgalka isticmaalaha Jaeger amarkan soo socda:

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

Hadda u tag http://localhost:16686/ oo dooro adeeg sa-web-app. Haddii adeegga aan lagu muujin liiska hoos-u-hoosaadka, tus/dhal dhaqdhaqaaqa bogga oo cusboonaysii interface-ka. Intaa ka dib, dhagsii badhanka Raadi Raad-raac, kaas oo muujin doona raadadkii ugu dambeeyay - dooro mid kasta - macluumaad faahfaahsan oo ku saabsan dhammaan raadadka ayaa soo bixi doona:

Ku laabo adeegaha yaryar ee Istio. Qaybta 1

Raadraacan ayaa muujinaya:

  1. Codsiga ayaa soo galay istio-ingressgateway (tani waa is dhexgalka ugu horreeya ee mid ka mid ah adeegyada, waxaana loo sameeyay aqoonsiga Trace ee codsiga), ka dib albaabku wuxuu u soo diraa codsiga adeegga. sa-web-app.
  2. Adeegga sa-web-app Codsiga waxaa qaadaya Ergeyga dhinac gaariga, "ilmo" ayaa lagu abuuray taako (taasi waa sababta aan u aragno raadadka) oo loo sii jiheeyo weelka sa-web-app. (Span - unug macquul ah oo shaqo ah oo ku yaal Jaeger, oo leh magac, waqtiga bilawga hawlgalka iyo muddada. Taabooyin waa la buul oo la dalban karaa. Garaaf acyclic ah oo toosan oo taako ah ayaa sameeyay raad. - qiyaastii. turjumi.)
  3. Halkan codsiga waxaa lagu farsameeyaa habka dareenka Falanqaynta. Raad-raacyadan waxaa durba soo saaray arjiga, i.e. waxay u baahdeen isbedel kood.
  4. Laga bilaabo hadda, codsi POST ayaa la bilaabay sa-macquul. Aqoonsiga raadraaca waa in laga soo gudbiyaa sa-web-app.
  5. ...

tacliiqTallaabada 4, codsigu waa inuu arko madaxyada uu sameeyay Istio oo u gudbiyaa codsiyada dambe sida ka muuqata sawirka hoose:

Ku laabo adeegaha yaryar ee Istio. Qaybta 1
(A) Istio ayaa mas'uul ka ah gudbinta madax-madaxeedyada; (B) Adeegyada ayaa ka mas'uul ah madaxyada

Istio waxa uu qabtaa shaqada inteeda badan sababtoo ah... wuxuu abuuraa madaxyo codsiyada soo socda, wuxuu abuuraa taako cusub daryeel dhinac kasta wuxuuna sii gudbiyaa. Si kastaba ha ahaatee, iyada oo aan lala shaqayn madaxyada gudaha adeegyada, dariiqa raadraaca codsiga buuxa waa la lumin doonaa.

Waa in lagu xisaabtamaa madaxyada soo socda:

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

Tani ma aha hawl adag, laakiin si loo fududeeyo hirgelinteeda ayaa horeba u jirtay maktabado badan - tusaale ahaan, adeega sa-web-app, macmiilka RestTemplate wuxuu u gudbiyaa madaxyadan haddii aad si fudud ugu darto maktabadaha Jaeger iyo OpenTracing balwadihiisa.

Ogsoonow in codsiga falanqaynta dareenka uu muujinayo hirgelinta Flask, Guga, iyo ASP.NET Core.

Hadda oo ay caddahay waxa aan ka helayno sanduuqa (ama ku dhawaad ​​​​boorsada), aynu eegno hab-socodka habsan, maamulka taraafikada, amniga, iwm.!

Ogow. turjumiTan ku saabsan ka akhri qaybta xigta ee agabka ku yaal Istio ee Rinor Maloku, tarjumadoodu waxay ku socon doontaa blog-keena mustaqbalka dhow. WARSIDAHA (Maarso 14-keedii): Qaybta Labaad mar hore ayaa la daabacay.

PS ka turjumaan

Sidoo kale ka akhri boggayaga:

Source: www.habr.com

Add a comment