"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.
È 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
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.
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:
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:
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:
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):
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
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:
O pudete apre u listessu indirizzu in u navigatore:
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 curl egresshttpbin-istioegress.$(minishift ip).nip.io
, dopu chì vedemu questu nantu à u screnu:
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:
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
:
È infine, curriamu u cumandamentu di novu curl - è vedemu chì tuttu funziona:
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