Lansman nwa nan Istio: Sèvis sekrè

Austin Powers, yon nonm mistè entènasyonal, te konn di: "Danger se mitan non mwen an. Men, sa ki gen anpil estim pa ajan super ak sèvis entèlijans pa ditou apwopriye pou sèvis òdinatè, kote annwi pi bon pase danje.

Lansman nwa nan Istio: Sèvis sekrè

Ak Istio, ansanm ak OpenShift ak Kubernetes, fè deplwaye mikwosèvis vrèman raz ak previzib - e sa se gwo. Nou pral pale sou sa a ak plis ankò nan katriyèm ak dènye pòs nan seri Istio.

Lè annwi bon

Nan ka nou an, annwi rive sèlman nan faz final la, lè tout sa ki rete se chita epi gade pwosesis la. Men, pou sa ou bezwen configured tout bagay an premye, ak yon anpil nan bagay enteresan ap tann ou isit la.

Lè w ap deplwaye yon nouvo vèsyon lojisyèl ou a, li vo konsidere tout opsyon pou minimize risk yo. Kouri nan paralèl se yon fason trè pwisan ak pwouve fè tès, ak Istio pèmèt ou sèvi ak yon "sèvis sekrè" (yon vèsyon kache nan mikwosèvis ou) fè sa san yo pa entèfere ak sistèm pwodiksyon an. Gen menm yon tèm espesyal pou sa a - "Dark Launch", ki an vire se aktive pa yon fonksyon ak yon non egalman espyon "mirwar trafik".

Tanpri sonje ke premye fraz nan paragraf anvan an itilize tèm "deplwaye" olye ke "lage". Ou ta dwe reyèlman kapab deplwaye-e, nan kou, itilize-mikwosèvis ou osi souvan ke ou vle. Sèvis sa a dwe kapab resevwa ak trete trafik, pwodwi rezilta, epi tou ekri nan mòso bwa ak kontwole. Men, an menm tan an, sèvis sa a tèt li pa bezwen lage nan pwodiksyon an. Deplwaye ak divilge lojisyèl yo pa toujou menm bagay la. Ou ka deplwaye nenpòt lè ou vle, men lage sèlman lè w pare.

Òganize annwi se enteresan

Gade règ routage Istio sa a, ki mennen tout demann HTTP yo nan rekòmandasyon mikwosèvis v1 (tout egzanp yo pran nan Istio Tutorial GitHub repo), pandan y ap reflete yo an menm tan nan rekòmandasyon v2 mikwosèvis la:

Lansman nwa nan Istio: Sèvis sekrè
Peye atansyon sou etikèt la mirror: nan pati anba a nan ekran an - li se sa a ki mete mirwar trafik. Wi, li senp konsa!

Rezilta règ sa a pral ke sistèm pwodiksyon ou a (v1) ap kontinye trete demann fèk ap rantre, men demann yo tèt yo pral asynchrone reflete nan v2, se sa ki, kopi konplè yo pral ale la. Nan fason sa a, ou ka teste v2 nan kondisyon reyèl - sou done reyèl ak trafik - san yo pa entèfere nan okenn fason ak operasyon an nan sistèm pwodiksyon an. Èske sa fè òganize tès yo raz? Wi, definitivman. Men, li fè nan yon fason enteresan.

Ann ajoute dram

Tanpri sonje ke nan kòd la v2 li nesesè pou bay pou sitiyasyon kote demann fèk ap rantre yo ka mennen nan chanjman done yo. Demann yo tèt yo reflete fasil ak transparan, men chwa metòd pwosesis la nan tès la se ou menm - e sa a se yon ti jan mangonmen.

Ann repete yon pwen enpòtan

Lansman sekrè ak mirwar trafik (Lanse nwa / Demann mirwar) ka fèt san yo pa afekte kòd la nan okenn fason.

Manje pou panse

E si plas kote demann yo reflete voye kèk nan yo pa v1, men nan v2? Pou egzanp, youn pousan nan tout demann oswa sèlman demann soti nan yon sèten gwoup itilizatè. Lè sa a, deja gade ki jan v2 travay, piti piti transfere tout demann nan nouvo vèsyon an. Oswa vis vèrsa, retounen tout bagay nan v1 si yon bagay ale mal ak v2. Mwen panse ke li rele Canary Deployment. tounen nan min, epi si li te nan orijin Ris, li ta pwobableman genyen yon referans a chat), epi kounye a nou pral gade sa a an plis detay.

Deplwaman Canary nan Istio: senplifye komisyonin

Ak anpil atansyon epi piti piti

Sans nan modèl deplwaman Canary Deployment la trè senp: lè ou lanse yon nouvo vèsyon lojisyèl ou a (nan ka nou an, yon mikwosèvis), ou premye bay aksè a li a yon ti gwoup itilizatè. Si tout bagay ale byen, ou dousman ogmante gwoup sa a jiskaske nouvo vèsyon an kòmanse aji, oswa - si li pa fè sa - evantyèlman imigre tout itilizatè yo nan li. Lè w panse ak piti piti entwodwi yon nouvo vèsyon epi chanje itilizatè yo nan yon fason kontwole, ou ka diminye risk ak maksimize fidbak.

Natirèlman, Istio senplifye Deplwaman Canary lè li ofri plizyè bon opsyon pou routage demann entèlijan. Ak repons lan se wi, tout bagay sa yo ka fè san yo pa manyen kòd sous ou nan okenn fason.

Filtrage navigatè a

Youn nan kritè routage ki pi senp yo se redireksyon ki baze sou navigatè. Ann di ou vle sèlman demann soti nan navigatè Safari pou ale nan v2. Men ki jan li fèt:

Lansman nwa nan Istio: Sèvis sekrè
Ann aplike règ routage sa a epi sèvi ak kòmandman an curl Nou pral simulation demann reyèl nan mikwosèvis la nan yon bouk. Kòm ou ka wè nan Ekran an, yo tout ale nan v1:

Lansman nwa nan Istio: Sèvis sekrè
Ki kote trafik la sou v2? Depi nan egzanp nou an tout demann soti sèlman nan pwòp liy lòd nou an, li tou senpleman pa egziste. Men, peye atansyon sou liy anba yo nan ekran ki anwo a: sa a se yon reyaksyon a lefèt ke nou egzekite yon demann nan navigatè a Safari, ki an vire pwodui sa a:

Lansman nwa nan Istio: Sèvis sekrè

Pouvwa san limit

Nou te deja ekri ke ekspresyon regilye yo bay kapasite trè pwisan pou demann routage. Gade nan egzanp sa a (nou panse ou pral konprann sa li fè):

Lansman nwa nan Istio: Sèvis sekrè
Kounye a ou pwobableman gen yon lide sou kisa ekspresyon regilye yo ka fè.

Aji Smart

Entelijan routage, an patikilye pwosesis en-tête pake lè l sèvi avèk ekspresyon regilye, pèmèt ou dirije trafik nan fason ou vle. Ak sa a anpil senplifye aplikasyon an nan nouvo kòd - li senp, li pa mande pou chanje kòd la tèt li, epi si sa nesesè, tout bagay ka byen vit retounen jan li te ye.

Enterese?

Èske w anvi fè eksperyans ak Istio, Kubernetes ak OpenShift sou òdinatè w lan? Ekip Ekip Developer Red Hat prepare yon ekselan liv sou sijè sa a epi fè tout dosye ki akonpaye yo disponib piblikman. Se konsa, ale pi devan epi pa refize tèt ou anyen.

Istio Egress: sòti nan boutik souvni an

Lè w sèvi ak Istio ansanm ak Red Hat OpenShift ak Kubernetes, ou ka fè lavi ou pi fasil ak mikwosèvis. Se may sèvis Istio a kache andedan gous Kubernetes, epi kòd ou a kouri (sitou) nan izolasyon. Pèfòmans, fasilite chanjman, trase, elatriye - tout bagay sa yo fasil pou itilize grasa itilizasyon veso sidecar. Men, e si mikwosèvis ou a bezwen kominike ak lòt sèvis ki sitiye andeyò sistèm OpenShift-Kubernetes ou a?

Sa a se kote Istio Egress vin pote sekou. Nan yon bref, li tou senpleman pèmèt ou jwenn aksè nan resous (li: "sèvis") ki pa fè pati sistèm ou a nan gous Kubernetes. Si ou pa fè konfigirasyon adisyonèl, Lè sa a, nan Istio Egress anviwònman trafik la ap dirije sèlman nan yon gwoup gous ak ant grap sa yo ki baze sou tab IP entèn yo. Ak pupation sa yo travay byen osi lontan ke ou pa bezwen aksè a sèvis soti deyò.

Egress pèmèt ou kontoune tablo IP ki anwo yo, swa ki baze sou règ Egress oswa sou yon seri adrès IP.

Ann di nou gen yon pwogram Java ki fè yon demann GET nan httpbin.org/headers.

(httpbin.org se jis yon resous pratik pou teste demann sèvis sortan yo.)

Si ou antre sou liy lòd la curl http://httpbin.org/headers, nou pral wè sa ki annapre yo:

Lansman nwa nan Istio: Sèvis sekrè
Oswa ou ka louvri menm adrès la nan navigatè a:

Lansman nwa nan Istio: Sèvis sekrè
Kòm ou ka wè, sèvis la ki sitiye la tou senpleman retounen tèt yo te pase nan li.

Enpòte sibstitisyon tèt-sou

Koulye a, ann pran kòd Java sèvis sa a, ekstèn nan sistèm nou an, epi kouri li poukont nou, kote, sonje, Istio enstale. (Ou ka fè sa tèt ou lè w kontakte leson patikilye Istio nou an.) Èske w fin bati imaj ki apwopriye a epi lanse li sou platfòm OpenShift la, nou pral rele sèvis sa a ak lòd la. curl egresshttpbin-istioegress.$(minishift ip).nip.io, apre sa nou pral wè sa a sou ekran an:

Lansman nwa nan Istio: Sèvis sekrè
Oops, sa ki te pase? Tout bagay jis te travay. Ki sa Not Found vle di? Nou jis fè li pou li curl.

Pwolonje tab IP sou entènèt la tout antye

Istio ta dwe blame (oswa remèsye) pou sa. Apre yo tout, Istio se jis veso sidecar ki responsab pou deteksyon ak routage (ak anpil lòt bagay ke nou te pale sou pi bonè). Pou rezon sa a, tab IP sèlman konnen sa ki andedan sistèm grap ou a. Ak httpbin.org sitiye deyò ak Se poutèt sa inaksesibl. Lè sa a se kote Istio Egress vini nan sekou a - san yo pa chanjman nan mwendr nan kòd sous ou a.

Règ Egress ki anba a fòse Istio pou chèche (si sa nesesè, Lè sa a, sou tout entènèt la) pou sèvis ki nesesè yo, nan ka sa a, httpbin.org. Kòm ou ka wè nan dosye sa a (egress_httpbin.yml), fonksyonalite isit la se byen senp:

Lansman nwa nan Istio: Sèvis sekrè
Tout sa ki rete se aplike règ sa a:

istioctl create -f egress_httpbin.yml -n istioegress

Ou ka wè règ Egress ak kòmandman an istioctl get egressrules:

Lansman nwa nan Istio: Sèvis sekrè
Epi finalman, nou kouri lòd la ankò pli - epi nou wè ke tout bagay ap mache:

Lansman nwa nan Istio: Sèvis sekrè

Nou panse ouvètman

Kòm ou ka wè, Istio pèmèt ou òganize entèraksyon ak mond lan deyò. Nan lòt mo, ou ka toujou kreye sèvis OpenShift epi jere yo atravè Kubernetes, kenbe tout bagay nan gous ki monte ak desann jan sa nesesè. Ak an menm tan an, ou ka san danje aksè nan sèvis ekstèn nan anviwònman ou. Epi wi, nou repete yon lòt fwa ankò ke tout bagay sa yo ka fè san yo pa manyen kòd ou nan okenn fason.

Sa a te dènye pòs nan seri a sou Istio. Rete branche - gen anpil bagay enteresan ki devan!

Sous: www.habr.com

Add nouvo kòmantè