Dark Launch in Istio: Secret Services

"U periculu hè u mo nome mediu", diceva Austin Powers, un omu internaziunale di misteru. Ma ciò chì hè tenutu in alta stima da i super agenti è i servizii di intelligenza ùn hè micca adattatu per i servizii di l'informatica, induve l'avè hè assai megliu cà u periculu.

Dark Launch in Istio: Secret Services

È Istio, inseme cù OpenShift è Kubernetes, rende l'implementazione di microservizi veramente noiosa è prevedibile - è questu hè fantastico. Parleremu di questu è assai più in u quartu è ultimu postu in a serie Istio.

Quandu a noia hè ghjustu

In u nostru casu, l'annullamentu si trova solu in a fase finale, quandu tuttu ciò chì resta hè di pusà è fighjulà u prucessu. Ma per questu avete bisognu di cunfigurà tuttu prima, è assai cose interessanti vi aspettanu quì.

Quandu implementate una nova versione di u vostru software, vale a pena cunsiderà tutte l'opzioni per minimizzà i risichi. Eseguisce in parallelu hè un modu assai putente è pruvucatu per pruvà, è Istio permette di utilizà un "serviziu sicretu" (una versione oculta di u vostru microserviziu) per fà questu senza interferiscenu cù u sistema di produzzione. Ci hè ancu un termu spiciale per questu - "Dark Launch", chì à u turnu hè attivatu da una funzione cù un nome ugualmente spia "speculamentu di trafficu".

Per piacè nutate chì a prima frase di u paràgrafu precedente usa u terminu "spiegamentu" invece di "liberazione". Duvete veramente esse capace di implementà - è, sicuru, aduprà - u vostru microserviziu quante volte vulete. Stu serviziu deve esse capaci di riceve è processà u trafficu, pruduce risultati, è ancu scrive à logs è monitor. Ma à u stessu tempu, stu serviziu stessu ùn hà micca bisognu di esse liberatu in a produzzione. L'implementazione è a liberazione di u software ùn sò micca sempre a stessa cosa. Pudete implementà quandu vulete, ma liberate solu quandu site prontu.

L'urganizazione di l'avè hè interessante

Fighjate à a seguente regula di routing Istio, chì indirizza tutte e dumande HTTP à a raccomandazione di microserviziu v1 (tutti l'esempii pigliati da Istio Tutorial GitHub repo), mentre li riflette simultaneamente à u microserviziu v2 di raccomandazione:

Dark Launch in Istio: Secret Services
Attenti à l'etichetta mirror: à u fondu di u screnu - hè questu chì stabilisce u trafficu mirroring. Iè, hè cusì simplice !

U risultatu di sta regula serà chì u vostru sistema di pruduzzione (v1) cuntinuerà à processà e dumande entrate, ma e richieste stesse saranu specchiate in modu asincronu à v2, vale à dì, i so duplicati cumpleti andaranu quì. In questu modu, pudete pruvà v2 in cundizioni reali - nantu à dati reali è trafficu - senza interferiscenu in alcun modu cù l'operazione di u sistema di produzzione. Questu rende noi l'urganizazione di e teste? Iè, sicuru. Ma hè fattu in una manera interessante.

Aghjunghjemu u dramma

Per piacè nutate chì in u codice v2 hè necessariu di furnisce situazioni induve e richieste entrate ponu purtà à cambiamenti di dati. E dumande stessu sò mirrored faciuli è trasparenti, ma l'scelta di u metudu di trasfurmazioni in a prova hè di voi - è questu hè un pocu preoccupante.

Ripitemu un puntu impurtante

Lanciamentu secretu cù mirroring di trafficu (Dark Launch / Request Mirroring) pò esse realizatu senza affettà u codice in ogni modu.

Alimentazione per u pensamentu

E se u locu induve e dumande sò specchiati ùn mandanu micca à v1, ma à v2? Per esempiu, unu per centu di tutte e dumande o solu dumande da un certu gruppu di utilizatori. E poi, digià guardendu cumu funziona v2, trasferisce gradualmente tutte e dumande à a nova versione. O vice versa, torna tuttu à v1 se qualcosa va male cù v2. Pensu chì si chjama Canary Deployment. torna à a minera, è s'ellu era di origine russa, probabilmente cuntene una riferenza à i misgi), è avà guardemu questu in più detail.

Canary Deployment in Istio: simplificà a messa in cumissioni

Curiosamente è gradualmente

L'essenza di u mudellu di implementazione di Canary Deployment hè estremamente simplice: quandu lanciate una nova versione di u vostru software (in u nostru casu, un microserviziu), prima dà accessu à un picculu gruppu d'utilizatori. Se tuttu va bè, lentamente cresce stu gruppu finu à chì a nova versione principia à agisce, o - s'ellu ùn hè micca - eventualmente migrate tutti l'utilizatori à questu. Intruducendu pensativamente è gradualmente una nova versione è cambiate l'utilizatori in una manera cuntrullata, pudete riduce i risichi è maximizà u feedback.

Di sicuru, Istio simplificheghja Canary Deployment offrendu parechje boni opzioni per un routing intelligente di e dumande. È iè, tuttu chistu pò esse fattu senza toccu u vostru codice fonte in ogni modu.

Filtrà u navigatore

Unu di i criterii di routing più simplice hè a redirezzione basatu in u navigatore. Dicemu chì vulete solu richieste da i navigatori Safari per andà in v2. Eccu cumu si faci:

Dark Launch in Istio: Secret Services
Applicà sta regula di routing è dopu aduprà u cumandamentu curl Simuleremu dumande reali à u microserviziu in un ciclu. Comu pudete vede in a screenshot, tutti vanu à v1:

Dark Launch in Istio: Secret Services
Induve hè u trafficu nantu à v2? Siccomu in u nostru esempiu tutte e dumande venenu solu da a nostra linea di cummanda, simpricimenti ùn esiste micca. Ma fate attenzione à e linee di fondu in u screnu sopra: questa hè una reazione à u fattu chì avemu eseguitu una dumanda da u navigatore Safari, chì à u turnu hà pruduttu questu:

Dark Launch in Istio: Secret Services

Potenza illimitata

Avemu digià scrittu chì l'espressioni regulari furniscenu capacità assai putenti per e dumande di routing. Fighjate à l'esempiu seguente (pensemu chì capirete ciò chì face):

Dark Launch in Istio: Secret Services
Avà probabilmente avete una idea di ciò chì l'espressioni regulari ponu fà.

Act Smart

U routing intelligente, in particulare u processu di l'intestazione di pacchetti cù espressioni regulari, vi permette di guidà u trafficu cumu vulete. E questu simplifica assai l'implementazione di u novu codice - hè simplice, ùn hè micca bisognu di cambià u codice stessu, è se ne necessariu, tuttu pò esse tornatu rapidamente cum'è era.

Interessatu?

Sò ansiosu di sperimentà Istio, Kubernetes è OpenShift in u vostru urdinatore? squadra Squadra di sviluppatori Red Hat preparatu un eccellente manuale nantu à questu tema è hà fattu tutti i schedarii accumpagnati dispunibuli publicamente. Allora vai avanti è ùn ricusate nunda.

Sortie d'Istio : sortie par la boutique de souvenirs

Utilizendu Istio inseme cù Red Hat OpenShift è Kubernetes, pudete fà a vostra vita cù i microservizi assai più faciule. A rete di serviziu di Istio hè oculata in i pod Kubernetes, è u vostru còdice corre (principalmente) in isolamentu. Prestazione, facilità di cambià, traccia, etc. - tuttu questu hè faciule d'utilizà grazia à l'usu di cuntenituri sidecar. Ma chì se u vostru microserviziu hà bisognu di cumunicà cù altri servizii chì si trovanu fora di u vostru sistema OpenShift-Kubernetes?

Hè quì chì Istio Egress vene in salvezza. In poche parole, permette solu di accede à e risorse (leghjite: "servizi") chì ùn sò micca parte di u vostru sistema di pods Kubernetes. Se ùn fate micca cunfigurazione supplementu, allora in l'ambiente Istio Egress u trafficu hè instradatu solu in un cluster di pods è trà tali clusters basatu nantu à e tabelle IP interne. E tali pupazioni funziona assai, finu à chì ùn avete micca bisognu di accessu à i servizii da l'esternu.

Egress vi permette di scaccià e tavule IP sopra, sia basatu nantu à e regule di Egress o nantu à una gamma di indirizzi IP.

Diciamu chì avemu un prugramma Java chì face una dumanda GET à httpbin.org/headers.

(httpbin.org hè solu una risorsa conveniente per pruvà e dumande di serviziu in uscita.)

Se entre in a linea di cumanda curl http://httpbin.org/headers, videremu i seguenti:

Dark Launch in Istio: Secret Services
O pudete apre u listessu indirizzu in u navigatore:

Dark Launch in Istio: Secret Services
Comu pudete vede, u serviziu situatu quì solu torna l'intestazione passati à ellu.

Sustituzione di impurtazioni di fronte

Avà pigliemu u codice Java di stu serviziu, esternu à u nostru sistema, è eseguimu nantu à u nostru propiu, induve, ricurdate, Istio hè stallatu. (Pudete fà questu sè stessu cuntattendu u nostru tutoriale Istio.) Dopu avè custruitu l'imaghjini apprupriati è lanciatu nantu à a piattaforma OpenShift, chjamemu stu serviziu cù u cumandimu. curl egresshttpbin-istioegress.$(minishift ip).nip.io, dopu chì vedemu questu nantu à u screnu:

Dark Launch in Istio: Secret Services
Oops, chì hè accadutu? Tuttu hà travagliatu solu. Ciò chì significa Not Found Avemu fattu solu per ellu curl.

Estendendu e tavule IP à tuttu Internet

Istio deve esse culpèvule (o ringraziatu) per questu. Dopu tuttu, Istio hè solu cuntenituri sidecar chì sò rispunsevuli di a deteczione è di u routing (è parechje altre cose chì avemu parlatu prima). Per quessa, e tavule IP sò solu ciò chì hè in u vostru sistema di cluster. È httpbin.org hè situatu fora è dunque inaccessibile. È questu hè induve Istio Egress vene in salvezza - senza u minimu cambiamentu di u vostru codice fonte.

A regula di l'Egress sottu forza Istio à circà (se necessariu, dopu in tuttu l'Internet) per u serviziu necessariu, in questu casu, httpbin.org. Comu pudete vede da stu schedariu (egress_httpbin.yml), a funziunalità quì hè abbastanza simplice:

Dark Launch in Istio: Secret Services
Il ne reste plus qu'à appliquer cette règle :

istioctl create -f egress_httpbin.yml -n istioegress

Pudete vede e regule di Egress cù u cumandamentu istioctl get egressrules:

Dark Launch in Istio: Secret Services
È infine, curriamu u cumandamentu di novu curl - è vedemu chì tuttu funziona:

Dark Launch in Istio: Secret Services

Pensemu apertamente

Comu pudete vede, Istio permette di urganizà l'interazzione cù u mondu esternu. In altri palori, pudete ancu creà servizii OpenShift è gestite per mezu di Kubernetes, mantenendu tuttu in pods chì scalanu è scende cum'è necessariu. È à u stessu tempu, pudete accede in modu sicuru à i servizii esterni à u vostru ambiente. È iè, ripetemu una volta chì tuttu questu pò esse fattu senza toccu u vostru codice in ogni modu.

Questu era l'ultimu post in a serie nantu à Istio. Stay tuned - ci sò assai cose interessanti avanti!

Source: www.habr.com

Add a comment