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.
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:
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
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.
Å Ä« 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:
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-ā¦:
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:
Å 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:
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Ä:
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.
Å 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Ä.