Uzinduzi wa Giza katika Istio: Huduma za Siri

"Hatari ni jina langu la kati," Austin Powers, mtu wa kimataifa wa siri, alikuwa akisema. Lakini kile kinachoheshimiwa sana na mawakala wakuu na huduma za akili haifai kabisa kwa huduma za kompyuta, ambapo kuchoka ni bora zaidi kuliko hatari.

Uzinduzi wa Giza katika Istio: Huduma za Siri

Na Istio, pamoja na OpenShift na Kubernetes, hufanya upelekaji wa huduma ndogo kuwa wa kuchosha na kutabirika - na hiyo ni nzuri. Tutazungumza juu ya hili na mengi zaidi katika chapisho la nne na la mwisho katika safu ya Istio.

Wakati kuchoka ni sawa

Kwa upande wetu, uchovu hutokea tu katika awamu ya mwisho, wakati yote iliyobaki ni kukaa na kutazama mchakato. Lakini kwa hili unahitaji kusanidi kila kitu kwanza, na mambo mengi ya kuvutia yanakungoja hapa.

Wakati wa kupeleka toleo jipya la programu yako, inafaa kuzingatia chaguzi zote za kupunguza hatari. Kukimbia kwa sambamba ni njia yenye nguvu sana na iliyothibitishwa ya kupima, na Istio inakuwezesha kutumia "huduma ya siri" (toleo la siri la huduma yako ndogo) ili kufanya hivyo bila kuingilia kati na mfumo wa uzalishaji. Kuna hata neno maalum kwa hili - "Uzinduzi wa Giza", ambao kwa upande wake huwashwa na kazi iliyo na jina la kupeleleza sawa "kioo cha trafiki".

Tafadhali kumbuka kuwa sentensi ya kwanza ya aya iliyotangulia inatumia neno "peleka" badala ya "kutolewa". Unapaswa kuwa na uwezo wa kupelekaβ€”na, bila shaka, tumiaβ€”huduma yako ndogo mara nyingi unavyotaka. Huduma hii lazima iweze kupokea na kusindika trafiki, kutoa matokeo, na pia kuandika kwa kumbukumbu na kufuatilia. Lakini wakati huo huo, huduma hii yenyewe haina haja ya kutolewa katika uzalishaji. Kupeleka na kutoa programu sio kitu sawa kila wakati. Unaweza kupeleka wakati wowote upendao, lakini uachilie tu ukiwa tayari.

Kupanga uchovu ni ya kuvutia

Angalia sheria ifuatayo ya uelekezaji ya Istio, ambayo huelekeza maombi yote ya HTTP kwa pendekezo la huduma ndogo v1 (mifano yote imechukuliwa kutoka Istio Tutorial GitHub repo), wakati huo huo ukiwaangazia kwa pendekezo la huduma ndogo ya v2:

Uzinduzi wa Giza katika Istio: Huduma za Siri
Makini na lebo mirror: chini ya skrini - ni hii ambayo inaweka uakisi wa trafiki. Ndiyo, ni rahisi hivyo!

Matokeo ya sheria hii yatakuwa kwamba mfumo wako wa uzalishaji (v1) utaendelea kushughulikia maombi yanayoingia, lakini maombi yenyewe yataangaziwa kwa v2, yaani, nakala zao kamili zitaenda huko. Kwa njia hii, unaweza kupima v2 katika hali halisi - kwenye data halisi na trafiki - bila kuingilia kwa njia yoyote na uendeshaji wa mfumo wa uzalishaji. Je, hii inafanya upangaji wa majaribio kuwa ya kuchosha? Ndiyo, hakika. Lakini inafanywa kwa njia ya kuvutia.

Tuongeze tamthilia

Tafadhali kumbuka kuwa katika msimbo wa v2 ni muhimu kutoa kwa hali ambapo maombi yanayoingia yanaweza kusababisha mabadiliko ya data. Maombi yenyewe yanaangaziwa kwa urahisi na kwa uwazi, lakini uchaguzi wa njia ya usindikaji katika jaribio ni juu yako - na hii inatia wasiwasi kidogo.

Hebu kurudia jambo muhimu

Uzinduzi wa siri kwa kuakisi trafiki (Uzinduzi wa Giza/Uakisi wa Ombi) unaweza kufanywa bila kuathiri msimbo kwa njia yoyote.

Chakula cha mawazo

Je, ikiwa mahali ambapo maombi yameakisiwa hutuma baadhi yao si kwa v1, lakini kwa v2? Kwa mfano, asilimia moja ya maombi yote au maombi pekee kutoka kwa kikundi fulani cha watumiaji. Na kisha, tayari kuangalia jinsi v2 inavyofanya kazi, hatua kwa hatua uhamishe maombi yote kwa toleo jipya. Au kinyume chake, rudisha kila kitu kwa v1 ikiwa kitu kitaenda vibaya na v2. Nadhani inaitwa Canary Deployment. inarudi kwenye uchimbaji madini, na ikiwa ingekuwa ya asili ya Kirusi, labda ingekuwa na kumbukumbu ya paka), na sasa tutaangalia hili kwa undani zaidi.

Usambazaji wa Canary katika Istio: kurahisisha uagizaji

Kwa uangalifu na hatua kwa hatua

Kiini cha muundo wa uwekaji wa Canary Deployment ni rahisi sana: unapozindua toleo jipya la programu yako (kwa upande wetu, huduma ndogo), kwanza unatoa ufikiaji kwa kikundi kidogo cha watumiaji. Ikiwa kila kitu kitaenda sawa, unaongeza kikundi hiki polepole hadi toleo jipya linaanza kufanya kazi, au - ikiwa halitafanya hivyo - hatimaye kuhamisha watumiaji wote kwake. Kwa kuwasilisha toleo jipya kwa uangalifu na hatua kwa hatua na kuwabadilisha watumiaji kwa njia inayodhibitiwa, unaweza kupunguza hatari na kuongeza maoni.

Bila shaka, Istio hurahisisha Usambazaji wa Canary kwa kutoa chaguo kadhaa nzuri kwa uelekezaji wa ombi la akili. Na ndio, haya yote yanaweza kufanywa bila kugusa msimbo wako wa chanzo kwa njia yoyote.

Kuchuja kivinjari

Mojawapo ya vigezo rahisi zaidi vya uelekezaji ni uelekezaji upya unaotegemea kivinjari. Wacha tuseme unataka maombi kutoka kwa vivinjari vya Safari pekee kwenda kwa v2. Hivi ndivyo inavyofanywa:

Uzinduzi wa Giza katika Istio: Huduma za Siri
Wacha tutumie sheria hii ya uelekezaji na kisha tumia amri curl Tutaiga maombi halisi kwa huduma ndogo kwa kitanzi. Kama unavyoona kwenye picha ya skrini, zote huenda kwa v1:

Uzinduzi wa Giza katika Istio: Huduma za Siri
Trafiki iko wapi kwenye v2? Kwa kuwa katika mfano wetu maombi yote yalikuja tu kutoka kwa safu yetu ya amri, haipo. Lakini makini na mistari ya chini kwenye skrini hapo juu: hii ni majibu kwa ukweli kwamba tulitoa ombi kutoka kwa kivinjari cha Safari, ambacho kilitoa hii:

Uzinduzi wa Giza katika Istio: Huduma za Siri

Nguvu isiyo na kikomo

Tayari tumeandika kwamba misemo ya kawaida hutoa uwezo mkubwa sana kwa maombi ya kuelekeza. Angalia mfano ufuatao (tunadhani utaelewa inavyofanya):

Uzinduzi wa Giza katika Istio: Huduma za Siri
Kufikia sasa labda una wazo la nini misemo ya kawaida inaweza kufanya.

Tenda Smart

Uelekezaji mahiri, haswa kuchakata vichwa vya pakiti kwa kutumia maneno ya kawaida, hukuruhusu kuelekeza trafiki utakavyo. Na hii hurahisisha sana utekelezaji wa nambari mpya - ni rahisi, hauitaji kubadilisha nambari yenyewe, na ikiwa ni lazima, kila kitu kinaweza kurudishwa haraka kama ilivyokuwa.

Unavutiwa?

Je, una hamu ya kujaribu Istio, Kubernetes na OpenShift kwenye kompyuta yako? Timu Timu ya Wasanidi wa Kofia Nyekundu imeandaliwa bora kitabu cha maandishi juu ya mada hii na kufanya faili zote zinazoambatana zipatikane hadharani. Kwa hiyo endelea na usijikane mwenyewe chochote.
 

Istio Egress: toka kupitia duka la kumbukumbu

Kwa kutumia Istio pamoja na Red Hat OpenShift na Kubernetes, unaweza kurahisisha maisha yako na huduma ndogo ndogo. Matundu ya huduma ya Istio yamefichwa ndani ya maganda ya Kubernetes, na msimbo wako huendeshwa (zaidi) kwa kutengwa. Utendaji, urahisi wa mabadiliko, kufuatilia, nk - yote haya ni rahisi kutumia shukrani kwa matumizi ya vyombo vya sidecar. Lakini vipi ikiwa huduma ndogo yako inahitaji kuwasiliana na huduma zingine ambazo ziko nje ya mfumo wako wa OpenShift-Kubernetes?

Hapa ndipo Istio Egress anakuja kuwaokoa. Kwa kifupi, inakuruhusu kufikia rasilimali (soma: "huduma") ambazo si sehemu ya mfumo wako wa maganda ya Kubernetes. Ikiwa hutafanya usanidi wa ziada, basi katika trafiki ya mazingira ya Istio Egress inapitishwa tu ndani ya kundi la maganda na kati ya makundi hayo kulingana na meza za ndani za IP. Na pupation kama hiyo hufanya kazi vizuri mradi hauitaji ufikiaji wa huduma kutoka nje.

Egress hukuruhusu kupita meza za IP zilizo hapo juu, ama kulingana na sheria za Egress au anuwai ya anwani za IP.

Wacha tuseme tuna programu ya Java ambayo hufanya ombi la GET kwa httpbin.org/headers.

(httpbin.org ni nyenzo rahisi tu ya kujaribu maombi ya huduma zinazotoka.)

Ikiwa utaingia kwenye mstari wa amri curl http://httpbin.org/headers, tutaona yafuatayo:

Uzinduzi wa Giza katika Istio: Huduma za Siri
Au unaweza kufungua anwani sawa kwenye kivinjari:

Uzinduzi wa Giza katika Istio: Huduma za Siri
Kama unaweza kuona, huduma iliyo hapo inarudisha tu vichwa vilivyopitishwa kwake.

Tunabadilisha uagizaji wa bidhaa moja kwa moja

Sasa hebu tuchukue msimbo wa Java wa huduma hii, nje ya mfumo wetu, na uiendeshe peke yetu, ambapo, kumbuka, Istio imewekwa. (Unaweza kufanya hivyo mwenyewe kwa kuwasiliana mafunzo yetu ya Istio.) Baada ya kujenga picha inayofaa na kuizindua kwenye jukwaa la OpenShift, tutaita huduma hii kwa amri curl egresshttpbin-istioegress.$(minishift ip).nip.io, baada ya hapo tutaona hii kwenye skrini:

Uzinduzi wa Giza katika Istio: Huduma za Siri
Lo, nini kilitokea? Kila kitu kilifanya kazi tu. Nini maana ya Not Found? Tulimfanyia tu curl.

Kupanua meza za IP kwa mtandao mzima

Istio inapaswa kulaumiwa (au kushukuru) kwa hili. Baada ya yote, Istio ni vyombo vya kando ambavyo vina jukumu la kugundua na kuelekeza (na mambo mengine mengi ambayo tulizungumza mapema). Kwa sababu hii, meza za IP zinajua tu kile kilicho ndani ya mfumo wako wa nguzo. Na httpbin.org iko nje na kwa hivyo haipatikani. Na hapa ndipo Istio Egress anakuja kukusaidia - bila mabadiliko hata kidogo kwenye msimbo wako wa chanzo.

Sheria ya Egress hapa chini inalazimisha Istio kutafuta (ikiwa ni lazima, basi katika mtandao mzima) kwa huduma inayohitajika, katika kesi hii, httpbin.org. Kama unavyoona kutoka kwa faili hii ( egress_httpbin.yml ), utendakazi hapa ni rahisi sana:

Uzinduzi wa Giza katika Istio: Huduma za Siri
Kinachobaki ni kutumia sheria hii:

istioctl create -f egress_httpbin.yml -n istioegress

Unaweza kutazama sheria za Egress na amri istioctl get egressrules:

Uzinduzi wa Giza katika Istio: Huduma za Siri
Na hatimaye, tunaendesha amri tena curl - na tunaona kuwa kila kitu kinafanya kazi:

Uzinduzi wa Giza katika Istio: Huduma za Siri

Tunafikiri kwa uwazi

Kama unavyoona, Istio hukuruhusu kupanga mwingiliano na ulimwengu wa nje. Kwa maneno mengine, bado unaweza kuunda huduma za OpenShift na kuzidhibiti kupitia Kubernetes, ukiweka kila kitu kwenye maganda ambayo yanaongezeka na kushuka kama inavyohitajika. Na wakati huo huo, unaweza kupata huduma kwa usalama nje ya mazingira yako. Na ndio, tunarudia tena kwamba haya yote yanaweza kufanywa bila kugusa nambari yako kwa njia yoyote.

Hili lilikuwa chapisho la mwisho katika safu kwenye Istio. Endelea kufuatilia - kuna mambo mengi ya kuvutia mbele!

Chanzo: mapenzi.com

Kuongeza maoni