ā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.
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
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.
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:
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:
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:
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):
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
ā
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:
Vai arÄ« varat atvÄrt to paÅ”u adresi pÄrlÅ«kprogrammÄ:
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 curl egresshttpbin-istioegress.$(minishift ip).nip.io
, pÄc tam ekrÄnÄ redzÄsim Å”o:
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:
Atliek tikai piemÄrot Å”o noteikumu:
istioctl create -f egress_httpbin.yml -n istioegress
Egress noteikumus var apskatīt ar komandu istioctl get egressrules
:
Un visbeidzot mÄs atkal izpildÄm komandu cirtot ā un mÄs redzam, ka viss darbojas:
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