Bwererani ku microservices ndi Istio. Gawo 1

Bwererani ku microservices ndi Istio. Gawo 1

Zindikirani. transl.: Ma meshes a ntchito akhaladi yankho loyenera pazomangamanga zamakono pazogwiritsa ntchito motsatira kamangidwe ka microservice. Ngakhale Istio ikhoza kukhala pamilomo ya akatswiri ambiri a DevOps, ndi chinthu chatsopano chomwe, ngakhale chiri chokwanira malinga ndi luso lomwe limapereka, chingafunike nthawi yochuluka kuti muzolowerane nazo. Katswiri wa ku Germany Rinor Maloku, yemwe ali ndi udindo woyang'anira cloud computing kwa makasitomala akuluakulu ku kampani ya telecommunications Orange Networks, adalemba mndandanda wodabwitsa wa zipangizo zomwe zimakulolani kuti mulowe mu Istio mofulumira komanso mozama. Amayamba nkhani yake ndi zomwe Istio angachite nthawi zambiri komanso momwe mungadziwonere mwachangu ndi maso anu.

Istio - Pulojekiti ya Open Source yopangidwa mogwirizana ndi magulu a Google, IBM ndi Lyft. Imathetsa zovuta zomwe zimabwera muzogwiritsa ntchito ma microservices, monga:

  • Kuwongolera Magalimoto: kutha kwa nthawi, kuyesanso, kusanja katundu;
  • Chitetezo: kutsimikizika kwa ogwiritsa ntchito kumapeto ndi chilolezo;
  • Kuwoneka: kufufuza, kuyang'anira, kudula mitengo.

Zonsezi zitha kuthetsedwa pamlingo wofunsira, koma pambuyo pake mautumiki anu sadzakhalanso "micro". Khama lowonjezerapo kuti athetse mavutowa ndikuwononga chuma chamakampani chomwe chingagwiritsidwe ntchito mwachindunji pamtengo wabizinesi. Tiyeni tione chitsanzo:

Project Manager: Zimatenga nthawi yayitali bwanji kuti muwonjezere ndemanga?
Madivelopa: Mipikisano iwiri.

MP: Bwanji?.. Ndi CRUD basi!
R: Kuchita CRUD ndi gawo losavuta, koma tifunikabe kutsimikizira ndi kuvomereza ogwiritsa ntchito ndi ntchito. Popeza maukonde ndi osadalirika, muyenera kukhazikitsa zopempha mobwerezabwereza, komanso chitsanzo cha circuit breaker mu makasitomala. Komanso, kuti muwonetsetse kuti dongosolo lonse silikuwonongeka, mudzafunika nthawi yopuma komanso ma bulkheads (kuti mumve zambiri zamitundu yonse yomwe yatchulidwa, onani pambuyo pake m'nkhaniyo - pafupifupi transl.), ndi kuti muwone zovuta, kuyang'anira, kufufuza, [...]

MP: O, ndiye tiyeni tingoyika izi mu ntchito ya Product.

Ndikuganiza kuti lingaliro liri lomveka bwino: kuchuluka kwa masitepe ndi khama lofunikira kuti muwonjezere ntchito imodzi ndi yayikulu. M'nkhaniyi, tiwona momwe Istio imachotsera zovuta zonse zomwe tazitchula pamwambapa (zomwe sizinapangidwe kuti zikhale zomveka zamalonda) kuchokera ku mautumiki.

Bwererani ku microservices ndi Istio. Gawo 1

ndemanga: Nkhaniyi ikuganiza kuti muli ndi chidziwitso chogwira ntchito cha Kubernetes. Apo ayi, ndikupangira kuwerenga chiyambi changa ku Kubernetes ndipo pambuyo pake pitirizani kuwerenga nkhaniyi.

Istio lingaliro

M'dziko lopanda Istio, ntchito imodzi imapanga zopempha zachindunji kwa wina, ndipo ngati zitalephera, ntchitoyi iyenera kudzigwira yokha: kuyesera kwatsopano, perekani nthawi yopuma, tsegulani woyendetsa dera, ndi zina zotero.

Bwererani ku microservices ndi Istio. Gawo 1
Kuchuluka kwa ma network ku Kubernetes

Istio imapereka yankho lapadera, lolekanitsidwa kwathunthu ndi mautumiki ndikugwira ntchito mwa kusokoneza kulankhulana kwa intaneti. Ndiye imagwiritsa ntchito:

  • kulekerera zolakwika: Kutengera code code mu yankho, imamvetsetsa ngati pempholo lalephera ndikuyambiranso.
  • Kutulutsa kwa Canary: imangowongolera kuchuluka kwa zopempha ku mtundu watsopano wa ntchito.
  • Monitoring ndi metrics: Zinatenga nthawi yayitali bwanji kuti utumikiwo uyankhe?
  • Kufufuza ndi Kuwona: Imawonjezera mitu yapadera pa pempho lililonse ndikutsata gulu lonse.
  • Chitetezo: Imapeza chizindikiro cha JWT, imatsimikizira ndi kuvomereza ogwiritsa ntchito.

Izi ndi zochepa chabe mwa mwayi (zochepa kwenikweni!) kuti zikusangalatseni. Tsopano tiyeni tilowe muzambiri zaukadaulo!

Zomangamanga za Istio

Istio imalepheretsa kuchuluka kwa magalimoto pamanetiweki ndikuyikapo malamulo angapo, ndikuyika projekiti yanzeru ngati chidebe cham'mbali mu pod iliyonse. Ma proxies omwe amayatsa mphamvu zonse amapanga a Ndege ya Data, ndipo amatha kusinthidwa mosinthika pogwiritsa ntchito Control Ndege.

Ndege ya Data

Ma proxies olowetsedwa mu ma pod amalola Istio kukwaniritsa zofunikira zomwe tikufuna. Mwachitsanzo, tiyeni tiyesenso ndi ntchito za circuit breaker.

Bwererani ku microservices ndi Istio. Gawo 1
Momwe kuyesanso ndi kuswa madera kumakhazikitsidwa mu Envoy

Mwachidule:

  1. nthumwi (tikulankhula za proxy yomwe ili mu chidebe cham'mbali, chomwe chimagawidwa ngati osiyana mankhwala - pafupifupi. transl.) imatumiza pempho ku nthawi yoyamba ya utumiki B ndipo ikulephera.
  2. Evoy Sidecar ayesanso (yesanso). (1)
  3. Pempho lalephera ndipo libwezeredwa kwa woyitanira yemwe adayitcha.
  4. Izi zimatsegula Circuit Breaker ndikuyitanitsa msonkhano wotsatira pazopempha zotsatila. (2)

Izi zikutanthauza kuti simuyenera kugwiritsa ntchito laibulale ina Yesaninso, simuyenera kupanga nokha kukhazikitsa kwa Circuit Breaking ndi Service Discovery m'chinenero cha pulogalamu X, Y kapena Z. Zonsezi ndi zina zambiri zikupezeka m'bokosi. mu Istio ndipo safuna ayi kusintha kwa code.

Zabwino! Tsopano mungafune kupita paulendo ndi Istio, koma muli ndi kukayikira, mafunso otseguka. Ngati ili ndi yankho lachilengedwe pazochitika zonse m'moyo, ndiye kuti muli ndi chikayikiro chachilengedwe: pambuyo pake, mayankho onsewa amakhala osayenera pazochitika zilizonse.

Ndipo pamapeto pake mumafunsa kuti: "Kodi ndi makonda?"

Tsopano mwakonzekera ulendo wa panyanja, tiyeni tidziwe Control Plane.

Control Ndege

Lili ndi zigawo zitatu: Woyendetsa, Wosakaniza ΠΈ Citadel, zomwe zimagwirira ntchito limodzi kukonza Nthumwi kuti ziyendetse magalimoto, kutsata ndondomeko, ndi kusonkhanitsa deta ya telemetry. Mwadongosolo zonse zikuwoneka motere:

Bwererani ku microservices ndi Istio. Gawo 1
Kuyanjana kwa Control Plane ndi Data Plane

Nthumwi (i.e. dataplane) zimakonzedwa pogwiritsa ntchito Kubernetes CRD (Custom Resource Definitions) yofotokozedwa ndi Istio ndipo cholinga chake ndi ichi. Zomwe zikutanthauza kwa inu ndikuti akuwoneka ngati chida china ku Kubernetes chokhala ndi mawu odziwika bwino. Akapangidwa, gweroli lidzatengedwa ndi ndege yoyang'anira ndikugwiritsidwa ntchito kwa Nthumwi.

Ubale wa mautumiki ku Istio

Tafotokoza za ubale wa Istio ndi mautumiki, koma osati mobwerera: kodi mautumikiwa amagwirizana bwanji ndi Istio?

Kunena zowona, mautumiki amadziΕ΅a kukhalapo kwa Istio monga momwe nsomba zilili ndi madzi pamene amadzifunsa kuti, "Kodi madzi ndi chiyani?"

Bwererani ku microservices ndi Istio. Gawo 1
Chitsanzo Victoria Dimitrakopoulos: - Mumakonda madzi bwanji? - Madzi ndi chiyani?

Choncho, mukhoza kutenga gulu logwira ntchito ndipo mutatha kuyika zigawo za Istio, mautumiki omwe ali mmenemo adzapitiriza kugwira ntchito, ndipo mutatha kuchotsa zigawozi, zonse zidzakhala bwino. Zikuwonekeratu kuti mu nkhani iyi mudzataya mphamvu zoperekedwa ndi Istio.

Chiphunzitso chokwanira - tiyeni tigwiritse ntchito chidziwitsochi!

Istio mukuchita

Istio imafuna gulu la Kubernetes lokhala ndi osachepera 4 vCPU ndi 8 GB ya RAM yomwe ilipo. Kuti mukhazikitse gulu mwachangu ndikutsata malangizo a nkhaniyi, ndikupangira kugwiritsa ntchito Google Cloud Platform, yomwe imapereka ogwiritsa ntchito atsopano. kwaulere $300.

Mutapanga gulu ndikusintha mwayi wofikira Kubernetes kudzera pa chothandizira, mutha kukhazikitsa Istio kudzera pa Helm package manager.

Kuyika helm

Ikani kasitomala wa Helm pa kompyuta yanu, monga tafotokozera mu zolemba zovomerezeka. Tidzagwiritsa ntchito izi kupanga ma tempuleti oyika Istio mu gawo lotsatira.

Kukhazikitsa Istio

Tsitsani zothandizira za Istio kuchokera kutulutsidwa kwaposachedwa (ulalo wa wolemba woyamba ku mtundu 1.0.5 wasinthidwa kukhala wamakono, mwachitsanzo 1.0.6 - approx. transl.), chotsani zomwe zili m'ndandanda umodzi, zomwe ndidzaimbira [istio-resources].

Kuti muzindikire zida za Istio mosavuta, pangani malo a mayina mugulu la K8s istio-system:

$ kubectl create namespace istio-system

Malizitsani kukhazikitsa popita ku chikwatu [istio-resources] ndi kuyendetsa lamulo:

$ 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

Lamuloli litulutsa zigawo zazikulu za Istio ku fayilo istio.yaml. Tidasintha template yokhazikika kuti igwirizane ndi ife, kutchula magawo awa:

  • global.mtls.enabled adayikidwa mu false (i.e. kutsimikizika kwa mTLS kwayimitsidwa - pafupifupi.)kufewetsa zibwenzi zathu;
  • tracing.enabled kumaphatikizapo kufufuza kupempha pogwiritsa ntchito Jaeger;
  • kiali.enabled imayika Kiali mumagulu kuti muwonetsetse ntchito ndi magalimoto;
  • grafana.enabled imayika Grafana kuti muwone ma metric osonkhanitsidwa.

Tiyeni tigwiritse ntchito zinthu zopangidwa ndi lamulo:

$ kubectl apply -f istio.yaml

Kuyika kwa Istio pagulu kwatha! Dikirani mpaka masamba onse ali mumphika wamadzi istio-system adzatha Running kapena Completedpoyendetsa lamulo ili pansipa:

$ kubectl get pods -n istio-system

Tsopano ndife okonzeka kupitiriza mu gawo lotsatira, pamene tiyamba kugwiritsa ntchito pulogalamuyi.

Zomangamanga za Sentiment Analysis application

Tiyeni tigwiritse ntchito chitsanzo cha Sentiment Analysis microservice application yomwe yatchulidwa kale Nkhani yoyambira ku Kubernetes. Ndizovuta mokwanira kuwonetsa kuthekera kwa Istio pochita.

Ntchitoyi imakhala ndi ma microservices anayi:

  1. utumiki SA-Frondend, yomwe imakhala kutsogolo kwa pulogalamu ya Reactjs;
  2. utumiki SA-WebApp, yomwe imapereka mafunso a Sentiment Analysis;
  3. utumiki SA-Logic, yomwe imachita yokha kusanthula maganizo;
  4. utumiki SA - Ndemanga, yomwe imalandira ndemanga kuchokera kwa ogwiritsa ntchito ponena za kulondola kwa kusanthula.

Bwererani ku microservices ndi Istio. Gawo 1

Muchithunzichi, kuwonjezera pa mautumiki, tikuwonanso Ingress Controller, yomwe ku Kubernetes imayendetsa zopempha zomwe zikubwera ku mautumiki oyenera. Istio imagwiritsa ntchito lingaliro lofananalo mkati mwa Ingress Gateway, zambiri zomwe zidzatsatidwe.

Kugwiritsa ntchito ndi projekiti yochokera ku Istio

Kuti mugwiritse ntchito zina zomwe zatchulidwa m'nkhaniyi, phatikizani nkhokwe yanu istio-mastery. Ili ndi kugwiritsa ntchito komanso mawonekedwe a Kubernetes ndi Istio.

Kuyika ma sidecars

Kuyika kungatheke basi kapena pamanja. Kuti muyike zokha zotengera zam'mbali, mufunika kuyika chizindikiro pamalo a mayina istio-injection=enabled, zomwe zimachitika ndi lamulo ili:

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

Tsopano pod iliyonse yomwe idzayikidwa mu malo osasintha (default) adzalandira chidebe chake cham'mbali. Kuti titsimikizire izi, tiyeni titumize ntchito yoyeserera popita ku bukhu la nkhokwe [istio-mastery] ndikuyendetsa lamulo ili:

$ 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

Pambuyo potumiza mautumikiwa, tiyeni tiwone ngati ma pod ali ndi zotengera ziwiri (ndi utumiki womwewo ndi galimoto yake yam'mbali) poyendetsa lamulo. kubectl get pods ndi kuonetsetsa kuti pansi pa mzati READY mtengo watchulidwa 2/2, kusonyeza kuti zotengera zonse zikuyenda:

$ 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

Zowoneka zikuwoneka motere:

Bwererani ku microservices ndi Istio. Gawo 1
Woyimira nthumwi mu imodzi mwa ma pod

Tsopano popeza pulogalamuyo yayamba kugwira ntchito, tidzafunika kulola magalimoto omwe akubwera kuti alowe mu pulogalamuyi.

Ingress Gateway

Njira yabwino yokwaniritsira izi (lolani magalimoto mumagulu) ndikudutsa Ingress Gateway ku Istio, yomwe ili pa "m'mphepete" mwa gululo ndipo imakulolani kuti muthe kuyika zinthu za Istio monga njira, kusanja katundu, chitetezo ndi kuyang'anira magalimoto omwe akubwera.

Chigawo cha Ingress Gateway ndi ntchito yomwe imatumiza kunja idayikidwa mgululi panthawi yoyika Istio. Kuti mudziwe adilesi yakunja ya IP ya ntchitoyo, yesani:

$ 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

Tipitiliza kupeza pulogalamuyi pogwiritsa ntchito IP iyi (ndiyitchula kuti EXTERNAL-IP), kuti zikhale zosavuta tidzalemba mtengowo kuti ukhale wosinthika:

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

Ngati muyesa kupeza IP iyi kudzera pa msakatuli tsopano, mudzalandira cholakwika cha Utumiki Chosapezeka, chifukwa mwachisawawa Istio imaletsa magalimoto onse omwe akubwera, Gateway sinafotokozedwebe.

Chithandizo cha Gateway

Gateway ndi CRD (Custom Resource Definition) ku Kubernetes, yomwe imatanthauzidwa pambuyo pa kukhazikitsa Istio mumagulu ndikuthandizira kufotokozera madoko, protocol ndi makamu omwe tikufuna kulola magalimoto obwera.

Kwa ife, tikufuna kulola kuchuluka kwa HTTP padoko 80 kwa onse omwe ali nawo. Ntchitoyi ikugwiridwa ndi tanthauzo ili (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:
- "*"

Kukonzekera uku sikufuna kufotokozera kupatula kwa wosankha istio: ingressgateway. Ndi chosankha ichi titha kufotokozera kuti Ingress Gateway iti tigwiritse ntchito kasinthidwe. Kwa ife, uyu ndiye woyang'anira Chipata cha Ingress, chomwe chinakhazikitsidwa mwachisawawa ku Istio.

Kukonzekera kumagwiritsidwa ntchito poyitana lamulo ili:

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

Chipata tsopano chimalola mwayi wopita ku doko 80, koma sadziwa komwe angatumize zopempha. Kwa ichi mudzafunika Ntchito Zabwino.

Chida cha VirtualService

VirtualService imauza Ingress Gateway momwe mungayendetsere zopempha zomwe zimaloledwa mkati mwa tsango.

Zopempha ku pulogalamu yathu yobwera kudzera pa http-gateway ziyenera kutumizidwa ku sa-frontend, sa-web-app ndi ntchito zoyankha:

Bwererani ku microservices ndi Istio. Gawo 1
Njira zomwe ziyenera kukonzedwa ndi VirtualServices

Tiyeni tiwone zopempha zomwe ziyenera kutumizidwa ku SA-Frontend:

  • Kufanana kwenikweni panjira / iyenera kutumizidwa ku SA-Frontend kuti ipeze index.html;
  • Njira zokhazikika /static/* iyenera kutumizidwa ku SA-Frontend kuti ilandire mafayilo osasunthika omwe amagwiritsidwa ntchito kutsogolo, monga CSS ndi JavaScript;
  • Njira zofananira ndi mawonekedwe anthawi zonse '^.*.(ico|png|jpg)$', iyenera kutumizidwa ku SA-Frontend, chifukwa Izi ndi zithunzi zowonetsedwa patsamba.

Kukhazikitsa kumatheka ndi kasinthidwe kotsatira (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

Mfundo zofunika:

  1. VirtualService iyi imatanthawuza zopempha zomwe zikubwera http-chipata;
  2. Π’ destination Ntchito zomwe zopempha zimatumizidwa zimatsimikiziridwa.

ndemanga: Zosintha pamwambapa zimasungidwa mufayilo sa-virtualservice-external.yaml, yomwe ilinso ndi zoikamo zoyendetsera mu SA-WebApp ndi SA-Feedback, koma yafupikitsidwa apa m'nkhaniyo kuti ikhale yofupikitsa.

Tiyeni tigwiritse ntchito VirtualService poyimba:

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

ndemanga: Tikamadya zinthu za Istio, Kubernetes API Server imapanga chochitika chomwe chimalandiridwa ndi Istio Control Plane, ndipo pambuyo pake kusinthika kwatsopano kumagwiritsidwa ntchito kwa ma proxies a pod iliyonse. Ndipo wolamulira wa Ingress Gateway akuwoneka kuti ndi nthumwi ina yokonzedwa mu Control Plane. Zonsezi zikuwoneka ngati izi mujambula:

Bwererani ku microservices ndi Istio. Gawo 1
Kukonzekera kwa Istio-IngressGateway pakufunsira njira

Sentiment Analysis application ikupezeka pa http://{EXTERNAL-IP}/. Osadandaula ngati simunapezeke: Nthawi zina zimatenga nthawi yayitali kuti kasinthidwe ayambe kugwira ntchito ndipo ma cache a Envoy asinthe.

Musanayambe, sewerani ndi pulogalamuyi pang'ono kuti mupange magalimoto. (kukhalapo kwake ndikofunikira kuti zimveke bwino pazotsatira - pafupifupi transl.).

Kiali: kuwonera

Kuti mufike pa mawonekedwe a Kiali, yendetsani lamulo ili:

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

... ndi kutsegula http://localhost:20001/, kulowa ngati admin/admin. Apa mupeza zinthu zambiri zothandiza, mwachitsanzo, kuyang'ana kasinthidwe ka zigawo za Istio, kuwona mautumiki pogwiritsa ntchito zidziwitso zomwe zasonkhanitsidwa kuchokera pakufunsira zofunsira pa netiweki, pezani mayankho a mafunso "Ndani akulumikizana ndi ndani?", "Ndi mtundu uti wautumiki womwe ukukumana nawo. zolephera?” ndi zina zotero. Nthawi zambiri, fufuzani zomwe Kiali ali nazo musanayambe kuwonera ma metric ndi Grafana.

Bwererani ku microservices ndi Istio. Gawo 1

Grafana: mawonekedwe a metrics

Ma metric omwe amasonkhanitsidwa ku Istio amapita ku Prometheus ndipo amawonetsedwa ndi Grafana. Kuti mufike ku Grafana administrative interface, yendetsani lamulo ili pansipa ndikutsegula 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

Kusindikiza pa menyu Kunyumba pamwamba kumanzere ndi kusankha Istio Service Dashboard pamwamba kumanzere ngodya, kuyamba ndi utumiki sa-web-appkuti muwone ma metric omwe asonkhanitsidwa:

Bwererani ku microservices ndi Istio. Gawo 1

Zomwe zikutiyembekezera pano ndizopanda kanthu komanso zotopetsa - oyang'anira sangavomereze izi. Tiyeni tipange katundu wochepa ndi lamulo ili:

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

Tsopano tili ndi ma graph abwino kwambiri, ndipo kuwonjezera pa iwo, zida zabwino za Prometheus zowunikira ndi Grafana zowonera ma metric omwe angatithandizire kuphunzira za magwiridwe antchito, thanzi, kusintha / kutsika kwa ntchito pakapita nthawi.

Pomaliza, tiyeni tiyang'ane kutsata zopempha mu ntchito.

Jaeger: kutsatira

Tidzafunika kufufuza chifukwa ntchito zambiri zomwe tili nazo, zimakhala zovuta kwambiri kuti tipeze zomwe zalephereka. Tiyeni tiwone vuto losavuta kuchokera pachithunzi pansipa:

Bwererani ku microservices ndi Istio. Gawo 1
Chitsanzo chodziwika bwino cha pempho lolephera mwachisawawa

Pempho likubwera, likugwa - chifukwa chake ndi chiyani? Utumiki woyamba? Kapena wachiwiri? Pali zosiyana mu zonse ziwiri - tiyeni tiwone zipika za iliyonse. Kodi mwadzipeza bwanji mukuchita izi? Ntchito yathu ili ngati ofufuza mapulogalamu kuposa opanga ...

Ili ndi vuto lodziwika bwino mu ma microservices ndipo limathetsedwa ndi njira zotsatirira zogawa, momwe mautumiki amadutsa mutu wapadera kwa wina ndi mzake, pambuyo pake chidziwitsochi chimatumizidwa kumayendedwe otsatirira, pomwe amafananizidwa ndi zopempha. Nachi chithunzi:

Bwererani ku microservices ndi Istio. Gawo 1
TraceId imagwiritsidwa ntchito kuzindikira pempho

Istio imagwiritsa ntchito Jaeger Tracer, yomwe imagwiritsa ntchito ndondomeko ya OpenTracing API yodziyimira pawokha. Mutha kugwiritsa ntchito mawonekedwe a Jaeger ndi lamulo ili:

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

Tsopano pitani ku http://localhost:16686/ ndikusankha ntchito sa-web-app. Ngati ntchitoyo sinawonetsedwe mumenyu yotsitsa, onetsani / pangani zochitika patsamba ndikusintha mawonekedwe. Pambuyo pake, dinani batani Pezani Ma traces, yomwe iwonetsa zotsatizana zaposachedwa - sankhani chilichonse - mwatsatanetsatane pazotsatira zonse zidzawonekera:

Bwererani ku microservices ndi Istio. Gawo 1

Chizindikiro ichi chikuwonetsa:

  1. Pempho likubwera istio-ingressgateway (uku ndiko kuyanjana koyamba ndi imodzi mwamautumiki, ndipo Trace ID imapangidwa kuti ifunsidwe), pambuyo pake chipata chimatumiza pempho ku ntchitoyo. sa-web-app.
  2. Mu utumiki sa-web-app pempho likutengedwa ndi Evoy sidecar, "mwana" amapangidwa mu span (ndicho chifukwa ife tikuziwona izo mu mayendedwe) ndi kutumizidwa ku chidebe. sa-web-app. (chikhato - gawo lomveka la ntchito ku Jaeger, lomwe lili ndi dzina, nthawi yoyambira kugwira ntchito ndi nthawi yake. Spans ikhoza kukhazikitsidwa ndikuyitanitsa. Chithunzi chowongolera cha acyclic cha spans chimapanga trace. - pafupifupi. transl.)
  3. Apa pempho likukonzedwa ndi njira sentimentAnalysis. Zotsatirazi zapangidwa kale ndi ntchito, i.e. anafunika kusintha ma code.
  4. Kuyambira pano, pempho la POST likuyambika sa-logic. Trace ID iyenera kutumizidwa kuchokera sa-web-app.
  5. ...

ndemanga: Mu sitepe 4, ntchitoyo iyenera kuwona mitu yopangidwa ndi Istio ndikuipereka ku zopempha zotsatila monga momwe tawonetsera pachithunzichi:

Bwererani ku microservices ndi Istio. Gawo 1
(A) Istio ili ndi udindo wotumiza mitu; (B) Ntchito zili ndi udindo pamitu

Istio imagwira ntchito zambiri chifukwa ... imapanga mitu yazofunsira zomwe zikubwera, imapanga mipata yatsopano m'mbali zonse ndikuzipititsa patsogolo. Komabe, popanda kugwira ntchito ndi mitu mkati mwa mautumiki, njira yonse yofunsira idzatayika.

Mitu yotsatirayi iyenera kuganiziridwa:

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

Iyi si ntchito yovuta, koma kufewetsa kukhazikitsa kwake kulipo kale malaibulale ambiri - mwachitsanzo, mu ntchito ya sa-web-app, kasitomala wa RestTemplate amatumiza mitu iyi ngati mungowonjezera malaibulale a Jaeger ndi OpenTracing ku zizolowezi zake.

Dziwani kuti ntchito ya Sentiment Analysis ikuwonetsa zomwe zachitika mu Flask, Spring, ndi ASP.NET Core.

Tsopano zikuwonekeratu zomwe timatuluka m'bokosi (kapena pafupifupi kuchokera m'bokosi), tiyeni tiwone njira zowongoka bwino, kasamalidwe ka magalimoto pamaneti, chitetezo, ndi zina zambiri!

Zindikirani. transl.: Werengani za izi mu gawo lotsatira la zolemba za Istio kuchokera kwa Rinor Maloku, zomasulira zomwe zidzatsatira pa blog yathu posachedwa. PEZANI (March 14): Gawo lachiwiri zasindikizidwa kale.

PS kuchokera kwa womasulira

Werenganinso pa blog yathu:

Source: www.habr.com

Kuwonjezera ndemanga