Ziņu sērija vietnē Istio Service Mesh

Mēs sākam ziņu sēriju, kurā tiek parādītas dažas no daudzajām Istio Service Mesh iespējām, apvienojot tās ar Red Hat OpenShift un Kubernetes.

Ziņu sērija vietnē Istio Service Mesh

Pirmā daļa, Ŕodien:

  • Izskaidrosim Kubernetes blakusvāģu konteineru koncepciju un formulēsim Ŕīs ziņu sērijas vadmotÄ«vu: "jums nekas nav jāmaina savā kodā".
  • IepazÄ«stinām ar Istio pamatlietu ā€“ marÅ”rutÄ“Å”anas noteikumiem. Visas pārējās Istio funkcijas ir balstÄ«tas uz tiem, jo ā€‹ā€‹tieÅ”i noteikumi ļauj novirzÄ«t trafiku uz mikropakalpojumiem, izmantojot YAML failus, kas ir ārpus pakalpojuma koda. Mēs arÄ« apsveram Kanāriju izvietoÅ”anas izvietoÅ”anas shēmu. Jaungada bonuss ā€“ 10 interaktÄ«vas nodarbÄ«bas Istio


Drīzumā gaidāmā otrā daļa jums pateiks:

  • Kā Istio ievieÅ” baseina izgrÅ«Å”anu kombinācijā ar Circuit Breaker un parādÄ«s, kā Istio ļauj noņemt no balansÄ“Å”anas ķēdes novecojuÅ”u vai slikti funkcionējoÅ”u podiņu.
  • Mēs arÄ« apskatÄ«sim Circuit Breaker tēmu no pirmās ziņas, lai redzētu, kā Istio var izmantot Å”eit. Mēs parādÄ«sim, kā marÅ”rutēt trafiku un rÄ«koties ar tÄ«kla kļūdām, izmantojot YAML konfigurācijas failus un termināļa komandas, neveicot mazākās izmaiņas pakalpojuma kodā.

TreŔā daļa:

  • Stāsts par izsekoÅ”anu un uzraudzÄ«bu, kas jau ir iebÅ«vēti vai viegli pievienoti Istio. Mēs parādÄ«sim, kā izmantot tādus rÄ«kus kā Prometheus, Jaeger un Grafana kopā ar OpenShift mērogoÅ”anu, lai bez piepÅ«les pārvaldÄ«tu mikropakalpojumu arhitektÅ«ras.
  • Mēs pārejam no kļūdu uzraudzÄ«bas un apstrādes uz to apzinātu ievieÅ”anu sistēmā. Citiem vārdiem sakot, mēs iemācāmies veikt kļūdu ievadÄ«Å”anu, nemainot avota kodu, kas ir ļoti svarÄ«gi no testÄ“Å”anas viedokļa - jo, mainot paÅ”u kodu, pastāv papildu kļūdu risks.

Visbeidzot, pēdējā ierakstā par Istio Service Mesh:

  • Dosimies uz tumÅ”o pusi. PrecÄ«zāk, mēs iemācÄ«simies izmantot Dark Launch shēmu, kad kods tiek izvietots un testēts tieÅ”i uz ražoÅ”anas datiem, taču tas nekādā veidā neietekmē sistēmas darbÄ«bu. Å eit noder Istio spēja sadalÄ«t satiksmi. Un iespēja pārbaudÄ«t tieÅ”os ražoÅ”anas datus, nekādā veidā neietekmējot kaujas sistēmas darbÄ«bu, ir pārliecinoŔākā pārbaudes metode.
  • Pamatojoties uz Dark Launch, mēs parādÄ«sim, kā izmantot Canary Deployment modeli, lai samazinātu risku un atvieglotu jauna koda ievadÄ«Å”anu ražoÅ”anā. Pati Canary Deployment nebÅ«t nav jauna, taču Istio ļauj ieviest Å”o shēmu tikai ar vienkārÅ”iem YAML failiem.
  • Visbeidzot, mēs parādÄ«sim, kā izmantot Istio Egress, lai nodroÅ”inātu piekļuvi pakalpojumiem tiem, kas atrodas ārpus jÅ«su kopām, lai izmantotu Istio iespējas, strādājot ar internetu.

Tātad, lūk...

Istio uzraudzÄ«bas un pārvaldÄ«bas rÄ«ki ā€” viss, kas nepiecieÅ”ams mikropakalpojumu organizÄ“Å”anai servisa tÄ«klā servisa tÄ«kls.

Kas ir Istio Service Mesh

Pakalpojumu tÄ«kls ievieÅ” tādas funkcijas kā satiksmes uzraudzÄ«ba, piekļuves kontrole, atklāŔana, droŔība, kļūdu tolerance un citas pakalpojumu grupai noderÄ«gas lietas. Istio ļauj to visu izdarÄ«t bez mazākajām izmaiņām paÅ”u pakalpojumu kodā. Kāds ir maÄ£ijas noslēpums? Istio katram pakalpojumam pievieno savu starpniekserveri blakusvāģa konteinera veidā (blakusvāģis ir motocikla blakusvāģis), pēc kura visa Ŕī pakalpojuma trafika notiek caur starpniekserveri, kas, vadoties pēc noteiktām politikām, izlemj, kā, kad un vai Ŕī satiksme. vispār vajadzētu sasniegt pakalpojumu. Istio arÄ« ļauj ieviest uzlabotas DevOps metodes, piemēram, kanārijputnu izvietoÅ”anu, slēdžus, kļūdu ievadÄ«Å”anu un daudzas citas.

Kā Istio darbojas ar konteineriem un Kubernetes

Istio pakalpojumu tÄ«kls ir blakusvāģa ievieÅ”ana visam, kas nepiecieÅ”ams mikropakalpojumu izveidei un pārvaldÄ«bai: uzraudzÄ«ba, izsekoÅ”ana, automātiskie slēdži, marÅ”rutÄ“Å”ana, slodzes lÄ«dzsvaroÅ”ana, kļūdu ievadÄ«Å”ana, atkārtojumi, taimauta, spoguļoÅ”ana, piekļuves kontrole, ātruma ierobežoÅ”ana un daudz kas cits. Un, lai gan mÅ«sdienās ir ļoti daudz bibliotēku, lai Ŕīs funkcijas ieviestu tieÅ”i kodā, ar Istio jÅ«s varat iegÅ«t visas tās paÅ”as lietas, neko nemainot savā kodā.

Saskaņā ar blakusvāģa modeli Istio darbojas Linux konteinerā, kas atrodas vienā Kubernetes-pod ar kontrolētu pakalpojumu un ievada un izņem funkcionalitāti un informāciju atbilstoÅ”i dotajai konfigurācijai. Mēs uzsveram, ka Ŕī ir jÅ«su konfigurācija un tā darbojas ārpus jÅ«su koda. Tāpēc kods kļūst daudz vienkārŔāks un Ä«sāks.

SvarÄ«gi ir arÄ« tas, ka mikropakalpojumu operatÄ«vā sastāvdaļa izrādās nekādā veidā saistÄ«ta ar paÅ”u kodu, kas nozÄ«mē, ka to darbÄ«bu var droÅ”i nodot IT speciālistiem. PatieŔām, kāpēc izstrādātājam bÅ«tu jāatbild par slēdžiem un kļūdu ievadÄ«Å”anu? Reaģēt, jā, bet tos apstrādāt un izveidot? Ja jÅ«s to visu noņemsit no koda, programmētāji varēs pilnÄ«bā koncentrēties uz lietojumprogrammu funkcionalitāti. Un pats kods kļūs Ä«sāks un vienkārŔāks.

Servisa siets

Istio, kas ievieÅ” funkcijas mikropakalpojumu pārvaldÄ«bai ārpus to koda, ir pakalpojumu tÄ«kla koncepcija. Citiem vārdiem sakot, tā ir koordinēta viena vai vairāku bināro failu grupa, kas veido tÄ«kla funkciju tÄ«klu.

Kā Istio darbojas ar mikropakalpojumiem

Šādi kopā izskatās blakusvāģu konteineru darbs Kubernetes Šø Minishift Skats no putna lidojuma: palaidiet Minishift gadÄ«jumu, izveidojiet projektu Istio (sauksim to par ā€œistio-sistēmuā€), instalējiet un palaidiet visus ar Istio saistÄ«tos komponentus. Pēc tam, veidojot projektus un aplikumus, izvietoÅ”anai pievienojat konfigurācijas informāciju, un jÅ«su podi sāk izmantot Istio. VienkārÅ”ota diagramma izskatās Ŕādi:

Ziņu sērija vietnē Istio Service Mesh

Tagad jÅ«s varat mainÄ«t Istio iestatÄ«jumus, lai, piemēram, organizētu kļūdu ievadÄ«Å”anu, atbalstu Kanāriju izvietoÅ”ana vai citas Istio funkcijas - un tas viss, nepieskaroties paÅ”u lietojumprogrammu kodiem. Pieņemsim, ka vēlaties novirzÄ«t visu tÄ«mekļa trafiku no sava lielākā klienta (Foo Corporation) lietotājiem uz jaunu vietnes versiju. Lai to izdarÄ«tu, vienkārÅ”i izveidojiet Istio marÅ”rutÄ“Å”anas kārtulu, kas lietotāja ID meklēs @foocorporation.com un attiecÄ«gi novirzÄ«s. Pārējiem lietotājiem nekas nemainÄ«sies. Tikmēr jÅ«s mierÄ«gi testēsiet jauno vietnes versiju. Un ņemiet vērā, ka Å”im nolÅ«kam jums vispār nav jāiesaista izstrādātāji.

Un vai par to būs dārgi jāmaksā?

Nepavisam. Istio ir diezgan ātrs un ir rakstÄ«ts Go un rada ļoti maz pieskaitāmās izmaksas. Turklāt iespējamo tieÅ”saistes produktivitātes zudumu kompensē izstrādātāju produktivitātes pieaugums. Vismaz teorētiski: neaizmirstiet, ka izstrādātāju laiks ir vērtÄ«gs. Kas attiecas uz programmatÅ«ras izmaksām, Istio ir atvērtā pirmkoda programmatÅ«ra, tāpēc varat to iegÅ«t un izmantot bez maksas.

Apgūstiet to pats

Red Hat izstrādātāju pieredzes komanda ir izstrādājusi padziļinātu praktisko darbu vadība autors Istio (angļu valodā). Tas darbojas operētājsistēmās Linux, MacOS un Windows, un kods ir pieejams Java un Node.js versijās.

10 interaktīvas nodarbības par Istio

1. bloks ā€” iesācējiem

Ievads Istio
30 minūtes
Iepazīsimies ar Service Mesh, uzzināsim, kā instalēt Istio OpenShift Kubernetes klasterī.
Sāciet darbu

Mikropakalpojumu izvietoŔana Istio
30 minūtes
Mēs izmantojam Istio, lai izvietotu trīs mikropakalpojumus ar Spring Boot un Vert.x.
Sāciet darbu

2. bloks ā€“ vidējais lÄ«menis

Uzraudzība un izsekoŔana Istio
60 minūtes
Mēs izpētīsim Istio iebūvētos uzraudzības rīkus, pielāgotos rādītājus un OpenTracing, izmantojot Prometheus un Grafana.
Sāciet darbu

VienkārÅ”a marÅ”rutÄ“Å”ana Istio
60 minūtes
Uzziniet, kā pārvaldÄ«t marÅ”rutÄ“Å”anu Istio, izmantojot vienkārÅ”us noteikumus.
Sāciet darbu

Papildu marŔrutēŔanas noteikumi
60 minūtes
ApskatÄ«sim Istio viedo marÅ”rutÄ“Å”anu, piekļuves kontroli, slodzes lÄ«dzsvaroÅ”anu un ātruma ierobežoÅ”anu.
Sāciet darbu

3. bloks ā€“ pieredzējis lietotājs

Bojājuma iesmidzināŔana Istio
60 minūtes
Mēs pētām kļūdu apstrādes scenārijus izplatītajās lietojumprogrammās, radot HTTP kļūdas un tīkla aizkaves, kā arī mācāmies izmantot haosa inženieriju, lai atjaunotu vidi.
Sāciet darbu

Strāvas slēdzis Istio
30 minūtes
Mēs instalējam Siege stresa testÄ“Å”anas vietnēm un uzzinām, kā nodroÅ”ināt aizmugursistēmas kļūdu toleranci, izmantojot atkārtojumus, ķēdes pārtraucēju un baseina izmeÅ”anu.
Sāciet darbu

Egress un Istio
10 minūtes
Mēs izmantojam izejas marÅ”rutus, lai izveidotu noteikumus iekŔējo pakalpojumu mijiedarbÄ«bai ar ārējām API un pakalpojumiem.
Sāciet darbu

Istio un Kiali
15 minūtes
Uzziniet, kā izmantot Kiali, lai iegūtu pārskatu par pakalpojumu tīklu un izpētītu pieprasījumu un datu plūsmas.
Sāciet darbu

Savstarpēja TLS Istio
15 minūtes
Mēs izveidojam Istio Gateway un VirtualService, pēc tam detalizēti izpētām savstarpējo TLS (mTLS) un tā iestatījumus.
Sāciet darbu

3.1. bloks ā€” dziļā nirÅ”ana: Istio pakalpojumu tÄ«kls mikropakalpojumiem

Ziņu sērija vietnē Istio Service Mesh
Par ko ir grāmata:

  • Kas ir pakalpojumu tÄ«kls?
  • Istio sistēma un tās loma mikropakalpojumu arhitektÅ«rā.
  • Izmantojot Istio, lai atrisinātu Ŕādas problēmas:
    • Bojājumu tolerance;
    • MarÅ”rutÄ“Å”ana;
    • Haosa testÄ“Å”ana;
    • DroŔība;
    • Telemetrijas vākÅ”ana, izmantojot pēdas, metriku un Grafana.

Lai lejupielādētu grāmatu

Rakstu sērija par pakalpojumu tīkliem un Istio

Izmēģiniet pats

Å Ä« ziņu sērija nav paredzēta, lai nodroÅ”inātu dziļu ienirt Istio pasaulē. Mēs tikai vēlamies jÅ«s iepazÄ«stināt ar koncepciju un, iespējams, iedvesmot jÅ«s izmēģināt Istio pats. Tas ir pilnÄ«gi bez maksas, un Red Hat nodroÅ”ina visus nepiecieÅ”amos rÄ«kus, lai sāktu darbu ar OpenShift, Kubernetes, Linux konteineriem un Istio, tostarp: Red Hat izstrādātāja OpenShift konteineru platforma, mÅ«su ceļvedis Istio un citi mÅ«su resursi mikrovietne pakalpojumā Service Mesh. Nekavējies, sāc jau Å”odien!

Istio marÅ”rutÄ“Å”anas noteikumi: pakalpojumu pieprasÄ«jumu novirzÄ«Å”ana, kur tiem ir jāiet

openshift Šø Kubernetes lieliski veic uzrunas darbu mikropakalpojumi novirzÄ«ts uz nepiecieÅ”amajām pākstÄ«m. Tas ir viens no Kubernetes pastāvÄ“Å”anas iemesliem ā€“ marÅ”rutÄ“Å”ana un slodzes lÄ«dzsvaroÅ”ana. Bet ko darÄ«t, ja jums ir nepiecieÅ”ama smalkāka un izsmalcinātāka marÅ”rutÄ“Å”ana? Piemēram, lai vienlaikus izmantotu divas mikropakalpojuma versijas. Kā Å”eit var palÄ«dzēt Istio marÅ”ruta noteikumi?

MarÅ”ruta noteikumi ir noteikumi, kas faktiski nosaka marÅ”ruta izvēli. NeatkarÄ«gi no sistēmas sarežģītÄ«bas pakāpes Å”o noteikumu vispārējais darbÄ«bas princips joprojām ir vienkārÅ”s: pieprasÄ«jumi tiek marÅ”rutēti, pamatojoties uz noteiktiem parametriem un HTTP galvenes vērtÄ«bām.
Apskatīsim piemērus:

Kubernetes noklusējuma: triviāls "50/50"

MÅ«su piemērā mēs parādÄ«sim, kā OpenShift vienlaikus izmantot divas mikropakalpojuma versijas, sauksim tās par v1 un v2. Katra versija darbojas savā Kubernetes podā, un pēc noklusējuma tā nodroÅ”ina vienmērÄ«gi lÄ«dzsvarotu marÅ”rutÄ“Å”anu. Katrs pods saņem savu pieprasÄ«jumu daļu, pamatojoties uz tā mikropakalpojumu gadÄ«jumu skaitu, citiem vārdiem sakot, replikām. Istio ļauj mainÄ«t Å”o bilanci manuāli.

Pieņemsim, ka platformā OpenShift esam izvietojuÅ”i divas mÅ«su ieteikumu pakalpojuma versijas ā€” ieteikumu v1 un ieteikumu v2.
Attēlā 1. attēlā parādÄ«ts, ka, kad katrs pakalpojums ir attēlots vienā instancē, pieprasÄ«jumi mainās vienmērÄ«gi: 1-2-1-2-... Kubernetes marÅ”rutÄ“Å”ana pēc noklusējuma darbojas Ŕādi:

Ziņu sērija vietnē Istio Service Mesh

Svērtais sadalījums starp versijām

Attēlā 2. attēlā parādÄ«ts, kas notiek, ja pakalpojuma v2 reprodukciju skaitu palielina no viena lÄ«dz divām (tas tiek darÄ«ts ar komandu oc skalu ā€”replicas=2 deployment/recommendation-v2). Kā redzat, pieprasÄ«jumi starp v1 un v2 tagad ir sadalÄ«ti proporcijā viens pret trÄ«s: 1-2-2-1-2-2-ā€¦:

Ziņu sērija vietnē Istio Service Mesh

Ignorēt versiju, izmantojot Istio

Istio ļauj viegli mainÄ«t pieprasÄ«jumu sadalÄ«jumu mums vajadzÄ«gajā veidā. Piemēram, nosÅ«tiet visu trafiku tikai uz ieteikumu-v1, izmantojot Å”o Istio yaml failu:

Ziņu sērija vietnē Istio Service Mesh

Å eit jums jāpievērÅ” uzmanÄ«ba: pākstis tiek atlasÄ«tas atbilstoÅ”i etiÄ·etēm. MÅ«su piemērā tiek izmantota etiÄ·ete v1. Parametrs ā€œsvars: 100ā€ nozÄ«mē, ka 100% datplÅ«smas tiks novirzÄ«ti uz visiem servisa blokiem, kuriem ir v1 etiÄ·ete.

Direktīvas sadalījums starp versijām (Canary Deployment)

Pēc tam, izmantojot svara parametru, varat novirzÄ«t trafiku uz abiem podiem, ignorējot mikropakalpojumu gadÄ«jumu skaitu, kas darbojas katrā no tiem. Piemēram, Å”eit mēs novirzām 90% datplÅ«smas uz v1 un 10% uz v2:

Ziņu sērija vietnē Istio Service Mesh

AtseviŔķs marŔruts mobilo sakaru lietotājiem

Noslēgumā mēs parādīsim, kā piespiest mobilo lietotāju trafiku novirzīt uz pakalpojuma v2, bet visus pārējos uz v1. Lai to izdarītu, mēs izmantojam regulārās izteiksmes, lai analizētu lietotāja aģenta vērtību pieprasījuma galvenē:

Ziņu sērija vietnē Istio Service Mesh

Tagad ir tava kārta

Piemēram ar regulārām izteiksmēm galveņu parsÄ“Å”anai vajadzētu motivēt jÅ«s atrast savus Istio marÅ”rutÄ“Å”anas noteikumu lietojumus. Turklāt iespējas Å”eit ir diezgan plaÅ”as, jo galvenes vērtÄ«bas var veidot lietojumprogrammas avota kodā.

Un atcerieties, ka Ops, nevis Dev

Viss, ko mēs parādÄ«jām iepriekÅ” minētajos piemēros, tiek darÄ«ts bez mazākajām izmaiņām avota kodā, izņemot gadÄ«jumus, kad ir nepiecieÅ”ams Ä£enerēt Ä«paÅ”u pieprasÄ«jumu galvenes. Istio noderēs gan izstrādātājiem, kuri, piemēram, to varēs izmantot testÄ“Å”anas stadijā, gan IT sistēmu darbÄ«bas speciālistiem, kuriem tas ļoti palÄ«dzēs ražoÅ”anā.

Tātad atkārtosim Ŕīs ziņu sērijas vadmotÄ«vu: kodā nekas nav jāmaina. Nav nepiecieÅ”ams veidot jaunus attēlus vai palaist jaunus konteinerus. Tas viss tiek Ä«stenots ārpus koda.

Izmantojiet savu iztēli

Iedomājieties galvenes analÄ«zes iespējas, izmantojot regulārās izteiksmes. Vēlaties novirzÄ«t savu lielāko klientu uz Ä«paÅ”u savas versijas versiju mikropakalpojumi? Viegli! Vai nepiecieÅ”ama atseviŔķa pārlÅ«kprogrammas Chrome versija? Nekādu problēmu! JÅ«s varat marÅ”rutēt satiksmi pēc gandrÄ«z jebkura rakstura.

Izmēģiniet pats

LasÄ«t par Istio, Kubernetes un OpenShift ir viena lieta, bet kāpēc gan nepieskarties visam paÅ”am? Komanda Red Hat izstrādātāju programma ir sagatavojis detalizētu rokasgrāmatu (angļu valodā), kas palÄ«dzēs jums apgÅ«t Ŕīs tehnoloÄ£ijas pēc iespējas ātrāk. Rokasgrāmata ir arÄ« 100% atvērtā koda, tāpēc tā ir publicēta publiskajā domēnā. Fails darbojas operētājsistēmās macOS, Linux un Windows, un avota kods ir pieejams Java un node.js versijās (drÄ«zumā bÅ«s pieejamas versijas citās valodās). VienkārÅ”i atveriet atbilstoÅ”o git repozitoriju savā pārlÅ«kprogrammā Red Hat izstrādātāja demonstrācija.

Nākamajā ierakstā: mēs lieliski atrisinām problēmas

Å odien jÅ«s redzējāt, ko var darÄ«t Istio marÅ”rutÄ“Å”anas noteikumi. Tagad iedomājieties to paÅ”u, bet tikai saistÄ«bā ar kļūdu apstrādi. TieÅ”i par to mēs runāsim nākamajā ierakstā.

Avots: www.habr.com

Pievieno komentāru