«Oht on minu teine nimi,» ĂŒtles Austin Powers, rahvusvaheline mĂ”istatus. Kuid see, mis on superagentide ja salateenistuste seas au sees, ei sobi arvutiteenistustele, kus igavus on palju parem kui oht.

Ja Istio koos OpenShift ja Kubernetesega muudavad mikroteenuste juurutamise tĂ”eliselt igavaks ja ennustatavaks â ja see on suurepĂ€rane. Sellest ja paljust muust rÀÀgime neljandas ja viimases postituses Istio seeriast.
Kui igavus on Ôige
Meie puhul tekib igavus alles lÔppfaasis, kui jÀÀb vaid istuda ja protsessi vaadata. Kuid selleks tuleb kÔik eelnevalt seadistada, ja siin ootab teid palju huvitavat.
Uue tarkvara versiooni juurutamisel tasub kaaluda kĂ”iki riski vĂ€hendamise vĂ”imalusi. Paralleelne tööreĆŸiim on vĂ€ga vĂ”imas ja tĂ”estatud testimismeetod ning Istio vĂ”imaldab selleks kasutada "salajast teenust" (teise, vĂ€listele silmadele peidetud versiooni teie mikroteenustest) ilma tootmisĂŒsteemi töösse sekkumata. Selle jaoks on isegi spetsiaalne termin â "Salajane kĂ€ivitamine" (Dark Launch), mille aktiveerimiseks on kasutada mitte vĂ€hem spioonide nime kandev funktsioon "liikluspeegeldamine".
Pange tĂ€hele, et eelneva lĂ”igu esimeses lauses kasutatakse terminit âlaadimineâ (deploy), mitte âvabastamineâ (release). Te peaksite tĂ”eliselt olema vĂ”imelised laadima â ja loomulikult kasutama â oma mikroteenust nii tihti kui soovite. See teenus peab olema vĂ”imeline vastu vĂ”tma ja töötlema liiklust, andma tulemusi ning logima ja jĂ€lgima. Kuid see teenus ei pea tingimata olema tootmisse vabastatud. Laadimine ja tarkvara vabastamine ei ole alati sama asi. Laadimist saate teha alati, kui soovite, kuid vabastamisega peate ootama, kuni olete lĂ”plikult valmis.
Igavuse korraldamine on huvitav
Vaadake jÀrgmist Istio marsruutimisreeglit, mis suunab kÔik HTTP-pÀringud mikroteenusele recommendation v1 (kÔik nÀited on vÔetud ), samal ajal peegeldades neid mikroteenusele recommendation v2:

Pange tĂ€hele sildist mirror: ekraani allosas â just see mÀÀrab liikluse peegeldamise. Jah, nii lihtne!
Selle reegli rakendamise tulemusena jĂ€tkab teie tootmissĂŒsteem (v1) tulevate pĂ€ringute töötlemist, kuid need pĂ€ringud kajastuvad asĂŒnkroonselt v2-s, s.t. sinna saadetakse nende tĂ€isduplikaadid. Nii saate testida v2 toimimist reaalsetes tingimustes â tegelike andmete ja liikluse peal â sekkumata tootmissĂŒsteemi tööse. Kas see muudab testimise igavaks? Jah, kindlasti. Aga see toimub pĂ”nevalt.
Lisame draamat
Pange tĂ€hele, et v2 koodis tuleb arvesse vĂ”tta olukordi, kus sissetulevad pĂ€ringud vĂ”ivad andmeid muuta. PĂ€ringud kajastuvad kergesti ja lĂ€bipaistvalt, kuid katse töötlemise viis jÀÀb teie otsustada â ja see on juba veidi Ă€rev.
Kordame olulist punkti
Salajast liikluse kajastamist (Dark Launch/Request Mirroring) saab teostada, mÔjutamata koodi.
MÔtle sellele
Aga mis siis, kui peegeldamise koha asemel saadame osa pĂ€ringutest mitte v1-le, vaid v2-le? NĂ€iteks ĂŒks protsent kĂ”igist pĂ€ringutest vĂ”i ainult teatud kasutajagrupi pĂ€ringud. Ja seejĂ€rel, jĂ€lgides, kuidas v2 töötab, jĂ€rk-jĂ€rgult suunata kĂ”ik pĂ€ringud uuele versioonile. VĂ”i vastupidi, tuua kĂ”ik tagasi v1-le, kui v2-l peaks midagi valesti minema. Tundub, et seda nimetatakse Canary Deployment ('kanareekoneering' - termin , ja kui sellel oleks Vene pĂ€ritolu, sisaldaks see tĂ”enĂ€oliselt viidet ), ja nĂŒĂŒd vaatame seda lĂ€hemalt.
Canary Deployment Istios: lihtsustame kÀivitamist
Aeglaselt ja ettevaatlikult
Canary Deployment mudeli olemus on ÀÀrmiselt lihtne: kui kĂ€ivitate uue versiooni oma tarkvarast (meie juhul mikroteenusest), siis anname sellele esialgu juurdepÀÀsu vĂ€ikesele kasutajate rĂŒhmale. Kui kĂ”ik lĂ€heb hĂ€sti, suurendate aeglaselt seda gruppi, kuni uus versioon hakkab hĂ€irima, vĂ”i - kui seda ei juhtu - lĂ”puks suunate selle kĂ”ikidele kasutajatele. Uue versiooni hoolikas ja jĂ€rkjĂ€rguline kasutusele vĂ”tmine ning kontrollitud kasutajate ĂŒleviimine vĂ€hendab riske ja maksimeerib tagasisidet.
Loomulikult lihtsustab Istio Canary Deployments, pakkudes mitmeid hÀid valikuid intelligentseks pÀringute suunamiseks. Ja jah, kÔike seda saab teha, puudutamata teie algkoodi.
Filtreerime brauseri
Ăks lihtsamaid suunamiskriteeriume on suunamine brauseri jĂ€rgi. Oletame, et soovite, et v2-le suunatakse ainult pĂ€ringud Safari brauseritest. Nii seda tehakse:

Rakendame seda suunamisreeglit ja seejĂ€rel curl simuleerime tsĂŒklis reaalseid pĂ€ringuid mikroteenusele. Nagu ekraanipildilt nĂ€ha, suunatakse need kĂ”ik v1-le:

Kus on v2 liiklus? Kuna meie nĂ€ites tulid kĂ”ik pĂ€ringud ainult meie enda kĂ€surealt, siis seda lihtsalt ei ole. Kuid vaadake ĂŒleval olevaid alumisi ridu: see on reaktsioon sellele, et sooritasime pĂ€ringu Safari brauserist, mis andis meile jĂ€rgmist:

Piiramatu vÔim
Oleme juba kirjutanud, et regulaaravaldised pakuvad vÀga vÔimsaid vÔimalusi pÀringute marsruutimiseks. Vaadake jÀrgmist nÀidet (arvestame, et mÔistate isegi, mida see teeb):

NĂŒĂŒd on teil tĂ”enĂ€oliselt juba ettekujutus regulaaravalduste vĂ”imetest.
KĂ€ituge nutikalt
Nutikas marsruutimine, eelkĂ”ige pakettide pĂ€iste töötlemine regulaaravalduste abil, vĂ”imaldab liiklust suunata just nii, nagu soovite. Ja see lihtsustab uue koodi tööle rakendamist â see on lihtne, ei vaja koodi muutmist ja vajadusel saab kĂ”ike kiiresti tagasi pĂ”hiringi.
Kas olete huvitatud?
Kas olete innustunud katsetama Istio, Kubernetes ja OpenShift oma arvutis? Meeskond valmistab ette suurepĂ€rast selle teema kohta ning jagasin kĂ”iki seotud faile ĂŒldiseks kasutamiseks. Nii et edasi ja Ă€rge keelake endale mitte midagi.
â
Istio Egress: vÀljumine suveniiripoe kaudu
Kasutades Istio koos Red Hat OpenShift ja Kubernetes'iga, saab mikroteenuste haldamise oluliselt lihtsamaks. Istio teenusteside on peidetud Kubernetes'e pod'idesse, samas kui teie kood töötab (peamiselt) isoleeritult. JĂ”udlus, muudatuste lihtsus, jĂ€lgimine ja muu selline â kĂ”ik see on lihtne tĂ€nu sidecar konteinerite kasutamisele. Kuid mida teha, kui teie mikroteenus peab suhtlema teiste teenustega, mis asuvad vĂ€ljaspool teie OpenShift-Kubernetes sĂŒsteemi?
Siia tuleb appi Istio Egress. LĂŒhidalt öeldes vĂ”imaldab see juurdepÀÀsu ressurssidele (loe: âteenusteleâ), mis ei kuulu teie Kubernetes'e pod'ide sĂŒsteemi. Kui te ei tee tĂ€iendavat seadistust, siis Istio Egress keskkonnas suunatakse liiklus ainult pod'ide klastris ja nende vahel sisemiste IP-tabelite alusel. Selline isoleeritus töötab suurepĂ€raselt, kuni vajate juurdepÀÀsu teenustele vĂ€ljastpoolt.
Egress vĂ”imaldab ĂŒletada ĂŒlaltoodud IP-tabeleid, kas Egress reeglite pĂ”hjal vĂ”i IP-aadresside vahemiku alusel.
Oletame, et meil on Java-programm, mis teeb GET-pÀringu aadressile httpbin.org/headers.
(httpbin.org on lihtsalt mugav ressurss vÀljuvate teenuse-pÀringute testimiseks.)
Kui sisestada kÀsureale curl http://httpbin.org/headers, nÀeme jÀrgmist:

VÔi vÔite avada sama aadressi brauseris:

Nagu nÀeme, tagastab seal asuv teenus lihtsalt saadetud pÀised.
Impordime otse
NĂŒĂŒd vĂ”tame selle vĂ€listeenuse Java-koodi ja kĂ€ivitame selle endal, kus, meenutame, on Istio. (Saate seda ise teha, jĂ€rgides .) Koostades vastava konteineri ja kĂ€ivitades selle OpenShift platvormil, kutsume seda teenust kĂ€suga curl egresshttpbin-istioegress.$(minishift ip).nip.io, pĂ€rast mida nĂ€eme ekraanil jĂ€rgmist:

Hmm, mis juhtus? KÔik töötas just hiljuti. Mida tÀhendab Not Found? Me just loomise jaoks tegime selle curl.
Laiene IP-tabelid kogu internetile.
Selle eest tuleb sĂŒĂŒdistada (vĂ”i tĂ€nada) Istio't. Istio on lihtsalt sidecar-konteinerid, mis vastutavad avastamise ja marsruutimise (ning paljude muude asjade eest, millest oleme varem rÀÀkinud). Just seetĂ”ttu teavad IP-tabelid ainult sellest, mis asub teie klastrisĂŒsteemi sees. Httpbin.org asub vĂ€ljaspool ja seetĂ”ttu ei ole sellele ligipÀÀsu. Siin tulebki appi Istio Egress â ilma, et oleks vajalikud muudatused teie lĂ€htekoodis.
Allolev Egress-reegel paneb Istio otsima (vajadusel ka kogu maailmast) vajalikku teenust, antud juhul httpbin.org. Nagu nĂ€ha failist (egress_httpbin.yml), on siin funktsionaalsus ĂŒsna lihtne:

JÀÀb ĂŒle vaid see reegel rakendada:
istioctl create -f egress_httpbin.yml -n istioegress
Egress-reegleid saab vaadata kÀsuga istioctl get egressrules:

Ja lĂ”puks, kĂ€ivitame taas kĂ€su curl â ja nĂ€eme, et kĂ”ik töötab:

MÔtle avatud meelega
Nagu nĂ€ete, vĂ”imaldab Istio korraldada suhtlemist ka vĂ€lismaailmaga. TeisisĂ”nu, saate luua OpenShifti teenuseid ja hallata neid Kubernetes'i kaudu, hoides kĂ”ik pod'ides, mis vajadusel ĂŒles vĂ”i alla skaalal. Samuti saate rahulikult rÀÀkida vĂ€listest teenustest, mis on teie keskkonna suhtes. Ja jah, kordame veel kord, et kĂ”ike seda saab teha, puudutamata teie koodi.
See oli viimane postitus Istio seeriast. JÀÀge meiega â ees on palju huvitavat!
Allikas: habr.com
