Dark Launch in Istio: Secret Services

ā€œBriesmas ir mans otrais vārds,ā€ mēdza teikt Ostins Pauers, starptautisks noslēpumains cilvēks. Bet tas, ko lielā cieņā tur superaÄ£enti un izlÅ«kdienesti, nepavisam neder datorpakalpojumiem, kur garlaicÄ«ba ir daudz labāka par briesmām.

Dark Launch in Istio: Secret Services

Un Istio kopā ar OpenShift un Kubernetes padara mikropakalpojumu izvietoÅ”anu patiesi garlaicÄ«gu un paredzamu - un tas ir lieliski. Par to un daudz ko citu mēs runāsim Istio sērijas ceturtajā un pēdējā ierakstā.

Kad garlaicība ir pareiza

MÅ«su gadÄ«jumā garlaicÄ«ba rodas tikai beigu fāzē, kad atliek tikai sēdēt un vērot procesu. Bet Å”im nolÅ«kam vispirms viss ir jākonfigurē, un Å”eit jÅ«s gaida daudz interesantu lietu.

Izvietojot jaunu programmatÅ«ras versiju, ir vērts apsvērt visas iespējas risku samazināŔanai. Paralēlā darbÄ«ba ir ļoti spēcÄ«gs un pārbaudÄ«ts testÄ“Å”anas veids, un Istio ļauj izmantot ā€œslepeno pakalpojumuā€ (jÅ«su mikropakalpojuma slēpto versiju), lai to paveiktu, netraucējot ražoÅ”anas sistēmai. Tam ir pat Ä«paÅ”s termins - ā€œDark Launchā€, kuru savukārt aktivizē funkcija ar tikpat spiegu nosaukumu ā€œtraffic mirroringā€.

LÅ«dzu, ņemiet vērā, ka iepriekŔējās rindkopas pirmajā teikumā ir lietots termins ā€œizvietotā€, nevis ā€œizlaistā€. Jums patieŔām vajadzētu bÅ«t iespējai izvietot un, protams, izmantot savu mikropakalpojumu tik bieži, cik vēlaties. Å im pakalpojumam ir jāspēj saņemt un apstrādāt trafiku, radÄ«t rezultātus, kā arÄ« rakstÄ«t žurnālos un pārraudzÄ«t. Bet tajā paŔā laikā Å”is pakalpojums nav obligāti jāievieÅ” ražoÅ”anā. ProgrammatÅ«ras izvietoÅ”ana un izlaiÅ”ana ne vienmēr ir viens un tas pats. Varat izvietot, kad vien vēlaties, bet atlaist tikai tad, kad esat gatavs.

Organizēt garlaicību ir interesanti

Apskatiet Å”o Istio marÅ”rutÄ“Å”anas kārtulu, kas novirza visus HTTP pieprasÄ«jumus uz mikropakalpojuma ieteikumu v1 (visi piemēri ņemti no Istio apmācÄ«ba GitHub repo), vienlaikus atspoguļojot tos ieteikuma v2 mikropakalpojumā:

Dark Launch in Istio: Secret Services
Pievērsiet uzmanÄ«bu etiÄ·etei mirror: ekrāna apakŔā - tas ir tas, kas iestata satiksmes spoguļoÅ”anu. Jā, tas ir tik vienkārÅ”i!

Å Ä«s kārtulas rezultāts bÅ«s tāds, ka jÅ«su ražoÅ”anas sistēma (v1) turpinās apstrādāt ienākoÅ”os pieprasÄ«jumus, bet paÅ”i pieprasÄ«jumi tiks asinhroni atspoguļoti v2, tas ir, to pilnie dublikāti nonāks tur. Tādā veidā jÅ«s varat pārbaudÄ«t v2 reālos apstākļos ā€” uz reāliem datiem un trafiku ā€”, nekādā veidā neiejaucoties ražoÅ”anas sistēmas darbÄ«bā. Vai tas padara testÄ“Å”anas organizÄ“Å”anu garlaicÄ«gu? Jā noteikti. Bet tas tiek darÄ«ts interesantā veidā.

Pievienosim drāmu

LÅ«dzu, ņemiet vērā, ka v2 kodā ir jāparedz situācijas, kad ienākoÅ”ie pieprasÄ«jumi var izraisÄ«t datu izmaiņas. PaÅ”i pieprasÄ«jumi tiek atspoguļoti viegli un pārskatāmi, taču apstrādes metodes izvēle testā ir jÅ«su ziņā ā€“ un tas ir nedaudz satraucoÅ”i.

Atkārtosim svarīgu punktu

Slepeno palaiÅ”anu ar satiksmes spoguļoÅ”anu (Dark Launch/Request Mirroring) var veikt, nekādā veidā neietekmējot kodu.

Viela pārdomām

Ko darÄ«t, ja vieta, kur tiek atspoguļoti pieprasÄ«jumi, dažus no tiem nosÅ«ta nevis uz v1, bet gan uz v2? Piemēram, viens procents no visiem pieprasÄ«jumiem vai tikai pieprasÄ«jumi no noteiktas lietotāju grupas. Un tad, jau skatoties, kā darbojas v2, pakāpeniski pārnesiet visus pieprasÄ«jumus uz jauno versiju. Vai otrādi, atgrieziet visu uz v1, ja kaut kas neizdodas ar v2. Es domāju, ka to sauc par Canary Deployment. atgriežas kalnrÅ«pniecÄ«bā, un, ja tas bÅ«tu krievu izcelsmes, tas droÅ”i vien saturētu atsauci uz kaÄ·i), un tagad mēs to aplÅ«kosim sÄ«kāk.

Canary Deployment in Istio: vienkārŔota nodoŔana ekspluatācijā

Uzmanīgi un pakāpeniski

Canary Deployment izvietoÅ”anas modeļa bÅ«tÄ«ba ir ārkārtÄ«gi vienkārÅ”a: palaižot jaunu programmatÅ«ras versiju (mÅ«su gadÄ«jumā mikropakalpojumu), vispirms pieŔķirat tai piekļuvi nelielai lietotāju grupai. Ja viss norit labi, lēnām palieliniet Å”o grupu, lÄ«dz jaunā versija sāk darboties, vai, ja tā nenotiek, galu galā migrējiet uz to visus lietotājus. Pārdomāti un pakāpeniski ievieÅ”ot jaunu versiju un kontrolēti pārslēdzot lietotājus uz to, jÅ«s varat samazināt riskus un palielināt atgriezenisko saiti.

Protams, Istio vienkārÅ”o Canary Deployment, piedāvājot vairākas labas iespējas viedajai pieprasÄ«jumu marÅ”rutÄ“Å”anai. Un jā, to visu var izdarÄ«t, nekādā veidā nepieskaroties jÅ«su avota kodam.

PārlÅ«ka filtrÄ“Å”ana

Viens no vienkārŔākajiem marÅ”rutÄ“Å”anas kritērijiem ir pārlÅ«kprogrammas pāradresācija. Pieņemsim, ka vēlaties, lai tikai Safari pārlÅ«kprogrammu pieprasÄ«jumi tiktu pārsÅ«tÄ«ti uz versiju 2. LÅ«k, kā tas tiek darÄ«ts:

Dark Launch in Istio: Secret Services
Piemērosim Å”o marÅ”rutÄ“Å”anas noteikumu un pēc tam izmantosim komandu curl Mēs simulēsim reālus pieprasÄ«jumus mikropakalpojumam ciklā. Kā redzat ekrānuzņēmumā, tie visi pāriet uz v1:

Dark Launch in Istio: Secret Services
Kur ir satiksme v2? Tā kā mÅ«su piemērā visi pieprasÄ«jumi nāca tikai no mÅ«su paÅ”u komandrindas, tā vienkārÅ”i nepastāv. Bet pievērsiet uzmanÄ«bu apakŔējām rindiņām iepriekÅ” redzamajā ekrānā: tā ir reakcija uz faktu, ka mēs izpildÄ«jām pieprasÄ«jumu no pārlÅ«kprogrammas Safari, kas savukārt radÄ«ja Å”o:

Dark Launch in Istio: Secret Services

Neierobežota jauda

Mēs jau rakstÄ«jām, ka regulārās izteiksmes nodroÅ”ina ļoti jaudÄ«gas iespējas marÅ”rutÄ“Å”anas pieprasÄ«jumiem. Apskatiet Å”o piemēru (domājam, ka jÅ«s sapratÄ«sit, ko tas dara):

Dark Launch in Istio: Secret Services
Tagad jums, iespējams, ir priekÅ”stats par to, ko var darÄ«t regulārās izteiksmes.

RÄ«kojies gudri

Viedā marÅ”rutÄ“Å”ana, jo Ä«paÅ”i pakeÅ”u galveņu apstrāde, izmantojot regulārās izteiksmes, ļauj jums virzÄ«t trafiku tā, kā vēlaties. Un tas ievērojami vienkārÅ”o jaunā koda ievieÅ”anu - tas ir vienkārÅ”i, nav jāmaina pats kods, un, ja nepiecieÅ”ams, visu var ātri atgriezt tā, kā tas bija.

Interesē?

Vai vēlaties savā datorā eksperimentēt ar Istio, Kubernetes un OpenShift? Komanda Red Hat izstrādātāju komanda sagatavoja izcilu mācÄ«bu grāmata par Å”o tēmu un padarÄ«ja visus pievienotos failus publiski pieejamus. Tāpēc uz priekÅ”u un neliedz sev neko.
ā€ƒ

Istio Egress: izeja caur suvenīru veikalu

Izmantojot Istio kopā ar Red Hat OpenShift un Kubernetes, jÅ«s varat ievērojami atvieglot savu dzÄ«vi ar mikropakalpojumiem. Istio pakalpojumu tÄ«kls ir paslēpts Kubernetes podiņos, un jÅ«su kods darbojas (galvenokārt) izolēti. Veiktspēja, viegla maiņa, izsekoÅ”ana utt. ā€“ tas viss ir ērti lietojams, pateicoties blakusvāģu konteineru izmantoÅ”anai. Bet ko darÄ«t, ja jÅ«su mikropakalpojumam ir jāsazinās ar citiem pakalpojumiem, kas atrodas ārpus jÅ«su OpenShift-Kubernetes sistēmas?

Å eit palÄ«gā nāk Istio Egress. ÄŖsumā, tas vienkārÅ”i ļauj piekļūt resursiem (lasi: ā€œpakalpojumiemā€), kas neietilpst jÅ«su Kubernetes podziņu sistēmā. Ja neveicat papildu konfigurÄ“Å”anu, Istio Egress vidē trafika tiek marÅ”rutēta tikai podiņu klasterÄ« un starp Ŕādiem klasteriem, pamatojoties uz iekŔējām IP tabulām. Un Ŕāda pupa strādā lieliski, kamēr jums nav nepiecieÅ”ama piekļuve pakalpojumiem no ārpuses.

Egress ļauj apiet iepriekÅ” minētās IP tabulas, pamatojoties uz Egress noteikumiem vai IP adreÅ”u diapazonu.

Pieņemsim, ka mums ir Java programma, kas veic GET pieprasījumu uz httpbin.org/headers.

(httpbin.org ir tikai ērts resurss izejoÅ”o pakalpojumu pieprasÄ«jumu pārbaudei.)

Ja ievadāt komandrindā curl http://httpbin.org/headers, mēs redzēsim sekojoÅ”o:

Dark Launch in Istio: Secret Services
Vai arÄ« varat atvērt to paÅ”u adresi pārlÅ«kprogrammā:

Dark Launch in Istio: Secret Services
Kā redzat, tur esoŔais pakalpojums vienkārŔi atgriež tam nodotās galvenes.

Mēs aizvietojam importu

Tagad ņemsim Ŕī pakalpojuma Java kodu, kas ir ārpus mÅ«su sistēmas, un palaidÄ«sim to atseviŔķi, kur, atcerieties, ir instalēts Istio. (To var izdarÄ«t pats, sazinoties mÅ«su Istio apmācÄ«ba.) Izveidojot atbilstoÅ”o attēlu un palaižot to OpenShift platformā, mēs izsauksim Å”o pakalpojumu ar komandu curl egresshttpbin-istioegress.$(minishift ip).nip.io, pēc tam ekrānā redzēsim Å”o:

Dark Launch in Istio: Secret Services
Ak, kas noticis? Viss vienkārÅ”i strādāja. Ko nozÄ«mē ā€œNav atrastsā€? Mēs to izdarÄ«jām tikai viņa labā curl.

IP tabulu paplaŔināŔana uz visu internetu

Par to ir jāvaino (vai jāpateicas) Istio. Galu galā Istio ir tikai blakusvāģu konteineri, kas ir atbildÄ«gi par noteikÅ”anu un marÅ”rutÄ“Å”anu (un daudzām citām lietām, par kurām mēs runājām iepriekÅ”). Å Ä« iemesla dēļ IP tabulas zina tikai to, kas atrodas jÅ«su klasteru sistēmā. Un httpbin.org atrodas ārpusē un tāpēc nav pieejams. Un Å”eit palÄ«gā nāk Istio Egress ā€“ bez mazākajām izmaiņām jÅ«su pirmkodā.

Tālāk norādÄ«tais Egress noteikums liek Istio meklēt (ja nepiecieÅ”ams, tad visā internetā) vajadzÄ«go pakalpojumu, Å”ajā gadÄ«jumā httpbin.org. Kā redzat no Ŕī faila (egress_httpbin.yml), funkcionalitāte Å”eit ir diezgan vienkārÅ”a:

Dark Launch in Istio: Secret Services
Atliek tikai piemērot Å”o noteikumu:

istioctl create -f egress_httpbin.yml -n istioegress

Egress noteikumus var apskatīt ar komandu istioctl get egressrules:

Dark Launch in Istio: Secret Services
Un visbeidzot mēs atkal izpildām komandu cirtot ā€“ un mēs redzam, ka viss darbojas:

Dark Launch in Istio: Secret Services

Mēs domājam atklāti

Kā redzat, Istio ļauj organizēt mijiedarbÄ«bu ar ārpasauli. Citiem vārdiem sakot, jÅ«s joprojām varat izveidot OpenShift pakalpojumus un pārvaldÄ«t tos, izmantojot Kubernetes, saglabājot visu apkopos, kas pēc vajadzÄ«bas tiek palielināti un samazināti. Un tajā paŔā laikā jÅ«s varat droÅ”i piekļūt pakalpojumiem ārpus jÅ«su vides. Un jā, mēs vēlreiz atkārtojam, ka to visu var izdarÄ«t, nekādā veidā nepieskaroties savam kodam.

Å is bija pēdējais ieraksts sērijā vietnē Istio. Sekojiet lÄ«dzi jaunumiem ā€“ priekŔā ir daudz interesantu lietu!

Avots: www.habr.com

Pievieno komentāru