"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.
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
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.
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:
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:
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:
Nguvu isiyo na kikomo
Tayari tumeandika kwamba misemo ya kawaida hutoa uwezo mkubwa sana kwa maombi ya kuelekeza. Angalia mfano ufuatao (tunadhani utaelewa inavyofanya):
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
β
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:
Au unaweza kufungua anwani sawa kwenye kivinjari:
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 curl egresshttpbin-istioegress.$(minishift ip).nip.io
, baada ya hapo tutaona hii kwenye skrini:
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:
Kinachobaki ni kutumia sheria hii:
istioctl create -f egress_httpbin.yml -n istioegress
Unaweza kutazama sheria za Egress na amri istioctl get egressrules
:
Na hatimaye, tunaendesha amri tena curl - na tunaona kuwa kila kitu kinafanya kazi:
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