Ifilọlẹ Dudu ni Istio: Awọn iṣẹ Aṣiri

“Ewu ni orukọ arin mi,” Austin Powers, ọkunrin ohun ijinlẹ kariaye kan, sọ. Ṣugbọn ohun ti o ṣe akiyesi giga nipasẹ awọn aṣoju Super ati awọn iṣẹ itetisi ko dara rara fun awọn iṣẹ kọnputa, nibiti alaidun jẹ dara julọ ju ewu lọ.

Ifilọlẹ Dudu ni Istio: Awọn iṣẹ Aṣiri

Ati Istio, papọ pẹlu OpenShift ati Kubernetes, jẹ ki gbigbe awọn iṣẹ microservice jẹ alaidun ati asọtẹlẹ - ati pe iyẹn dara. A yoo sọrọ nipa eyi ati pupọ diẹ sii ni ifiweranṣẹ kẹrin ati ipari ni jara Istio.

Nigba ti boredom jẹ ọtun

Ninu ọran wa, alaidun waye nikan ni ipele ikẹhin, nigbati gbogbo ohun ti o ku ni lati joko ati wo ilana naa. Ṣugbọn fun eyi o nilo lati tunto ohun gbogbo ni akọkọ, ati ọpọlọpọ awọn nkan ti o nifẹ si n duro de ọ nibi.

Nigbati o ba nlo ẹya tuntun ti sọfitiwia rẹ, o tọ lati gbero gbogbo awọn aṣayan fun idinku awọn eewu. Nṣiṣẹ ni afiwe jẹ ọna ti o lagbara pupọ ati ti a fihan lati ṣe idanwo, ati Istio ngbanilaaye lati lo “iṣẹ ikọkọ” (ẹya ti o farapamọ ti microservice rẹ) lati ṣe eyi laisi kikọlu pẹlu eto iṣelọpọ. Paapaa ọrọ pataki kan wa fun eyi - “Ifilọlẹ Dudu”, eyiti o jẹ ki o muu ṣiṣẹ nipasẹ iṣẹ kan pẹlu orukọ amí dọgba “iṣapẹẹrẹ ijabọ”.

Jọwọ ṣe akiyesi pe gbolohun akọkọ ti paragira ti tẹlẹ lo ọrọ naa “fifiranṣẹ” dipo “itusilẹ”. O yẹ ki o ni anfani lati ran lọwọ gaan-ati, nitorinaa, lo — iṣẹ microservice rẹ nigbagbogbo bi o ṣe fẹ. Iṣẹ yii gbọdọ ni anfani lati gba ati ilana ijabọ, gbejade awọn abajade, ati tun kọ si awọn akọọlẹ ati atẹle. Ṣugbọn ni akoko kanna, iṣẹ yii funrararẹ ko ni lati tu silẹ sinu iṣelọpọ. Gbigbe ati idasilẹ sọfitiwia kii ṣe ohun kanna nigbagbogbo. O le ran lọwọ nigbakugba ti o ba fẹ, ṣugbọn tu silẹ nikan nigbati o ba ṣetan.

Ṣeto boredom jẹ awon

Wo ofin ipa ọna Istio atẹle, eyiti o tọ gbogbo awọn ibeere HTTP si iṣeduro microservice v1 (gbogbo awọn apẹẹrẹ ti a mu lati Istio Tutorial GitHub repo), lakoko ti o ṣe afihan wọn nigbakanna si iṣeduro v2 microservice:

Ifilọlẹ Dudu ni Istio: Awọn iṣẹ Aṣiri
San ifojusi si aami mirror: ni isalẹ ti iboju - o jẹ eyi ti o ṣeto ijabọ mirroring. Bẹẹni, o rọrun yẹn!

Abajade ti ofin yii yoo jẹ pe eto iṣelọpọ rẹ (v1) yoo tẹsiwaju lati ṣe ilana awọn ibeere ti nwọle, ṣugbọn awọn ibeere funrara wọn yoo ṣe afihan asynchronously si v2, iyẹn ni, awọn ẹda-ẹda pipe wọn yoo lọ sibẹ. Ni ọna yii, o le ṣe idanwo v2 ni awọn ipo gidi - lori data gidi ati ijabọ - laisi kikọlu ni eyikeyi ọna pẹlu iṣẹ ti eto iṣelọpọ. Njẹ eyi jẹ ki idanwo siseto jẹ alaidun bi? Bẹẹni, dajudaju. Ṣugbọn o ṣe ni ọna ti o nifẹ.

Jẹ ká fi eré

Jọwọ ṣe akiyesi pe ninu koodu v2 o jẹ dandan lati pese fun awọn ipo nibiti awọn ibeere ti nwọle le ja si awọn iyipada data. Awọn ibeere funrara wọn jẹ afihan ni irọrun ati ni gbangba, ṣugbọn yiyan ọna ṣiṣe ninu idanwo naa jẹ tirẹ - ati pe eyi jẹ aibalẹ diẹ.

Jẹ ká tun ohun pataki ojuami

Ifilọlẹ aṣiri pẹlu digi ijabọ (Ifilọlẹ Dudu / Ibere ​​Mirroring) le ṣee ṣe laisi ni ipa koodu ni ọna eyikeyi.

Ounjẹ fun ero

Kini ti ibi ti awọn ibeere ti ṣe digi fi diẹ ninu wọn ranṣẹ kii ṣe si v1, ṣugbọn si v2? Fun apẹẹrẹ, ida kan ninu gbogbo awọn ibeere tabi awọn ibeere nikan lati ẹgbẹ awọn olumulo kan. Ati lẹhinna, ti n wo bi v2 ṣe n ṣiṣẹ, gbe gbogbo awọn ibeere lọ siwaju si ẹya tuntun. Tabi ni idakeji, da ohun gbogbo pada si v1 ti nkan kan ba jẹ aṣiṣe pẹlu v2. Mo ro pe o ti a npe ni Canary imuṣiṣẹ. lọ pada si iwakusa, ati pe ti o ba jẹ ti Ilu Rọsia, o ṣee ṣe yoo ni itọkasi kan si ologbo), ati nisisiyi a yoo wo eyi ni awọn alaye diẹ sii.

Canary imuṣiṣẹ ni Istio: simplifying commissioning

Ni ifarabalẹ ati diėdiė

Kokoro ti awoṣe imuṣiṣẹ imuṣiṣẹ Canary jẹ irọrun pupọ: nigbati o ṣe ifilọlẹ ẹya tuntun ti sọfitiwia rẹ (ninu ọran wa, microservice), o kọkọ fun ni iwọle si ẹgbẹ kekere ti awọn olumulo. Ti ohun gbogbo ba lọ daradara, o mu ki ẹgbẹ yii pọ si laiyara titi ti ẹya tuntun yoo bẹrẹ lati ṣiṣẹ, tabi - ti ko ba ṣe bẹ - nikẹhin gbe gbogbo awọn olumulo lọ si. Nipa ni ironu ati diẹdiẹ ṣafihan ẹya tuntun ati yiyipada awọn olumulo si rẹ ni ọna iṣakoso, o le dinku awọn ewu ati mu esi pọ si.

Nitoribẹẹ, Istio ṣe irọrun Imuṣiṣẹ Canary nipa fifun ọpọlọpọ awọn aṣayan ti o dara fun ipa-ọna ibeere oye. Ati bẹẹni, gbogbo eyi le ṣee ṣe laisi fọwọkan koodu orisun rẹ ni eyikeyi ọna.

Sisẹ ẹrọ aṣawakiri

Ọkan ninu awọn ilana ipa ọna ti o rọrun julọ jẹ atunṣe-orisun ẹrọ aṣawakiri. Jẹ ki a sọ pe o fẹ awọn ibeere nikan lati awọn aṣawakiri Safari lati lọ si v2. Eyi ni bi o ti ṣe:

Ifilọlẹ Dudu ni Istio: Awọn iṣẹ Aṣiri
Jẹ ki a lo ofin ipa-ọna yii lẹhinna lo aṣẹ naa curl A yoo ṣe afiwe awọn ibeere gidi si microservice ni lupu kan. Bi o ti le rii ninu sikirinifoto, gbogbo wọn lọ si v1:

Ifilọlẹ Dudu ni Istio: Awọn iṣẹ Aṣiri
Nibo ni ijabọ lori v2? Niwọn bi ninu apẹẹrẹ wa gbogbo awọn ibeere wa nikan lati laini aṣẹ tiwa, o rọrun ko si tẹlẹ. Ṣugbọn ṣe akiyesi awọn laini isalẹ ni iboju loke: eyi jẹ ifa si otitọ pe a ṣe ibeere kan lati aṣawakiri Safari, eyiti o ṣe agbejade eyi:

Ifilọlẹ Dudu ni Istio: Awọn iṣẹ Aṣiri

Agbara ailopin

A ti kọ tẹlẹ pe awọn ikosile deede n pese awọn agbara ti o lagbara pupọ fun awọn ibeere lilọ kiri. Wo apẹẹrẹ atẹle (a ro pe iwọ yoo loye ohun ti o ṣe):

Ifilọlẹ Dudu ni Istio: Awọn iṣẹ Aṣiri
Ni bayi o ṣee ṣe ki o ni imọran kini awọn ikosile deede le ṣe.

Ṣiṣẹ Smart

Itọnisọna Smart, ni pataki awọn akọle apo-iṣelọpọ ni lilo awọn ikosile deede, gba ọ laaye lati darí ijabọ ni ọna ti o fẹ. Ati pe eyi jẹ irọrun pupọ imuse ti koodu tuntun - o rọrun, ko nilo iyipada koodu funrararẹ, ati ti o ba jẹ dandan, ohun gbogbo le yarayara pada bi o ti jẹ.

Nife?

Ṣe o ni itara lati ṣe idanwo pẹlu Istio, Kubernetes ati OpenShift lori kọnputa rẹ? Egbe Red Hat Developer pese sile o tayọ iwe ẹkọ lori koko yii o jẹ ki gbogbo awọn faili ti o tẹle wa ni gbangba. Nitorinaa tẹsiwaju ki o maṣe sẹ ara rẹ ohunkohun.

Istio Egress: jade nipasẹ ile itaja ohun iranti

Nipa lilo Istio papọ pẹlu Red Hat OpenShift ati Kubernetes, o le jẹ ki igbesi aye rẹ rọrun pẹlu awọn iṣẹ microservice. Apapo iṣẹ Istio ti wa ni ipamọ ninu awọn adarọ-ese Kubernetes, ati pe koodu rẹ nṣiṣẹ (julọ) ni ipinya. Išẹ, irọrun iyipada, wiwa, bbl - gbogbo eyi jẹ rọrun lati lo ọpẹ si lilo awọn apoti ti ẹgbẹ. Ṣugbọn kini ti microservice rẹ ba nilo lati ṣe ibasọrọ pẹlu awọn iṣẹ miiran ti o wa ni ita ti eto OpenShift-Kubernetes rẹ?

Eyi ni ibi ti Istio Egress wa si igbala. Ni kukuru, o rọrun fun ọ laaye lati wọle si awọn orisun (ka: “awọn iṣẹ”) ti kii ṣe apakan ti eto Kubernetes pods rẹ. Ti o ko ba ṣe iṣeto ni afikun, lẹhinna ni ijabọ ayika Istio Egress ti wa ni ipalọlọ nikan laarin iṣupọ ti awọn adarọ-ese ati laarin iru awọn iṣupọ ti o da lori awọn tabili IP inu. Ati iru pupation ṣiṣẹ nla niwọn igba ti o ko nilo iraye si awọn iṣẹ lati ita.

Egress gba ọ laaye lati fori awọn tabili IP ti o wa loke, boya da lori awọn ofin Egress tabi lori ọpọlọpọ awọn adirẹsi IP.

Jẹ ki a sọ pe a ni eto Java kan ti o ṣe ibeere GET kan si httpbin.org/headers.

(httpbin.org jẹ orisun ti o rọrun fun idanwo awọn ibeere iṣẹ ti njade.)

Ti o ba tẹ lori laini aṣẹ curl http://httpbin.org/headers, a yoo ri awọn wọnyi:

Ifilọlẹ Dudu ni Istio: Awọn iṣẹ Aṣiri
Tabi o le ṣii adirẹsi kanna ni ẹrọ aṣawakiri:

Ifilọlẹ Dudu ni Istio: Awọn iṣẹ Aṣiri
Bii o ti le rii, iṣẹ ti o wa nibẹ ni irọrun da awọn akọle ti o kọja si.

Wọle fidipo ori-lori

Bayi jẹ ki a mu koodu Java ti iṣẹ yii, ita si eto wa, ki o si ṣiṣẹ lori ara wa, nibiti, ranti, ti fi sori ẹrọ Istio. (O le ṣe eyi funrararẹ nipa kikan si ikẹkọ Istio wa.) Lẹhin ti kọ aworan ti o yẹ ati ṣe ifilọlẹ lori pẹpẹ OpenShift, a yoo pe iṣẹ yii pẹlu aṣẹ naa curl egresshttpbin-istioegress.$(minishift ip).nip.io, lẹhin eyi a yoo rii eyi loju iboju:

Ifilọlẹ Dudu ni Istio: Awọn iṣẹ Aṣiri
Yeee, kini o ṣẹlẹ? Ohun gbogbo kan ṣiṣẹ. Kini Ko Ri tumọ si? A kan ṣe fun u curl.

Itẹsiwaju awọn tabili IP si gbogbo Intanẹẹti

Istio yẹ ki o jẹbi (tabi dupẹ) fun eyi. Lẹhin gbogbo ẹ, Istio jẹ awọn apoti ẹgbẹ ti o ni iduro fun wiwa ati ipa-ọna (ati ọpọlọpọ awọn nkan miiran ti a ti sọrọ nipa iṣaaju). Fun idi eyi, awọn tabili IP nikan mọ ohun ti o wa ninu eto iṣupọ rẹ. Ati httpbin.org wa ni ita ati nitorinaa ko le wọle. Ati pe eyi ni ibiti Istio Egress wa si igbala - laisi iyipada diẹ si koodu orisun rẹ.

Ofin Egress ti o wa ni isalẹ fi agbara mu Istio lati wa (ti o ba jẹ dandan, lẹhinna jakejado Intanẹẹti gbogbo) fun iṣẹ ti o nilo, ninu ọran yii, httpbin.org. Gẹgẹbi o ti le rii lati faili yii (egress_httpbin.yml), iṣẹ ṣiṣe nibi jẹ ohun rọrun:

Ifilọlẹ Dudu ni Istio: Awọn iṣẹ Aṣiri
Gbogbo ohun ti o ku ni lati lo ofin yii:

istioctl create -f egress_httpbin.yml -n istioegress

O le wo awọn ofin Egress pẹlu aṣẹ istioctl get egressrules:

Ifilọlẹ Dudu ni Istio: Awọn iṣẹ Aṣiri
Ati nikẹhin, a tun ṣiṣẹ aṣẹ naa lẹẹkansi ọmọ-iwe - ati pe a rii pe ohun gbogbo ṣiṣẹ:

Ifilọlẹ Dudu ni Istio: Awọn iṣẹ Aṣiri

A ro ni gbangba

Bii o ti le rii, Istio gba ọ laaye lati ṣeto ibaraenisepo pẹlu agbaye ita. Ni awọn ọrọ miiran, o tun le ṣẹda awọn iṣẹ OpenShift ati ṣakoso wọn nipasẹ Kubernetes, titọju ohun gbogbo ni awọn adarọ-ese ti o ṣe iwọn si oke ati isalẹ bi o ṣe nilo. Ati ni akoko kanna, o le wọle lailewu awọn iṣẹ ita si agbegbe rẹ. Ati bẹẹni, a tun tun lekan si pe gbogbo eyi le ṣee ṣe laisi fọwọkan koodu rẹ ni eyikeyi ọna.

Eyi ni ifiweranṣẹ ti o kẹhin ninu jara lori Istio. Duro si aifwy - ọpọlọpọ awọn nkan ti o nifẹ si wa niwaju!

orisun: www.habr.com

Fi ọrọìwòye kun