Däischter Start an Istio: Geheimdéngschter

"Danger ass mäi Mëttelnumm", huet den Austin Powers, en internationale Mann vu Geheimnis, gesot. Mee wat vun Super Agenten a Geheimdéngschter héich geschätzt gëtt, passt guer net fir Computerservicer, wou Langweil vill besser ass wéi Gefor.

Däischter Start an Istio: Geheimdéngschter

An Istio, zesumme mat OpenShift a Kubernetes, mécht den Ofbau vun Mikroservicer wierklech langweileg a prévisibel - an dat ass super. Mir schwätzen iwwer dëst a vill méi am véierten a leschte Post an der Istio Serie.

Wann Langweil richteg ass

An eisem Fall geschitt Langweil nëmmen an der Finale Phas, wann alles wat bleift ass de Prozess ze sëtzen an ze kucken. Awer fir dëst ze maachen, musst Dir als éischt alles konfiguréieren, a vill interessant Saache waarden op Iech hei.

Wann Dir eng nei Versioun vun Ärer Software installéiert, ass et derwäert all Optiounen ze berücksichtegen fir Risiken ze minimiséieren. Parallel lafen ass e ganz mächtegen a bewährte Wee fir ze testen, an Istio erlaabt Iech e "geheime Service" (eng verstoppte Versioun vun Ärem Mikroservice) ze benotzen fir dëst ze maachen ouni de Produktiounssystem ze stéieren. Et gëtt souguer e spezielle Begrëff fir dëst - "Dark Launch", deen am Tour duerch eng Funktioun mat engem gläiche Spiounnumm "Traffic Spigel" aktivéiert gëtt.

Notéiert w.e.g. datt den éischte Saz vum virege Paragraph de Begrëff "deploy" benotzt anstatt "Release". Dir sollt wierklech fäeg sinn Äre Mikroservice z'installéieren - an natierlech ze benotzen - sou dacks wéi Dir wëllt. Dëse Service muss fäeg sinn Traffic ze kréien an ze veraarbechten, Resultater ze produzéieren an och op Logbicher ze schreiwen an ze iwwerwaachen. Awer gläichzäiteg muss dëse Service selwer net onbedéngt an d'Produktioun verëffentlecht ginn. D'Deployéieren an d'Verëffentlechung vun Software sinn net ëmmer déiselwecht Saach. Dir kënnt deployéieren wann Dir wëllt, awer befreien nëmmen wann Dir prett sidd.

Langweil organiséieren ass interessant

Kuckt Iech op déi folgend Istio Routing Regel, déi all HTTP-Ufroen op d'Mikroservice Empfehlung v1 routert (all Beispiller geholl aus Istio Tutorial GitHub repo), wärend se gläichzäiteg mat der Empfehlung v2 Mikroservice spigelen:

Däischter Start an Istio: Geheimdéngschter
Opgepasst op de Label mirror: um Enn vum Écran - et ass dëst deen Traffic Spigelen setzt. Jo, sou einfach ass et!

D'Resultat vun dëser Regel wäert sinn datt Äre Produktiounssystem (v1) weider erakommen Ufroe veraarbecht, awer d'Ufroe selwer ginn asynchron op v2 gespigelt, dat heescht, hir komplett Duplikate ginn dohinner. Op dës Manéier kënnt Dir v2 an realen Konditiounen testen - op realen Daten a Verkéier - ouni op iergendeng Manéier mat der Operatioun vum Produktiounssystem ze stéieren. Maachen dëst organiséieren Testen langweileg? Jo, definitiv. Awer et ass op eng interessant Manéier gemaach.

Loosst eis Drama derbäi

Notéiert w.e.g. datt am v2 Code et néideg ass fir Situatiounen virzebereeden wou erakommen Ufroe kënnen zu Datenännerunge féieren. D'Ufroe selwer ginn einfach an transparent gespigelt, awer d'Wiel vun der Veraarbechtungsmethod am Test ass un Iech - an dëst ass e bësse beonrouegend.

Loosst eis e wichtege Punkt widderhuelen

Geheime Start mat Traffic Mirroring (Dark Launch / Request Mirroring) ka gemaach ginn ouni de Code op iergendeng Manéier ze beaflossen.

Liewensmëttel fir Gedanken

Wat wann d'Plaz wou Ufroe gespigelt ginn e puer vun hinnen net op v1 schéckt, mee op v2? Zum Beispill, ee Prozent vun all Ufroen oder nëmmen Ufroe vun enger bestëmmter Grupp vu Benotzer. An dann, scho kucken wéi v2 funktionnéiert, all Ufroen no an no op déi nei Versioun transferéieren. Oder vice versa, gitt alles zréck op v1 wann eppes mat v2 falsch geet. Ech mengen et heescht Canary Deployment. geet zréck op Biergbau, a wann et vu russescher Hierkonft wier, géif et wahrscheinlech eng Referenz op enthalen Kazen), an elo wäerte mir dëst méi am Detail kucken.

Kanaresch Deployment zu Istio: Vereinfachung vun der Inbetriebung

Virsiichteg a lues

D'Essenz vum Canary Deployment Deployment Modell ass extrem einfach: wann Dir eng nei Versioun vun Ärer Software lancéiert (an eisem Fall, e Mikroservice), gitt Dir fir d'éischt Zougang zu engem klenge Grupp vu Benotzer. Wann alles gutt geet, vergréissert Dir dës Grupp lues a lues bis déi nei Versioun ufänkt ze handelen, oder - wann et net geet - schlussendlech all Benotzer dohinner migréieren. Andeems Dir nodenklech a graduell eng nei Versioun aféiert an d'Benotzer op eng kontrolléiert Manéier wiesselen, kënnt Dir Risiken reduzéieren a Feedback maximéieren.

Natierlech vereinfacht Istio Canary Deployment andeems se verschidde gutt Optioune fir intelligent Ufrorouting ubidden. A jo, all dat kann gemaach ginn ouni Äre Quellcode op iergendeng Manéier ze beréieren.

Filteren vum Browser

Ee vun den einfachsten Routing Critèren ass Browser-baséiert Viruleedung. Loosst eis soen datt Dir nëmmen Ufroe vu Safari Browser wëllt op v2. Hei ass wéi et gemaach gëtt:

Däischter Start an Istio: Geheimdéngschter
Loosst eis dës Routing-Regel uwenden an dann de Kommando benotzen curl Mir simuléieren real Ufroe fir de Mikroservice an enger Loop. Wéi Dir am Screenshot gesitt, gi se all op v1:

Däischter Start an Istio: Geheimdéngschter
Wou ass de Traffic op v2? Well an eisem Beispill all Ufroen nëmmen aus eiser eegener Kommandozeil koumen, existéiert et einfach net. Awer oppassen op déi ënnescht Zeilen am Écran uewendriwwer: dëst ass eng Reaktioun op d'Tatsaach datt mir eng Ufro vum Safari Browser ausgefouert hunn, deen am Tour dëst produzéiert huet:

Däischter Start an Istio: Geheimdéngschter

Onlimitéiert Muecht

Mir hu scho geschriwwen datt regulär Ausdréck ganz mächteg Fäegkeeten ubidden fir Ufroen ze routing. Kuckt Iech dat folgend Beispill (mir mengen Dir wäert verstoen wat et mécht):

Däischter Start an Istio: Geheimdéngschter
Bis elo hutt Dir wahrscheinlech eng Iddi wat regelméisseg Ausdréck maache kënnen.

Akt Smart

Smart Routing, besonnesch d'Veraarbechtung vu Paketheader mat reguläre Ausdréck, erlaabt Iech de Traffic ze steieren wéi Dir wëllt. An dëst vereinfacht immens d'Ëmsetzung vum neie Code - et ass einfach, et erfuerdert net de Code selwer z'änneren, a wann néideg, kann alles séier zréckginn wéi et war.

Interesséiert?

Sidd Dir gär mat Istio, Kubernetes an OpenShift op Ärem Computer ze experimentéieren? Equipe Red Hat Entwéckler Team virbereet eng excellent Léierbuch iwwer dëst Thema an huet all déi begleedend Dateien ëffentlech verfügbar gemaach. Also gitt vir a verleegst Iech selwer näischt.

Istio Egress: Sortie duerch de Souvenirgeschäft

Andeems Dir Istio zesumme mat Red Hat OpenShift a Kubernetes benotzt, kënnt Dir Äert Liewen mat Mikroservicer vill méi einfach maachen. Dem Istio säi Service Mesh ass verstoppt a Kubernetes Pods, an Äre Code leeft (meeschtens) an Isolatioun. Leeschtung, einfach ze änneren, Tracing, etc. Awer wat wann Äre Mikroservice muss mat anere Servicer kommunizéieren, déi ausserhalb vun Ärem OpenShift-Kubernetes System sinn?

Dëst ass wou den Istio Egress zur Rettung kënnt. An enger Nossschuel erlaabt et Iech einfach Zougang zu Ressourcen (liesen: "Servicer") déi net Deel vun Ärem System vu Kubernetes Pods sinn. Wann Dir keng zousätzlech Konfiguratioun ausféiert, da gëtt am Istio Egress Ëmfeld de Verkéier nëmmen an engem Cluster vu Pods an tëscht esou Cluster op intern IP Dëscher geréckelt. An esou Pupatioun funktionnéiert super soulaang Dir keen Zougang zu Servicer vu baussen braucht.

Egress erlaabt Iech déi uewe genannte IP-Tabellen z'iwwergoen, entweder baséiert op Egress-Regelen oder op enger Rei vun IP Adressen.

Loosst eis soen datt mir e Java Programm hunn deen eng GET Ufro un httpbin.org/headers mécht.

(httpbin.org ass just eng praktesch Ressource fir erausginn Service Ufroen ze testen.)

Wann Dir op der Kommandozeil gitt curl http://httpbin.org/headers, wäerte mir déi folgend gesinn:

Däischter Start an Istio: Geheimdéngschter
Oder Dir kënnt déi selwecht Adress am Browser opmaachen:

Däischter Start an Istio: Geheimdéngschter
Wéi Dir gesitt, gëtt de Service deen do läit einfach d'Header zréck, déi derbäi ginn.

Mir ersetzen Importer direkt

Loosst eis elo den Java Code vun dësem Service huelen, extern zu eisem System, a lafen et op eis selwer, wou, erënneren, Istio installéiert ass. (Dir kënnt dat selwer maachen andeems Dir kontaktéiert eisen Istio Tutorial.) Nodeems Dir de passende Bild gebaut hutt an et op der OpenShift Plattform lancéiert hutt, ruffe mir dëse Service mam Kommando un curl egresshttpbin-istioegress.$(minishift ip).nip.io, duerno wäerte mir dëst um Écran gesinn:

Däischter Start an Istio: Geheimdéngschter
Oops, wat ass geschitt? Alles huet just geschafft. Wat heescht Net fonnt? Mir hunn et just fir hien gemaach curl.

D'Verlängerung vun IP Dëscher op de ganzen Internet

D'Istio soll dofir beschëllegt (oder merci) ginn. No allem ass Istio just Sidecar Container déi verantwortlech sinn fir Detektioun a Routing (a vill aner Saachen iwwer déi mir virdru geschwat hunn). Aus dësem Grond wëssen IP Dëscher nëmmen wat an Ärem Clustersystem ass. An httpbin.org läit dobaussen an dofir onzougänglech. An dat ass wou Istio Egress zur Rettung kënnt - ouni déi geringsten Ännerung vun Ärem Quellcode.

D'Egress-Regel hei drënner zwéngt Istio ze sichen (wann néideg, dann am ganzen Internet) no den erfuerderlechen Service, an dësem Fall, httpbin.org. Wéi Dir aus dëser Datei (egress_httpbin.yml) kënnt gesinn, ass d'Funktionalitéit hei ganz einfach:

Däischter Start an Istio: Geheimdéngschter
Alles wat bleift ass dës Regel ëmzesetzen:

istioctl create -f egress_httpbin.yml -n istioegress

Dir kënnt Egress Regele mam Kommando gesinn istioctl get egressrules:

Däischter Start an Istio: Geheimdéngschter
A schlussendlech lafe mir de Kommando erëm esouvill - a mir gesinn datt alles funktionnéiert:

Däischter Start an Istio: Geheimdéngschter

Mir denken offen

Wéi Dir gesitt, erlaabt Istio Iech Interaktioun mat der Äussewelt ze organiséieren. An anere Wierder, Dir kënnt nach ëmmer OpenShift-Servicer erstellen an se duerch Kubernetes verwalten, alles an Pods halen, déi op an erof skaléieren wéi néideg. A gläichzäiteg kënnt Dir sécher Zougang zu Servicer extern zu Ärem Ëmfeld kréien. A jo, mir widderhuelen nach eng Kéier datt dëst alles ka gemaach ginn ouni Äre Code op iergendeng Manéier ze beréieren.

Dëst war de leschte Post an der Serie op Istio. Bleift drun - et ass vill interessant Saachen viraus!

Source: will.com

Setzt e Commentaire