Usoro nke posts na Istio Service Mesh

Anyị na-amalite usoro nke posts na-egosi ụfọdụ ike nke Mesh Service Istio mgbe ejikọtara ya na Red Hat OpenShift na Kubernetes.

Usoro nke posts na Istio Service Mesh

Akụkụ nke mbụ, taa:

  • Ka anyị kọwaa echiche nke Kubernetes sidecar containers na chepụta leitmotif nke usoro isiokwu a: "ịkwesighi ịgbanwe ihe ọ bụla na koodu gị".
  • Ka anyị webata ihe bụ isi nke Istio - iwu ntụgharị. Ewubere atụmatụ Istio ndị ọzọ na ha, ebe ọ bụ iwu na-enye gị ohere iduzi okporo ụzọ gaa na microservices, na-eji faịlụ YAML na mpụga koodu ọrụ. Anyị na-atụlekwa atụmatụ ntinye nke Canary Deployment. Ego afọ ọhụrụ - nkuzi mmekọrịta 10 na Istio


Akụkụ nke abụọ, na-abịa n'oge na-adịghị anya, ga-agwa gị:

  • Kedu ka Istio si arụ ọrụ Pool Ejection yana njikọta na Circuit Breaker ga-egosipụta ka Istio na-enye gị ohere iwepu pọd nwụrụ anwụ ma ọ bụ nke na-adịghị mma na sekit na-edozi ahụ.
  • Anyị ga-elelekwa isiokwu sekit Breaker site na post mbụ ka ịhụ ka enwere ike iji Istio mee ihe ebe a. Anyị ga-egosi gị otu esi agafe okporo ụzọ na ijikwa njehie netwọkụ site na iji faịlụ nhazi YAML na iwu ọnụ na-enweghị obere mgbanwe na koodu ọrụ.

Akụkụ atọ:

  • Akụkọ gbasara ịchụso na nleba anya, nke arụnyerelarị ma ọ bụ tinye ya ngwa ngwa na Istio. Anyị ga-egosi gị otu esi eji ngwaọrụ dị ka Prometheus, Jaeger, na Grafana jikọtara ya na OpenShift scaling iji jikwaa microservice architectures n'enweghị ike.
  • Anyị na-esi na nlekota na ijikwa njehie na-ewebata ha n'ime usoro na ụma. N'ikwu ya n'ụzọ ọzọ, anyị na-amụta otú e si eme injection na-ezighị ezi na-enweghị ịgbanwe koodu isi, nke dị oke mkpa site na nlele ule - ebe ọ bụrụ na ị gbanwee koodu n'onwe ya maka nke a, enwere ike iwebata njehie ndị ọzọ.

N'ikpeazụ, na post ikpeazụ na Istio Service Mesh:

  • Ka anyị gaa n'akụkụ gbara ọchịchịrị. Kpọmkwem nke ọma, anyị ga-amụta iji atụmatụ Mwepụta Ọchịchịrị, mgbe a na-etinye koodu ahụ ma nwalee ozugbo na data mmepụta, mana ọ naghị emetụta ọrụ nke usoro ahụ n'ụzọ ọ bụla. Nke a bụ ebe ike Istio kewaa okporo ụzọ na-abịa na aka. Na ikike ịnwale na data mmepụta ndụ na-enweghị emetụta ọrụ nke usoro ọgụ n'ụzọ ọ bụla bụ usoro nkwenye kachasị kwenye.
  • N'ịwulite na Mwepụta Ọchịchịrị, anyị ga-egosi gị otu esi eji ụdị ntinye Canary iji belata ihe egwu wee mee ka ọ dị mfe ịnweta koodu ọhụrụ na mmepụta. Canary Deployment n'onwe ya adịchaghị ọhụrụ, mana Istio na-enye gị ohere iji naanị faịlụ YAML dị mfe mejuputa atụmatụ a.
  • N'ikpeazụ, anyị ga-egosi gị otu esi eji Istio Egress nye ndị na-abụghị ụyọkọ gị ohere ịnweta ọrụ iji jiri ike nke Istio mgbe ị na-arụ ọrụ na Ịntanetị.

Yabụ, ebe a ka anyị ga...

Ngwa nlekota na njikwa Istio - ihe niile ịchọrọ iji hazie microservices na ntupu ọrụ ntupu ọrụ.

Gịnị bụ Istio Service Mesh

Mesh ọrụ na-arụ ọrụ dị ka nlekota okporo ụzọ, njikwa ohere, nchọpụta, nchekwa, ntachi obi na ihe ndị ọzọ bara uru maka otu ọrụ. Istio na-enye gị ohere ime ihe a niile na-enweghị obere mgbanwe na koodu nke ọrụ ahụ n'onwe ha. Gịnị bụ ihe nzuzo nke anwansi? Istio na-ejikọta proxy nke ya na ọrụ ọ bụla n'ụdị akpa sidecar (sidecar bụ ọgba tum tum sidecar), mgbe nke a gasịrị, okporo ụzọ niile na ọrụ a na-aga site na proxy, nke, na-eduzi atumatu akọwapụtara, na-ekpebi otú, mgbe na ma okporo ụzọ a. kwesịrị iru ọrụ ma ọlị. Istio na-emekwa ka o kwe omume iji mejuputa usoro DevOps dị elu dị ka ntinye nke canary, ndị na-emebi sekit, ntụtụ mmejọ na ọtụtụ ndị ọzọ.

Kedu ka Istio si arụ ọrụ na arịa na Kubernetes

Ngwunye ọrụ Istio bụ mmejuputa akụkụ ụgbọ ala nke ihe niile achọrọ iji mepụta na jikwaa microservices: nleba anya, tracing, sekit breakers, routing, ndozi ibu, ntụtụ mmejọ, nwughari, oge nkwụsị, mirroring, njikwa ohere, mmachi ọnụego na ọtụtụ ndị ọzọ. Ma ọ bụ ezie na taa enwere ọtụtụ ọba akwụkwọ iji mejuputa ọrụ ndị a ozugbo na koodu, na Istio ị nwere ike nweta otu ihe ahụ na-agbanweghị ihe ọ bụla na koodu gị.

Dị ka ihe atụ sidecar si dị, Istio na-agba ọsọ na akpa Linux, nke dị n'otu Kubernetes-pod nwere ọrụ a na-achịkwa ma na-agbanye ma wepụ ọrụ na ozi dịka nhazi enyere. Anyị na-ekwusi ike na nke a bụ nhazi nke gị, ọ na-ebikwa na mpụga koodu gị. Ya mere, koodu na-aghọ nnọọ mfe na mkpụmkpụ.

Ihe dịkwa mkpa bụ na akụkụ arụ ọrụ nke microservices na-apụta na enweghị njikọ na koodu n'onwe ya, nke pụtara na enwere ike ibufe ọrụ ha na ndị ọkachamara IT n'enweghị nsogbu. N'ezie, gịnị kpatara onye nrụpụta ga-eji bụrụ onye na-ahụ maka ndị na-agbaji sekit na ịgba ọgwụ ọjọọ? Zaghachi, ee, mana hazie ha wee kee ha? Ọ bụrụ na i wepụ ihe a niile na koodu ahụ, ndị mmemme ga-enwe ike ilekwasị anya n'ụzọ zuru ezu na ọrụ ngwa. Na koodu n'onwe ya ga-adị mkpụmkpụ ma dị mfe.

Ntupu ọrụ

Istio, nke na-arụ ọrụ maka ijikwa microservices na mpụga koodu ha, bụ echiche nke Mesh Service. N'ikwu ya n'ụzọ ọzọ, ọ bụ otu ahaziri ahazi nke otu ọnụọgụ abụọ ma ọ bụ karịa na-etolite nchikota nke ọrụ netwọk.

Kedu ka Istio si arụ ọrụ na microservices

Nke a bụ ihe ọrụ nke igbe akụkụ dị na njikọ ya Kubernetes и Minishift anya nnụnụ: malite ihe atụ nke Minishift, mepụta oru ngo maka Istio (ka anyị kpọọ ya "istio-system"), wụnye ma mee ihe niile metụtara Istio. Mgbe ahụ, ka ị na-emepụta ọrụ na pọd, ị na-agbakwunye ozi nhazi na ntinye gị, pods gị na-amalite iji Istio. Eserese dị mfe dị ka nke a:

Usoro nke posts na Istio Service Mesh

Ugbu a, ị nwere ike ịgbanwe ntọala Istio ka, dịka ọmụmaatụ, ịhazi ntụtụ mmejọ, nkwado Nbunye Canary ma ọ bụ njirimara Istio ndị ọzọ - yana ihe a niile na-emetụghị koodu nke ngwa ahụ n'onwe ha. Ka anyị kwuo na ịchọrọ ibugharị okporo ụzọ weebụ niile site n'aka ndị ọrụ nke onye ahịa gị kacha ukwuu (Foo Corporation) gaa na ụdị saịtị ọhụrụ. Iji mee nke a, naanị mepụta iwu ntụgharị Istio nke ga-achọ @foocorporation.com na ID onye ọrụ wee bugharịa ya. Maka ndị ọrụ ndị ọzọ niile, ọ nweghị ihe ga-agbanwe. Ka ọ dị ugbu a, ị ga-eji nwayọọ nwalee ụdị saịtị ọhụrụ ahụ. Ma mara na ọ dịghị mkpa ka ị tinye aka na ndị mmepe maka nke a.

Ị ga-akwụkwa ezigbo ụgwọ maka ya?

Ọbụghị ncha ncha. Istio na-agba ọsọ nke ukwuu ma dee ya Go ma na-emepụta ntakịrị ihe n'elu. Na mgbakwunye, enwere ike mfu na nrụpụta ịntanetị site na mmụba nke nrụpụta nrụpụta. Dịkarịa ala na tiori: echefula na oge ndị mmepe bara uru. Banyere ụgwọ ngwanrọ, Istio bụ sọftụwia mepere emepe, yabụ ị nwere ike nweta ma jiri ya n'efu.

Mụta ya n'onwe gị

Otu Ahụmahụ Onye Mmepụta Okpu Uhie ewepụtala aka dị omimi njikwa nke Istio (na Bekee). Ọ na-agba na Linux, MacOS na Windows, na koodu dị na Java na Node.js.

10 nkuzi mmekọrịta na Istio

Mgbochi 1 - Maka ndị mbido

Okwu Mmalite Istio
Nkeji 30
Ka anyị mata Mesh Service, mụta ka esi etinye Istio na ụyọkọ OpenShift Kubernetes.
Iji malite

Na-ebuga microservices na Istio
Nkeji 30
Anyị na-eji Istio wepụta microservice atọ na Spring Boot na Vert.x.
Iji malite

Mgbochi 2 - ọkwa etiti

Nleba anya na nchọta na Istio
Nkeji 60
Anyị ga-enyocha ngwaọrụ nleba anya arụnyere n'ime Istio, metrik omenala na OpenTracing site na Prometheus na Grafana.
Iji malite

Ntugharị dị mfe na Istio
Nkeji 60
Mụta ka esi jikwaa okporo ụzọ na Istio site na iji iwu dị mfe.
Iji malite

Iwu okporo ụzọ dị elu
Nkeji 60
Ka anyị leba anya na ụzọ smart nke Istio, njikwa ohere, nhazi ibu na mmachi ọnụego.
Iji malite

Mgbochi 3 - onye ọrụ dị elu

Ịgba ọgwụ ọjọọ na Istio
Nkeji 60
Anyị na-amụ njikwa ọdịda ọdịda na ngwa ekesa, na-eke njehie HTTP na igbu oge netwọk, wee mụta iji injinia ọgba aghara weghachi gburugburu.
Iji malite

Ihe mgbawa sekit na Istio
Nkeji 30
Anyị na-etinye Siege maka saịtị nnwale nrụgide wee mụta otu esi achọpụta nnabata mmejọ azụ site na iji replays, ihe nbibi sekit na mkpochapụ ọdọ mmiri.
Iji malite

Egress na Istio
Nkeji 10
Anyị na-eji ụzọ Egress mepụta iwu maka mmekọrịta nke ọrụ ime na API na ọrụ mpụga.
Iji malite

Istio na Kiali
Nkeji 15
Mụta iji Kiali nweta nchịkọta nke ntupu ọrụ wee chọpụta arịrịọ na ọsọ data.
Iji malite

Mutual TLS na Istio
Nkeji 15
Anyị na-emepụta Istio Gateway na VirtualService, mgbe ahụ anyị na-amụ ibe TLS (mTLS) na ntọala ya n'ụzọ zuru ezu.
Iji malite

Mgbochi 3.1 - Ntuba miri emi: Mesh Service Istio maka Microservices

Usoro nke posts na Istio Service Mesh
Gịnị bụ akwụkwọ gbasara:

  • Gịnị bụ ntupu ọrụ?
  • Sistemụ Istio na ọrụ ya na ụkpụrụ ụlọ ọrụ microservice.
  • Iji Istio dozie nsogbu ndị a:
    • Nkwenye mmejọ;
    • Ntugharị ụzọ;
    • Nnwale ọgba aghara;
    • Nchedo;
    • Nchịkọta telemetry na-eji akara, metrik na Grafana.

Ka ibudata akwụkwọ

Usoro isiokwu na meshes ọrụ na Istio

Gbalịa ya n'onwe gị

Ebubeghi usoro nke posts a iji nye omimi miri emi n'ime ụwa nke Istio. Naanị anyị chọrọ iwebata gị na echiche a ma eleghị anya kpalie gị ịnwale Istio n'onwe gị. Ọ nweere onwe ya ime, Red Hat na-enye ngwaọrụ niile ịchọrọ iji OpenShift, Kubernetes, arịa Linux na Istio malite, gụnyere: Onye Mmepụta Okpu Uhie Uhie OpenShift Platform, ndu anyi na Istio na ihe onwunwe ndị ọzọ na anyị microsite na Ọrụ Mesh. Egbula oge, malite taa!

Iwu ụzọ ụzọ Istio: na-eduzi arịrịọ ọrụ ebe ha kwesịrị ịga

Meghee и Kubernetes rụọ ọrụ nke ọma nke ikwu okwu microservices kpọsara ya na pọd ndị achọrọ. Nke a bụ otu n'ime ihe kpatara ịdị adị nke Kubernetes - ntụgharị na nhazi ibu. Ma gịnị ma ọ bụrụ na ịchọrọ ụzọ aghụghọ na ọkaibe karịa? Dịka ọmụmaatụ, iji otu ụdị microservice abụọ n'otu oge. Kedu ka Iwu okporo ụzọ Istio ga-esi nyere aka ebe a?

Iwu ntụgharị bụ iwu na-ekpebi n'ezie nhọrọ nke ụzọ. N'agbanyeghị ọkwa mgbagwoju anya sistemu, ụkpụrụ ọrụ izugbe nke iwu ndị a ka dị mfe: a na-ebugharị arịrịọ dabere na ụfọdụ paramita yana ụkpụrụ isi HTTP.
Ka anyị lee ihe atụ:

Kubernetes ndabara: obere "50/50"

N'ihe atụ anyị, anyị ga-egosi otu esi eji ụdị microservice abụọ n'otu oge na OpenShift, ka anyị kpọọ ha v1 na v2. Ụdị nke ọ bụla na-agba ọsọ na Kubernetes pod nke ya, na ndabara ọ na-agba ọsọ n'ụzọ ziri ezi gburugburu robin. Mpempe akwụkwọ ọ bụla na-anata arịrịọ ya dabere na ọnụọgụ nke ọnọdụ microservice ya, n'okwu ndị ọzọ, oyiri. Istio na-enye gị ohere iji aka gị gbanwee nguzozi a.

Ka anyị kwuo na anyị wepụrụ ụdị abụọ nke ọrụ nkwanye anyị na OpenShift, nkwanye-v1 na nkwanye-v2.
Na fig. Ọnụọgụ 1 na-egosi na mgbe a na-anọchi anya ọrụ ọ bụla n'otu oge, arịrịọ na-agbanwe n'etiti ha: 1-2-1-2-... Nke a bụ otú Kubernetes routing si arụ ọrụ na ndabara:

Usoro nke posts na Istio Service Mesh

Nkesa dị arọ n'etiti nsụgharị

Na fig. Ọgụgụ 2 na-egosi ihe na-eme ma ọ bụrụ na ị mụbaa ọnụọgụ v2 ọrụ oyiri site na otu gaa na abụọ (a na-eme nke a na oc scale —replicas=2 deployment/commendation-v2 Command). Dịka ị na-ahụ, a na-ekewa arịrịọ n'etiti v1 na v2 ugbu a n'usoro otu-na-atọ: 1-2-2-1-2-2-...:

Usoro nke posts na Istio Service Mesh

Wepụ ụdị site na iji Istio

Istio na-eme ka ọ dị mfe ịgbanwe nkesa arịrịọ n'ụzọ anyị chọrọ. Dịka ọmụmaatụ, zipu okporo ụzọ niile na nkwanye-v1 site na iji faịlụ Istio yaml na-esonụ:

Usoro nke posts na Istio Service Mesh

N'ebe a, ị kwesịrị ịṅa ntị na nke a: a na-ahọrọ pods dị ka akara. Ihe atụ anyị na-eji akara v1. Oke “arọ: 100” pụtara na a ga-ebufe 100% nke okporo ụzọ na pọd ọrụ niile nwere akara v1.

Nkesa ntuziaka n'etiti ụdị ( Canary Deployment )

Na-esote, na-eji oke ibu, ị nwere ike iduzi okporo ụzọ gaa na pọd abụọ ahụ, na-eleghara ọnụọgụ microservice na-agba na nke ọ bụla n'ime ha. Dịka ọmụmaatụ, ebe a anyị na-eduzi 90% nke okporo ụzọ gaa na v1 yana 10% gaa v2:

Usoro nke posts na Istio Service Mesh

Ụzọ dị iche iche maka ndị ọrụ mkpanaka

Na mmechi, anyị ga-egosi otu esi amanye okporo ụzọ onye ọrụ mkpanaka ka ebuga ya na ọrụ v2, yana onye ọ bụla ọzọ na v1. Iji mee nke a, anyị na-eji okwu oge niile iji nyochaa uru onye ọrụ-onye ọrụ na nkụnye eji isi mee arịrịọ:

Usoro nke posts na Istio Service Mesh

Ugbu a ọ bụ oge gị

Ọmụmaatụ nwere okwu oge niile maka ntụle nkụnye eji isi mee kwesịrị ịkpali gị ịchọta ojiji nke onwe gị nke iwu ntụgharị Istio. Ọzọkwa, ohere ebe a dị nnọọ ukwuu, ebe ọ bụ na enwere ike ịmepụta ụkpụrụ nkụnye eji isi mee na koodu isi mmalite.

Ma cheta na Ops, ọ bụghị Dev

Ihe niile anyị gosipụtara na ihe atụ ndị dị n'elu na-eme na-enweghị obere mgbanwe na koodu isi mmalite, nke ọma, ma e wezụga maka ikpe ndị ahụ mgbe ọ dị mkpa ịmepụta ndị isi arịrịọ pụrụ iche. Istio ga-aba uru ma ndị mmepe, ndị, dịka ọmụmaatụ, ga-enwe ike iji ya mee ihe n'oge ule, yana ndị ọkachamara na-arụ ọrụ nke usoro IT, bụ ndị ọ ga-enyere aka na mmepụta.

Ya mere, ka anyị kwugharịa leitmotif nke usoro isiokwu a: ịkwesighi ịgbanwe ihe ọ bụla na koodu gị. Ọ dịghị mkpa iwu ihe oyiyi ọhụrụ ma ọ bụ malite arịa ọhụrụ. A na-emejuputa ihe a niile na-abụghị koodu.

Jiri echiche gị mee ihe

Cheedị echiche ohere nke nyocha nkụnye eji isi mee na-eji okwu oge niile. Chọrọ ibugharị nnukwu onye ahịa gị gaa na ụdị pụrụ iche nke gị microservices? Ọ dị mfe! Achọrọ ụdị dị iche maka ihe nchọgharị Chrome? Nsogbu adịghị! Ị nwere ike ịzọ okporo ụzọ dịka ihe fọrọ nke nta ka ọ bụrụ njirimara ọ bụla.

Gbalịa ya n'onwe gị

Ịgụ gbasara Istio, Kubernetes na OpenShift bụ otu ihe, mana gịnị ma ị metụ ihe niile aka n'onwe gị? Otu Mmemme Onye Mmepụta Okpu Uhie akwadola ntuziaka zuru ezu (na Bekee) nke ga-enyere gị aka ịmụta teknụzụ ndị a ngwa ngwa o kwere mee. Akwụkwọ ntuziaka bụkwa 100% mepere emepe, yabụ etinyere ya na ngalaba ọha. Faịlụ a na-arụ ọrụ na macOS, Linux na Windows, yana koodu isi mmalite dị na ụdị Java na node.js (ụdị n'asụsụ ndị ọzọ na-abịa n'oge na-adịghị anya). Naanị mepee ebe nchekwa git kwekọrọ na ihe nchọgharị gị Ihe ngosi onye nrụpụta okpu uhie.

Na post na-esote: anyị na-edozi nsogbu nke ọma

Taa, ị hụrụ ihe iwu ndị na-ebugharị Istio nwere ike ime. Ugbu a, were otu ihe ahụ, mana naanị n'ihe gbasara njikwa njehie. Nke a bụ kpọmkwem ihe anyị ga-ekwu maka ya na post na-esote.

isi: www.habr.com

Tinye a comment