"DanÄero estas mia meza nomo," kutimis diri Austin Powers, internacia viro de mistero. Sed tio, kio estas alte estimata de superagentoj kaj spionservoj, tute ne taÅgas por komputilaj servoj, kie enuo estas multe pli bona ol danÄero.

Kaj Istio, kune kun OpenShift kaj Kubernetes, faras la disfaldigon de mikroservoj vere enuiga kaj antaÅvidebla - kaj tio estas bonega. Pri tio kaj multe pli ni parolos en la kvara kaj lasta afiÅo de la serio Istio.
Kiam enuo pravas
En nia kazo, enuo okazas nur en la fina fazo, kiam restas nur sidi kaj rigardi la procezon. Sed por tio vi devas unue agordi Äion, kaj multaj interesaj aferoj atendas vin Äi tie.
Kiam vi disvastigas novan version de via programaro, indas konsideri Äiujn eblojn por minimumigi riskojn. Kuri paralele estas tre potenca kaj pruvita maniero por testi, kaj Istio permesas al vi uzi "sekretan servon" (kaÅita versio de via mikroservo) por fari tion sen malhelpi la produktadsistemon. Estas eÄ speciala termino por Äi tio - "Malhela LanÄo", kiu siavice estas aktivigita per funkcio kun same spiona nomo "trafikspegulado".
Bonvolu noti, ke la unua frazo de la antaÅa paragrafo uzas la esprimon "deploji" prefere ol "liberigi". Vi devus vere povi disfaldiākaj, kompreneble, uziāvian mikroservon tiel ofte kiel vi volas. Äi tiu servo devas povi ricevi kaj prilabori trafikon, produkti rezultojn, kaj ankaÅ skribi al protokoloj kaj monitori. Sed samtempe, Äi tiu servo mem ne nepre devas esti liberigita en produktadon. Deploji kaj liberigi programaron ne Äiam estas la sama afero. Vi povas deploji kiam ajn vi volas, sed liberigi nur kiam vi estas preta.
Organizi enuon estas interese
Rigardu la sekvan regulon de vojigo de Istio, kiu direktas Äiujn HTTP-petojn al la rekomendo de mikroservo v1 (Äiuj ekzemploj prenitaj de ), samtempe spegulante ilin al la rekomenda v2 mikroservo:

Atentu la etikedon mirror: Äe la fundo de la ekrano - estas Äi tio kiu fiksas trafikan spegulon. Jes, Äi estas tiel simpla!
La rezulto de Äi tiu regulo estos, ke via produktadsistemo (v1) daÅre prilaboros envenantajn petojn, sed la petoj mem estos nesinkrone spegulitaj al v2, tio estas, iliaj kompletaj duplikatoj iros tien. Tiel, vi povas testi v2 en realaj kondiÄoj - pri realaj datumoj kaj trafiko - sen Äeni iel ajn la funkciadon de la produktadsistemo. Äu Äi tio enuigas organizan testadon? Jes, nepre. Sed Äi estas farita en interesa maniero.
Ni aldonu dramon
Bonvolu noti, ke en la v2-kodo necesas zorgi pri situacioj, kie envenantaj petoj povas kaÅzi datumajn ÅanÄojn. La petoj mem speguliÄas facile kaj travideble, sed la elekto de prilabora metodo en la testo dependas de vi - kaj Äi tio estas iom maltrankviliga.
Ni ripetu gravan punkton
Sekreta lanÄo kun trafikspegulado (Malhela LanÄo/Peto Spegulado) povas esti farita sen tuÅi la kodon iel ajn.
ManÄaĵo por pensi
Kio se la loko kie petoj estas spegulitaj sendas kelkajn el ili ne al v1, sed al v2? Ekzemple, unu procento de Äiuj petoj aÅ nur petoj de certa grupo de uzantoj. Kaj poste, jam rigardante kiel funkcias v2, iom post iom translokigu Äiujn petojn al la nova versio. AÅ inverse, redonu Äion al v1 se io misfunkcias kun v2. Mi pensas, ke Äi nomiÄas Kanaria Deplojo. , kaj se Äi estus de rusa origino, Äi verÅajne enhavus referencon al ), kaj nun ni rigardos Äi tion pli detale.
Kanaria Deplojo en Istio: simpligado de komisiado
Zorge kaj iom post iom
La esenco de la disfalda modelo de Canary Deployment estas ege simpla: kiam vi lanÄas novan version de via programaro (en nia kazo, mikroservo), vi unue donas aliron al Äi al malgranda grupo de uzantoj. Se Äio iras bone, vi malrapide pliigas Äi tiun grupon Äis la nova versio ekfunkcias, aÅ - se Äi ne okazas - eventuale migras Äiujn uzantojn al Äi. Pripense kaj iom post iom enkondukante novan version kaj ÅanÄante uzantojn al Äi en kontrolita maniero, vi povas redukti riskojn kaj maksimumigi reagojn.
Kompreneble, Istio simpligas Kanarian Deplojon proponante plurajn bonajn eblojn por inteligenta peto-vojigo. Kaj jes, Äio Äi povas esti farita sen tuÅi vian fontkodon iel ajn.
Filtri la retumilon
Unu el la plej simplaj vojkriterioj estas alidirekto bazita en retumilo. Ni diru, ke vi volas, ke nur petoj de Safaraj retumiloj iri al v2. Jen kiel Äi estas farita:

Ni apliku Äi tiun vojregulon kaj poste uzu la komandon curl Ni simulos realajn petojn al la mikroservo en buklo. Kiel vi povas vidi en la ekrankopio, ili Äiuj iras al v1:

Kie estas la trafiko sur v2? Äar en nia ekzemplo Äiuj petoj venis nur de nia propra komandlinio, Äi simple ne ekzistas. Sed atentu la malsuprajn liniojn en la supra ekrano: Äi tio estas reago al la fakto, ke ni plenumis peton de la retumilo Safari, kiu siavice produktis Äi tion:

Senlima potenco
Ni jam skribis, ke regulaj esprimoj provizas tre potencajn kapablojn por direkti petojn. Rigardu la sekvan ekzemplon (ni pensas, ke vi komprenos, kion Äi faras):

Nun vi verÅajne havas ideon pri tio, kion regulaj esprimoj povas fari.
Agu Smart
Inteligenta vojigo, precipe prilaborado de pakaĵkapoj per regulaj esprimoj, permesas vin stiri trafikon kiel vi volas. Kaj Äi tio multe simpligas la efektivigon de nova kodo - Äi estas simpla, Äi ne postulas ÅanÄi la kodon mem, kaj se necese, Äio povas esti rapide resendita kiel Äi estis.
Interesita?
Äu vi deziras eksperimenti kun Istio, Kubernetes kaj OpenShift en via komputilo? Teamo preparis bonegan pri Äi tiu temo kaj disponigis Äiujn akompanajn dosierojn. Do antaÅeniru kaj nenion rifuzu al vi.
ā
Istio Eliro: eliro tra la suvenirbutiko
Uzante Istio kune kun Red Hat OpenShift kaj Kubernetes, vi povas multe plifaciligi vian vivon per mikroservoj. La servomaÅo de Istio estas kaÅita ene de Kubernetes-podoj, kaj via kodo funkcias (plejparte) izole. Efikeco, facileco de ÅanÄo, spurado, ktp. - Äio Äi estas facile uzebla danke al la uzo de flankaj ujoj. Sed kio se via mikroservo bezonas komuniki kun aliaj servoj, kiuj troviÄas ekster via OpenShift-Kubernetes-sistemo?
Jen kie Istio Egress venas al la savo. Resume, Äi simple permesas vin aliri rimedojn (legu: "servoj"), kiuj ne estas parto de via sistemo de Kubernetes-podoj. Se vi ne faras aldonan agordon, tiam en la medio Istio Egress trafiko estas direktita nur ene de areto de podoj kaj inter tiaj aretoj bazitaj sur internaj IP-tabeloj. Kaj tia krizalidiÄo funkcias bonege, kondiÄe ke vi ne bezonas aliron al servoj de ekstere.
Eliro permesas al vi preteriri la suprajn IP-tabelojn, Äu surbaze de Egress-reguloj aÅ sur gamo da IP-adresoj.
Ni diru, ke ni havas Java-programon, kiu faras GET-peton al httpbin.org/headers.
(httpbin.org estas nur oportuna rimedo por testi eksiÄintajn servajn petojn.)
Se vi eniras sur la komandlinio curl http://httpbin.org/headers, ni vidos la jenon:

AÅ vi povas malfermi la saman adreson en la retumilo:

Kiel vi povas vidi, la servo situanta tie simple resendas la kapojn pasigitajn al Äi.
Ni anstataÅas importaĵojn rekte
Nun ni prenu la Java-kodon de Äi tiu servo, eksteran al nia sistemo, kaj rulu Äin memstare, kie, memoru, Istio estas instalita. (Vi povas fari tion mem kontaktante .) Konstruinte la taÅgan bildon kaj lanÄinte Äin sur la platformo OpenShift, ni nomos Äi tiun servon per la komando curl egresshttpbin-istioegress.$(minishift ip).nip.io, post kio ni vidos Äi tion sur la ekrano:

Ho, kio okazis? Äio nur funkciis. Kion signifas Ne Trovita? Ni nur faris Äin por li curl.
Etendante IP-tablojn al la tuta Interreto
Istio devus esti kulpigita (aÅ dankita) pro tio. Post Äio, Istio estas nur flankaj ujoj, kiuj respondecas pri detekto kaj vojigo (kaj multaj aliaj aferoj, pri kiuj ni parolis antaÅe). Tial, IP-tabeloj nur scias kio estas ene de via clustersistemo. Kaj httpbin.org troviÄas ekstere kaj tial neatingebla. Kaj Äi tie estas kie Istio Egress venas al la savo - sen la plej eta ÅanÄo al via fontkodo.
La malsupra regulo de Eliro devigas Istio serÄi (se necese, tiam tra la tuta Interreto) la postulatan servon, Äi-kaze, httpbin.org. Kiel vi povas vidi el Äi tiu dosiero (egress_httpbin.yml), la funkcio Äi tie estas sufiÄe simpla:

Restas nur apliki Äi tiun regulon:
istioctl create -f egress_httpbin.yml -n istioegress
Vi povas vidi Egress-regulojn per la komando istioctl get egressrules:

Kaj finfine, ni rulas la komandon denove buklo ā kaj ni vidas, ke Äio funkcias:

Ni pensas malkaÅe
Kiel vi povas vidi, Istio permesas organizi interagadon kun la ekstera mondo. Alivorte, vi ankoraÅ povas krei OpenShift-servojn kaj administri ilin per Kubernetes, konservante Äion en podoj, kiuj skalas supren kaj malsupren laÅbezone. Kaj samtempe, vi povas sekure aliri servojn eksterajn al via medio. Kaj jes, ni ripetas denove, ke Äio Äi povas esti farita sen tuÅi vian kodon iel ajn.
Äi tiu estis la lasta afiÅo en la serio pri Istio. Restu agordita - estas multaj interesaj aferoj antaÅen!
fonto: www.habr.com
