Dark Launch Istios: salajased teenistused

«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.

Dark Launch Istios: salajased teenistused

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 Istio Tutorial GitHub repo), samal ajal peegeldades neid mikroteenusele recommendation v2:

Dark Launch Istios: salajased teenistused
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 tĂ”useb kaevandamise alalt, ja kui sellel oleks Vene pĂ€ritolu, sisaldaks see tĂ”enĂ€oliselt viidet kaslastele), 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:

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

Dark Launch Istios: salajased teenistused
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:

Dark Launch Istios: salajased teenistused

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):

Dark Launch Istios: salajased teenistused
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 Red Hat Developer Team valmistab ette suurepĂ€rast Ă”petust 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:

Dark Launch Istios: salajased teenistused
VÔi vÔite avada sama aadressi brauseris:

Dark Launch Istios: salajased teenistused
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 meie Istio juhendit.) 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:

Dark Launch Istios: salajased teenistused
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:

Dark Launch Istios: salajased teenistused
JÀÀb ĂŒle vaid see reegel rakendada:

istioctl create -f egress_httpbin.yml -n istioegress

Egress-reegleid saab vaadata kÀsuga istioctl get egressrules:

Dark Launch Istios: salajased teenistused
Ja lĂ”puks, kĂ€ivitame taas kĂ€su curl – ja nĂ€eme, et kĂ”ik töötab:

Dark Launch Istios: salajased teenistused

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

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster