Bali menyang microservices karo Istio. Bagean 1

Bali menyang microservices karo Istio. Bagean 1

Cathetan. nerjemahake.: Service meshes mesthi dadi solusi sing relevan ing infrastruktur modern kanggo aplikasi sawise arsitektur microservice. Nalika Istio bisa uga ana ing lambe para insinyur DevOps, iki minangka produk sing cukup anyar sing, sanajan lengkap babagan kemampuan sing diwenehake, mbutuhake wektu sing akeh kanggo kenal. Insinyur Jerman Rinor Maloku, sing tanggung jawab kanggo komputasi awan kanggo klien gedhe ing perusahaan telekomunikasi Orange Networks, wis nulis seri bahan sing apik sing ngidini sampeyan nyilem menyang Istio kanthi cepet lan jero. Dheweke miwiti crita babagan apa sing bisa ditindakake Istio ing umum lan kepiye sampeyan bisa ndeleng kanthi cepet kanthi mripatmu dhewe.

Istio - Proyek Open Source, dikembangake kanthi kolaborasi karo tim saka Google, IBM lan Lyft. Iki ngrampungake kerumitan sing muncul ing aplikasi adhedhasar layanan mikro, contone, kayata:

  • manajemen lalu lintas: wektu entek, nyoba maneh, load balancing;
  • Keamanan: otentikasi pangguna pungkasan lan wewenang;
  • bisa diamati: tracing, monitoring, logging.

Kabeh mau bisa ditanggulangi ing tingkat aplikasi, nanging sawise layanan sampeyan ora bakal "mikro" maneh. Kabeh upaya ekstra kanggo ngatasi masalah kasebut minangka sampah sumber daya perusahaan sing bisa digunakake langsung kanggo nilai bisnis. Coba conto:

Manajer Proyek: Suwene wektu kanggo nambah fitur umpan balik?
Pangembang: Loro sprint.

MP : Opo?.. CRUD wae!
R: Nindakake CRUD minangka bagean sing gampang, nanging kita isih kudu otentikasi lan menehi wewenang pangguna lan layanan. Wiwit jaringan ora bisa dipercaya, sampeyan kudu ngleksanakake panjalukan sing bola-bali, uga pola pemutus sirkuit ing klien. Uga, kanggo mesthekake yen kabeh sistem ora kacilakan, sampeyan kudu wektu entek lan akeh (kanggo rincian liyane babagan pola kasebut, deleng mengko ing artikel - kira-kira transl.), lan kanggo ndeteksi masalah, ngawasi, nelusuri, [...]

MP: Oh, ayo dilebokake fitur iki menyang layanan Produk.

Aku idea iku cetha: jumlah langkah lan gaweyan dibutuhake kanggo nambah siji layanan gedhe tenan. Ing artikel iki, kita bakal ndeleng carane Istio mbusak kabeh kerumitan sing kasebut ing ndhuwur (sing ora dimaksudake minangka logika bisnis) saka layanan.

Bali menyang microservices karo Istio. Bagean 1

komentar: Artikel nganggep yen sampeyan duwe kawruh babagan Kubernetes. Yen ora, aku nyaranake maca introduksiku kanggo Kubernetes lan mung sawise terus maca materi iki.

Istio ide

Ing jagad tanpa Istio, siji layanan nggawe panjaluk langsung menyang liyane, lan yen gagal, layanan kasebut kudu ditangani dhewe: nyoba anyar, nyedhiyakake wektu entek, mbukak pemutus sirkuit, lsp.

Bali menyang microservices karo Istio. Bagean 1
Lalu lintas jaringan ing Kubernetes

Istio, ing sisih liya, nawakake solusi khusus sing kapisah saka layanan lan fungsi kanthi ngganggu interaksi jaringan. Lan kanthi mangkono nindakake:

  • toleransi kesalahan: Adhedhasar kode status ing respon, mangertos apa panjalukan gagal lan maneh nglakokakΓ©.
  • Canary rollouts: pangalihan mung persentase tetep saka panjalukan menyang versi anyar saka layanan.
  • Ngawasi lan Metrik: Suwene suwene layanan nanggapi?
  • Tracing lan observability: Nambahake header khusus kanggo saben panjalukan lan nglacak ing kluster.
  • Keamanan: Njupuk token JWT, otentikasi lan menehi wewenang pangguna.

Iki mung sawetara saka kemungkinan (pancen mung sawetara!) Kanggo intrik sampeyan. Saiki ayo nyilem menyang rincian teknis!

Arsitektur Istio

Istio nyegat kabeh lalu lintas jaringan lan ngetrapake aturan kasebut, nglebokake proxy cerdas ing wangun wadhah sidecar menyang saben pod. Proksi sing ngaktifake kabeh kabisan mbentuk a pesawat data, lan bisa dikonfigurasi kanthi dinamis nggunakake Pesawat Kontrol.

pesawat data

Proksi sing dilebokake ing pods ngidini Istio gampang entuk syarat sing dibutuhake. Contone, ayo dipriksa maneh lan fungsi pemutus sirkuit.

Bali menyang microservices karo Istio. Bagean 1
Carane nyoba maneh lan nglanggar sirkuit dileksanakake ing Utusan

Ringkes:

  1. Envoy (kita ngomong babagan proxy sing ana ing wadhah sidecar, sing disebarake minangka produk kapisah - kira-kira. transl.) ngirim panjalukan kanggo conto pisanan saka layanan B lan gagal.
  2. Utusan Sidecar nyoba maneh (nyoba maneh). (1)
  3. Panjaluk kasebut gagal lan bali menyang proxy sing diarani.
  4. Iki mbukak Circuit Breaker lan nelpon layanan sabanjurΓ© kanggo panjalukan sakteruse. (2)

Iki tegese sampeyan ora kudu nggunakake perpustakaan Coba maneh liyane, sampeyan ora kudu nggawe dhewe implementasine saka Circuit Breaking lan Service Discovery ing basa program X, Y utawa Z. Kabeh iki lan akeh liyane kasedhiya metu saka kothak. ing Istio lan ora mbutuhake ora owah-owahan kode.

apik tenan! Saiki sampeyan bisa uga pengin lelungan karo Istio, nanging sampeyan isih duwe keraguan, pitakonan mbukak. Yen iki minangka solusi universal kanggo kabeh kesempatan ing urip, mula sampeyan duwe anggepan alami: sawise kabeh, kabeh solusi kasebut nyatane ora cocog kanggo kasus apa wae.

Lan pungkasane sampeyan takon: "Apa bisa disesuaikan?"

Saiki sampeyan siyap kanggo lelungan segara - lan ayo kenalan karo Control Plane.

Pesawat Kontrol

Iku kasusun saka telung komponen: pilot, Mixer ΠΈ Benteng, sing kerja bareng kanggo ngatur Utusan kanggo nuntun lalu lintas, ngetrapake kabijakan, lan ngumpulake data telemetri. Secara skematis, kabeh katon kaya iki:

Bali menyang microservices karo Istio. Bagean 1
Interaksi bidang kontrol karo bidang data

Utusan (i.e. pesawat data) diatur karo Kubernetes CRD (Definisi Sumber Daya Khusus) sing ditetepake dening Istio lan dirancang khusus kanggo tujuan iki. Apa tegese iki kanggo sampeyan iku mung sumber daya liyane ing Kubernetes karo sintaks menowo. Sawise digawe, sumber daya iki bakal dijupuk dening pesawat kontrol lan ditrapake kanggo Utusan.

Hubungane layanan kanggo Istio

Kita wis njlèntrèhaké hubungan Istio kanggo layanan, nanging ora mbalikke: carane layanan hubungane karo Istio?

Sejujure, layanan ngerti yen ana Istio kaya iwak banyu nalika dheweke takon, "Banyu apa ta?"

Bali menyang microservices karo Istio. Bagean 1
Gambaran Victoria Dimitrakopoulos: - Kok senengane banyu? - Apa iku banyu?

Mangkono, sampeyan bisa njupuk kluster sing bisa digunakake lan sawise masang komponen Istio, layanan kasebut bakal terus bisa digunakake, lan sawise ngilangi komponen kasebut, kabeh bakal apik maneh. Cetha yen ing kasus iki sampeyan bakal kelangan kesempatan sing diwenehake dening Istio.

Cukup teori - ayo praktekake kawruh iki!

Istio ing laku

Istio mbutuhake kluster Kubernetes kanthi paling ora 4 vCPU lan 8 GB RAM kasedhiya. Kanggo ngunggahake kluster kanthi cepet lan tindakake pandhuan saka artikel kasebut, aku nyaranake nggunakake Google Cloud Platform, sing nawakake pangguna anyar free $300.

Sawise nggawe kluster lan ngatur akses menyang Kubernetes liwat sarana konsol, sampeyan bisa nginstal Istio liwat manajer paket Helm.

Pemasangan Helm Kab

Instal klien Helm ing komputer, kaya sing diterangake ing dokumentasi resmi. Kita bakal nggunakake iki kanggo ngasilake cithakan kanggo nginstal Istio ing bagean sabanjure.

Nginstal Istio

Ngundhuh sumber daya Istio saka release paling anyar (Link penulis asli menyang versi 1.0.5 wis diganti dadi saiki, yaiku 1.0.6 - kira-kira transl.), ekstrak isi menyang direktori siji, sing bakal dakrujuk minangka [istio-resources].

Kanggo gampang ngenali sumber daya Istio, nggawe namespace ing kluster K8s istio-system:

$ kubectl create namespace istio-system

Rampungake instalasi kanthi navigasi menyang direktori [istio-resources] lan mbukak printah:

$ 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

Printah iki bakal ngasilake komponen utama Istio menyang file istio.yaml. Kita wis ngowahi cithakan standar kanggo awake dhewe kanthi nemtokake paramèter ing ngisor iki:

  • global.mtls.enabled dipasang ing false (yaiku otentikasi mTLS dipateni - kira-kira)kanggo menakake proses gendakan kita;
  • tracing.enabled kalebu panjalukan nelusuri nggunakake Jaeger;
  • kiali.enabled nginstal Kiali menyang kluster kanggo nggambarake layanan lan lalu lintas;
  • grafana.enabled nginstal Grafana kanggo nggambarake metrik sing diklumpukake.

Gunakake sumber daya sing digawe kanthi printah:

$ kubectl apply -f istio.yaml

Instalasi Istio ing kluster rampung! Enteni nganti kabeh pods ana ing namespace istio-system bakal bisa Running utawa Completedkanthi mbukak printah ing ngisor iki:

$ kubectl get pods -n istio-system

Saiki kita siyap nerusake ing bagean sabanjure, ing ngendi kita bakal mbukak aplikasi kasebut.

Arsitektur aplikasi Analisis Sentimen

Ayo nggunakake conto aplikasi microservice Analisis Sentimen sing digunakake ing sing wis kasebut Artikel Pambuka kanggo Kubernetes. Cukup rumit kanggo nuduhake kemampuan Istio ing praktik.

Aplikasi kasebut kalebu papat layanan mikro:

  1. layanan SA-Frontend, sing nglayani aplikasi ngarep ing Reactjs;
  2. layanan SA-WebApp, sing nglayani pitakon Analisis Sentimen;
  3. layanan SA-Logika, kang nindakake dhewe analisis sentimen;
  4. layanan SA-Umpan Balik, sing nampa umpan balik saka pangguna babagan akurasi analisis sing ditindakake.

Bali menyang microservices karo Istio. Bagean 1

Ing diagram iki, saliyane layanan, kita uga ndeleng Ingress Controller, sing ing Kubernetes ngarahake panjaluk sing mlebu menyang layanan sing cocog. Istio nggunakake konsep sing padha ing Ingress Gateway, sing luwih rinci bakal diterusake.

Bukak aplikasi kanthi proxy saka Istio

Kanggo operasi luwih sing kasebut ing artikel kasebut, clone repositori sampeyan istio-nguwasani. Isine aplikasi lan manifests kanggo Kubernetes lan Istio.

Nglebokake sidecars

Selipan bisa digawe kanthi otomatis utawa kanthi manual. Kanggo nglebokake kontaner sidecar kanthi otomatis, sampeyan kudu nyetel label menyang ruang jeneng istio-injection=enabled, sing ditindakake kanthi printah ing ngisor iki:

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

Saiki saben pod sing bakal disebarake ing ruang jeneng standar (default) bakal nampa wadhah sidecar. Kanggo verifikasi iki, ayo masang aplikasi tes kanthi pindhah menyang direktori root saka repositori [istio-mastery] lan mbukak printah ing ngisor iki:

$ 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

Sawise nyebarake layanan kasebut, priksa manawa pod duwe rong wadhah (kanthi layanan kasebut dhewe lan sidecar) kanthi nindakake perintah kasebut. kubectl get pods lan priksa manawa ing ngisor kolom READY nilai sing ditemtokake 2/2, nglambangake yen loro kontaner mlaku:

$ 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

Secara visual katon kaya iki:

Bali menyang microservices karo Istio. Bagean 1
Proksi utusan ing salah sawijining polong

Saiki yen aplikasi wis aktif, kita kudu ngidini lalu lintas mlebu menyang aplikasi kasebut.

Ingress Gateway

Praktek paling apik kanggo entuk iki (ngidini lalu lintas ing kluster) yaiku liwat Ingress Gateway ing Istio, sing dumunung ing "pinggiran" kluster lan ngidini sampeyan ngaktifake fitur Istio kayata nuntun, imbangan muatan, keamanan, lan ngawasi lalu lintas sing mlebu.

Komponen Ingress Gateway lan layanan sing nerusake metu dipasang ing kluster nalika instalasi Istio. Kanggo ngerteni alamat IP eksternal saka layanan, bukak:

$ 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

Kita bakal terus ngakses aplikasi kanthi nggunakake IP iki (aku bakal ngrujuk minangka EXTERNAL-IP), supaya gampang kita nulis nilai kasebut dadi variabel:

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

Yen sampeyan nyoba ngakses IP iki liwat browser saiki, sampeyan bakal nampa kesalahan Service Unavailable, amarga kanthi gawan Istio mblokir kabeh lalu lintas mlebunganti Gateway ditetepake.

sumber daya gateway

Gateway punika CRD (Custom Resource Definition) ing Kubernetes, ditetepake sawise nginstal Istio ing kluster lan mbisakake kemampuan kanggo nemtokake bandar, protokol lan sarwa dumadi sing kita pengin ngidini lalu lintas mlebu.

Ing kasus kita, kita pengin ngidini lalu lintas HTTP ing port 80 kanggo kabeh host. Tugas kasebut ditindakake kanthi definisi ing ngisor iki (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:
- "*"

Konfigurasi iki ora mbutuhake panjelasan kajaba pamilih istio: ingressgateway. Kanthi pamilih iki kita bisa nemtokake Ingress Gateway kanggo aplikasi konfigurasi. Ing kasus kita, iki minangka pengontrol Ingress Gateway, sing diinstal kanthi standar ing Istio.

Konfigurasi ditrapake kanthi nelpon printah ing ngisor iki:

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

Gerbang saiki ngidini akses menyang port 80, nanging ora ngerti ngendi kanggo nuntun panjalukan. Kanggo iki sampeyan kudu Layanan Virtual.

Sumber daya VirtualService

VirtualService ngandhani Ingress Gateway carane rute panjalukan sing diijini ing kluster.

Panjaluk kanggo aplikasi kita liwat http-gateway kudu dikirim menyang layanan sa-frontend, sa-web-app lan sa-feedback:

Bali menyang microservices karo Istio. Bagean 1
Rute sing kudu dikonfigurasi karo VirtualServices

Coba panjaluk sing kudu dikirim menyang SA-Frontend:

  • Pertandhingan persis ing dalan / kudu dikirim menyang SA-Frontend kanggo njaluk index.html;
  • Jalur sing diawali /static/* kudu dikirim menyang SA-Frontend kanggo njaluk file statis sing digunakake ing frontend, kayata CSS lan JavaScript;
  • Path sing cocog karo ekspresi reguler '^.*.(ico|png|jpg)$', kudu dikirim menyang SA-Frontend, amarga Iki minangka gambar sing ditampilake ing kaca kasebut.

Implementasine digayuh kanthi konfigurasi ing ngisor iki (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

Poin penting:

  1. Layanan Virtual iki nuduhake panjaluk sing ditindakake http-gateway;
  2. Π’ destination nemtokake layanan sing panjalukan dikirim.

komentar: Konfigurasi ing ndhuwur disimpen ing file sa-virtualservice-external.yaml, kang uga ngandhut setelan kanggo nuntun kanggo SA-WebApp lan SA-Umpan Balik, nanging wis shortened kene ing artikel kanggo brevity.

Ayo aplikasi VirtualService kanthi nelpon:

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

komentar: Nalika kita aplikasi sumber daya Istio, Kubernetes API Server murub acara sing Istio Control Plane ditampa, lan sawise iku, konfigurasi anyar Applied kanggo saben proxy Utusan pod. Lan pengontrol Ingress Gateway katon minangka Utusan liyane sing dikonfigurasi ing Control Plane. Kabeh iki katon kaya iki ing diagram:

Bali menyang microservices karo Istio. Bagean 1
Konfigurasi Istio-IngressGateway kanggo nuntun panyuwunan

Aplikasi Analisis Sentimen saiki kasedhiya ing http://{EXTERNAL-IP}/. Aja kuwatir yen sampeyan entuk status Not Found: Kadhangkala butuh wektu luwih suwe kanggo konfigurasi bisa ditrapake lan cache Utusan kanggo nganyari.

Sadurunge nerusake, muter sethitik karo aplikasi kanggo generate lalu lintas (Anane perlu kanggo kajelasan ing tumindak sakteruse - kira-kira transl.).

Kiali: bisa diamati

Kanggo pindhah menyang antarmuka administratif Kiali, jalanake printah ing ngisor iki:

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

… lan mbukak http://localhost:20001/kanthi mlebu minangka admin/admin. Ing kene sampeyan bakal nemokake akeh fitur sing migunani, contone, kanggo mriksa konfigurasi komponen Istio, nggambarake layanan saka informasi sing diklumpukake kanthi nyegat panjaluk jaringan, entuk jawaban kanggo pitakonan "Sapa sing ngubungi sapa?", "Versi layanan sing dialami. gagal?” lan liya-liyane. UmumΓ©, jelajahi kemungkinan Kiali sadurunge pindhah menyang visualisasi metrik karo Grafana.

Bali menyang microservices karo Istio. Bagean 1

Grafana: visualisasi metrik

Metrik sing diklumpukake ing Istio mlebu ing Prometheus lan digambar nganggo Grafana. Kanggo pindhah menyang antarmuka administratif Grafana, jalanake printah ing ngisor iki banjur bukak 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

Kanthi ngeklik ing menu Home ndhuwur kiwa lan milih Dasbor Layanan Istio ing sudhut kiwa ndhuwur, miwiti karo layanan sa-web-appkanggo ndeleng metrik sing diklumpukake:

Bali menyang microservices karo Istio. Bagean 1

Sing nunggu kita ing kene yaiku kinerja sing kosong lan mboseni - manajemen ora bakal nyetujoni iki. Ayo nggawe beban cilik kanthi printah ing ngisor iki:

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

Saiki kita duwe grafik sing luwih apik, lan saliyane, alat Prometheus sing apik kanggo ngawasi lan Grafana kanggo visualisasi metrik, sing bakal ngidini kita sinau babagan kinerja, status kesehatan, perbaikan / degradasi layanan sajrone wektu.

Pungkasan, ayo goleki panjaluk panjaluk ing layanan.

Jaeger: nglacak

Kita kudu nelusuri amarga luwih akeh layanan sing kita duwe, luwih angel tekan penyebab kegagalan kasebut. Ayo katon ing kasus prasaja saka gambar ing ngisor iki:

Bali menyang microservices karo Istio. Bagean 1
Conto khas saka panyuwunan gagal acak

Panjaluk teka, tiba - apa sebabe? Layanan pisanan? Utawa kapindho? Ana pangecualian ing loro - ayo ndeleng log saben. Sepira kerepe sampeyan kejiret nindakake iki? Pakaryan kita luwih kaya detektif piranti lunak tinimbang pangembang ...

Iki masalah umum ing microservices lan ditanggulangi dening sistem nelusuri mbagekke, kang layanan pass header unik kanggo saben liyane, sawise informasi iki diterusake kanggo sistem nelusuri, ngendi dibandhingake karo data request. Punika ilustrasi:

Bali menyang microservices karo Istio. Bagean 1
TraceId digunakake kanggo ngenali panjalukan

Istio nggunakake Jaeger Tracer, sing ngleksanakake kerangka OpenTracing API independen vendor. Sampeyan bisa ngakses antarmuka panganggo Jaeger kanthi printah ing ngisor iki:

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

Saiki pindhah menyang http://localhost:16686/ lan pilih layanan sa-web-app. Yen layanan ora ditampilake ing menu gulung mudhun, nuduhake / generate kegiatan ing kaca lan nganyari antarmuka. Sawise iku, klik tombol kasebut Golek jejak, sing bakal nuduhake jejak paling anyar - pilih apa wae - informasi rinci babagan kabeh jejak bakal katon:

Bali menyang microservices karo Istio. Bagean 1

Jejak iki nuduhake:

  1. Panjaluk kasebut mlebu istio-ingressgateway (iki minangka interaksi pisanan karo salah sawijining layanan, lan ID Trace digawe kanggo panjaluk kasebut), sawise gateway ngirim panjaluk menyang layanan kasebut. sa-web-app.
  2. Ing layanan sa-web-app panyuwunan kasebut dijupuk dening sidecar Utusan, "bocah" digawe ing span (mulane kita ndeleng ing jejak) lan dialihake menyang wadhah. sa-web-app. (span - unit logis saka karya ing Jaeger, kang duwe jeneng, wektu wiwitan operasi lan dadi. Spans bisa nested lan dhawuh. Grafik asiklik sing diarahake saka span mbentuk jejak. - kira-kira. transl.)
  3. Ing kene panyuwunan diproses kanthi cara sentimenAnalisis. Tilak iki wis digawe dening aplikasi, i.e. padha mbutuhake owah-owahan kode.
  4. Wiwit saiki, panjalukan POST diwiwiti ing sa-logika. Tilak ID kudu diterusake saka sa-web-app.
  5. ...

komentar: Ing langkah 4, aplikasi kudu ndeleng header sing digawe dening Istio lan ngirim menyang panjalukan sakteruse kaya sing ditampilake ing gambar ing ngisor iki:

Bali menyang microservices karo Istio. Bagean 1
(A) Terusake header minangka tanggung jawab Istio; (B) Layanan tanggung jawab kanggo header

Istio nindakake paling akeh amarga ... ngasilake header kanggo panjalukan mlebu, nggawe span anyar ing saben sidecare lan nerusake. Nanging, tanpa nggarap header ing layanan, path panjalukan lengkap bakal ilang.

Header ing ngisor iki kudu dianggep (diterusake):

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

Iki dudu tugas sing angel, nanging kanggo nyederhanakake implementasine wis ana akeh perpustakaan - contone, ing layanan sa-web-app, klien RestTemplate nerusake header kasebut yen sampeyan mung nambah perpustakaan Jaeger lan OpenTracing menyang dependensi sawijining.

Elinga yen aplikasi Analisis Sentimen nuduhake implementasi ing Flask, Spring, lan ASP.NET Core.

Saiki wis jelas apa sing bakal ditindakake (utawa meh metu saka kothak), ayo deleng rute sing wis disetel, manajemen lalu lintas jaringan, keamanan, lan liya-liyane!

Cathetan. nerjemahake.: maca babagan iki ing bagean sabanjure materi ing Istio dening Rinor Maloku, terjemahan sing bakal diterusake ing blog kita ing mangsa ngarep. UPDATE (14 Maret): BagΓ©an kapindho wis diterbitake.

PS saka penerjemah

Waca uga ing blog kita:

Source: www.habr.com

Add a comment