Dark Launch Istios: salajased teenused

«Ohtlikkus on minu teine nimi,» ĂŒtles Austin Powers, rahvusvaheline mĂ”istatuslik kuju. Kuid see, mis on superagente ja eriteenistusi esindavates ringkondades au sees, ei sobi sugugi arvutite teenistustele, kus igavus on ohtudest tunduvalt parem.

Dark Launch Istios: salajased teenused

Ja Istio koos OpenShifti ja Kubernetesega muudavad mikroteenuste juurutamise tĂ”eliselt igavaks ja ettearvatavaks – ja see on suurepĂ€rane. Sellest ja paljuski muust rÀÀgime neljandas ja viimases postituses Istio sarjast.

Kui igavus on Ôige

Meie puhul tekib igavus ainult lĂ”ppfaasis, kui ei jÀÀ muud ĂŒle, kui lihtsalt istuda ja protsessi jĂ€lgida. Kuid selleks tuleb kĂ”ik eelnevalt seadistada, ja siin ootab teid palju huvitavat.

Uue tarkvara versiooni juurutamisel tasub kaaluda kĂ”iki riskide vĂ€hendamise vĂ”imalusi. Töö paralleelselt – see on vĂ€ga tĂ”hus ja katsetatud testimise meetod, ja Istio vĂ”imaldab selleks kasutada "salajast teenistust" (peidetud versiooni teie mikroteenusest, mis ei ole avalikkusele nĂ€htav) ilma tootmissĂŒsteemi töösse sekkumata. Selleks on isegi spetsiaalne mĂ”isted – "Tumedad juurutused" (Dark Launch), mis aktiveeritakse funktsiooni kaudu, millel on mitte vĂ€hem spioonide nimekiri „traffici peegeldamine“.

Pöörake tĂ€helepanu, et eelmise lĂ”igu esimeses lauses kasutatakse mĂ”istet „juurutamine“ (deploy), mitte „vabastamine“ (release). Te tĂ”eliselt peate olema suuteline juurutama – ja muidugi kasutama – oma mikroteenust nii sageli, kui soovite. See teenus peab olema suuteline vastu vĂ”tma ja töötlema liiklust, andma tulemusi ning kirjutama logidesse ja olema jĂ€lgitav. Kuid see teenus ise ei pea tingimata tootmisse minema. Juurutamine ja tarkvara vabastamine ei tĂ€henda alati sama asja. Juurutamist saate teha alati, kui soovite, kuid vabastamine – ainult siis, kui olete lĂ”plikult valmis.

Igavuse korraldamine on huvitav

Vaadake jÀrgmist Istio marsruutimisse tagasituva reeglit, mis suunab kÔik HTTP-pÀringud mikroteenusele recommendation v1 (kÔik nÀited on vÔetud Istio Tutorial GitHub repo), peegeldades neid samal ajal mikroteenusele recommendation v2:

Dark Launch Istios: salajased teenused
Pöörake tĂ€helepanu sildile mirror: ekraanil allosas – just see mÀÀrab liikluse peegeldamise. Jah, see on tĂ”esti nii lihtne!

Selle reegli tulemuseks on see, et teie tootmissĂŒsteem (v1) jĂ€tkab laekuvate pĂ€ringute töötlemist, kuid samas peegeldavad need pĂ€ringud asĂŒmmeetriliselt v2, kus nende tĂ€ielikud koopiad saadetakse. Nii saate testida v2 tööd reaalsetes tingimustes – pĂ€ris andmete ja liiklusega – ilma tootmissĂŒsteemi sekkumiseta. Kas muudab see testimise korraldamise igavaks? Jah, kindlasti. Aga see on tehtud huvitavaks.

Lisame draamat

Pange tĂ€hele, et v2 koodis tuleb arvestada olukordadega, kus laekuvad pĂ€ringud vĂ”ivad andmeid muuta. PĂ€ringud peegelduvad lihtsalt ja lĂ€bipaistvalt, kuid testimise töötlemise meetodi valik jÀÀb teie otsustada – ja see on juba natuke pĂ”nev.

Kordame olulist punkti

Tumedat kÀivitamist koos liikluse peegeldamisega (Dark Launch/Request Mirroring) saab teha, mÔjutamata koodi.

MĂ”tleme selle ĂŒle

Aga mis siis, kui peegeldada osa pĂ€ringutest mitte v1-le, vaid v2-le? NĂ€iteks ĂŒks protsent kĂ”igist pĂ€ringutest vĂ”i ainult teatud kasutajagruppi pĂ€ringud. Ja siis, vaadates, kuidas v2 töötab, hakata jĂ€rk-jĂ€rgult kĂ”ik pĂ€ringud uuele versioonile ĂŒle viima. VĂ”i vastupidi, tuua kĂ”ik tagasi v1-le, kui v2-l peaks midagi valesti minema. Tundub, et seda nimetatakse kanaride juurutamiseks (Canary Deployment) – termin, mis pĂ€rineb kaevandamisest, ja kui sellel oleks vene pĂ€ritolu, sisaldaks see tĂ”enĂ€oliselt viidet kasplace), ja nĂŒĂŒd vaatame seda lĂ€hemalt.

Kanaride juurutamine Istios: lihtsustame juurutamise protsessi

Aeglaselt ja ettevaatlikult

Kanaride juurutamise mudeli pĂ”hiolemus on ÀÀrmiselt lihtne: uusi tarkvaraversioone (meie puhul - mikroteenust) kĂ€ivitades anname kĂ”igepealt juurdepÀÀsu sellele vĂ€ikesele kasutajagrupile. Kui kĂ”ik lĂ€heb hĂ€sti, suurendate aeglaselt seda gruppi kuni selleni, et uus versioon hakkab takerduma, vĂ”i - kui seda ei juhtu - lĂ”puks viite iga kasutaja ĂŒle sellele. Uue versiooni hoolikas ja jĂ€rkjĂ€rguline juurutamine ning kasutajate sellele ĂŒleminekute kontrollimine aitab riskide vĂ€hendamiseks ja tagasiside maksimeerimiseks.

Muidugi lihtsustab Istio Canary Deployment'i, pakkudes mitmeid hÀid valikuid intelligentseks pÀringute suunamiseks. Ja jah, kÔik see on vÔimalik teha, puudutamata teie algkoodi.

Filtreerime brauserit

Üks lihtsamaid suunamise kriteeriume on suunamine brauseri alusel. Oletame, et soovite, et v2-le suunduksid ainult pĂ€ringud Safari brauseritest. Nii see kĂ€ib:

Dark Launch Istios: salajased teenused
Kohaldame seda suunamisreeglit ja seejĂ€rel komandiga curl simuleerime tsĂŒklis reaalseid pĂ€ringuid mikroteenusele. Nagu screenshot'ilt nĂ€ha, suunduvad kĂ”ik need v1-le:

Dark Launch Istios: salajased teenused
Aga kus on liiklus v2-le? Kuna meie nĂ€ites lĂ€ksid kĂ”ik pĂ€ringud ainult meie kĂ€surealt, siis seda lihtsalt pole. Kuid pöörake tĂ€helepanu ĂŒlemistele ridadele ĂŒlaltoodud pildil: see on reaktsioon sellele, et sooritasime pĂ€ringu Safari brauserist, mis andis vastuseks jĂ€rgmist:

Dark Launch Istios: salajased teenused

Piiramatu vÔim

Oleme juba kirjutanud, et regulaarsed vÀljendid pakuvad vÀga vÔimsaid vÔimalusi pÀringute suunamiseks. Vaadake jÀrgmist nÀidet (arvatavasti mÔistate ka ise, mida see teeb):

Dark Launch Istios: salajased teenused
NĂŒĂŒd on teil tĂ”enĂ€oliselt juba ettekujutus, milleks regulaarsed vĂ€ljendid suutelised on.

KĂ€itu targalt

Nutikas suunamine, sealhulgas pealkirjade pakettide töötlemine regulaarsete vĂ€ljenditega, vĂ”imaldab liiklust juhtida nii, nagu soovite. Ja see lihtsustab oluliselt uue koodi kasutusele vĂ”tmist – see on lihtne, see ei nĂ”ua koodi enda muutmist ja vajadusel saab kĂ”ik kiiresti tagasi vĂ”tta, nagu oli.

Huvitav?

Kas tunnete soovi katsetada Istio, Kubernetes'i ja OpenShift'i oma arvutis? Meeskond Red Hat Developer Team on valmistanud suurepÀrase Ôpikule selle teemaga ja avaldanud kÔik sellega seotud failid. Nii et edasi, ja Àrge tehke endale mingeid piiranguid.
 

Istio Egress: vÀljapÀÀs suveniiripoest

Kasutades Istio koos Red Hat OpenShift'i ja Kubernetes'iga, saate mĂ€rkimisvÀÀrselt lihtsustada oma elu mikroteenustega. Istio teenuse vĂ”rk on peidetud Kubernetes'e pod'idesse, ja teie kood töötab (enamasti) eraldi. Suurus, lihtsus, jĂ€lgimine ja muu – kĂ”ike seda on lihtne kasutada just sidecar konteinerite rakendamise tĂ”ttu. Aga mis juhtub, kui teie mikroteenus peab suhtlema teiste teenustega, mis asuvad teie OpenShift-Kubernetes sĂŒsteemist vĂ€ljas?

Siin aitab meid Istio Egress. LĂŒhidalt öeldes vĂ”imaldab see ligipÀÀsu ressurssidele (loe: "teenused"), mis ei kuulu teie Kubernetes'i pod'idesse. Kui tĂ€iendavat seadistust ei tehta, siis Istio Egress'i keskkonnas suunatakse liiklus ainult pod'ide klastrite vahel ja nende vahel vastavalt sisestatud IP-tabelitele. See "kastist vĂ€lja lĂŒkkamine" töötab suurepĂ€raselt, kuni vajate ligipÀÀsu vĂ€listele teenustele.

Egress vÔimaldab mööduda eelnevalt mainitud IP-tabelitest kas Egress reeglite pÔhjal vÔi IP-aadresside vahemike jaoks.

Oletame, et meil on Java programm, mis teeb GET-pÀringu httpbin.org/headers.

(httpbin.org on lihtsalt mugav ressurss vÀljaminevate teenuspÀringute testimiseks.)

Kui sisestate kÀsureale curl http://httpbin.org/headers, nÀeme jÀrgmist:

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

Dark Launch Istios: salajased teenused
Nagu nÀeme, tagastab sealne teenus lihtsalt edastatud pÀised.

Importimine otse

NĂŒĂŒd vĂ”tame selle teenuse Java koodi, mis on meie sĂŒsteemi suhtes vĂ€line, ja kĂ€ivitame selle meie arvutis, kus, meenutame, on Istio. (Saate seda ise teha, minnes meie Istio juhendisse.) KĂ”ivates vastava konteineri ja kĂ€ivitades selle OpenShift platvormil, kutsub me selle teenuse kĂ€suga curl egresshttpbin-istioegress.$(minishift ip).nip.io, pĂ€rast mida nĂ€eme ekraanil jĂ€rgmist:

Dark Launch Istios: salajased teenused
Oi, mis juhtus? See töötas just. Mis tÀhendab Not Found? Me just tegime sellele curl.

Laiendame IP-tabeleid kogu internetile

Selle eest vĂ”ib tĂ€nada (vĂ”i sĂŒĂŒdistada) Istio't. Eks ole, Istio on lihtsalt sidecar-konteinerid, mis vastutavad avastamise ja suunamise (ja palju muu eest, millest oleme varasemalt rÀÀkinud). SeetĂ”ttu teavad IP-tabelid vaid sellest, mis asub teie klastrite sĂŒsteemis. Ent httpbin.org asub vĂ€ljas ja on seetĂ”ttu kĂ€ttesaamatu. Ja siin tulebki appi Istio Egress – ilma ĂŒhegi muudatuseta teie lĂ€htekoodis.

Allpool toodud Egress-reegel sunnib Istio't otsima (vajadusel ka kogu maailmas) vajalikku teenust, antud juhul httpbin.org. Nagu nĂ€ha sellest failist (egress_httpbin.yml), on funktsionaalsus siin ĂŒsna lihtne:

Dark Launch Istios: salajased teenused
JÀÀb 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 teenused
Ja lĂ”puks, kĂ€ivitame uuesti kĂ€su curl – ja nĂ€eme, et kĂ”ik töötab:

Dark Launch Istios: salajased teenused

MÔtle avatud

Nagu nĂ€ete, vĂ”imaldab Istio korraldada suhtlemist ka vĂ€lismaailmaga. TeisisĂ”nu, vĂ”ite endiselt luua OpenShift'i teenuseid ja hallata neid Kubernetes'i kaudu, hoides kĂ”ik pod'ides, mis skaleeruvad ĂŒles-alla vastavalt vajadusele. Ja samas vĂ”ite rahulikult pöörduda vĂ€liste teenuste poole, mis ei kuulu teie keskkonda. Ja jah, veel kord kordame, et kĂ”ike seda saab teha, puudutamata teie koodi.

See oli viimane postitus seerias Istio. PĂŒsige meiega – ees on veel palju huvitavat!

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster