Tuhipoka. whakamaori.: Ko te wahi tuatahi I whakatapua tenei raupapa ki te whakauru i nga kaha o Istio me te whakaatu i a raatau mahi. Inaianei ka korero tatou mo nga ahuatanga uaua ake o te whirihoranga me te whakamahi i tenei mata ratonga, otira, mo te ararere me te whakahaere waka whatunga.
Ka whakamahara ano matou ki a koe kei te whakamahi te tuhinga i nga whirihoranga (nga whakaaturanga mo Kubernetes me Istio) mai i te putunga. istio-mastery.
whakahaere waka
Ki a Istio, ka puta mai nga kaha hou ki te roopu ki te whakarato:
Ararere tono hihiko: nga whakaputanga canary, whakamatautau A/B;
Te whakataurite kawenga: ngawari me te rite tonu, i runga i nga tohu;
Te whakaoranga i muri i te hinga: taima, ngana ano, ara iahiko;
Te whakauru hapa: whakaroa, tuku tono, etc.
I te wa e haere tonu ana te tuhinga, ka whakaatuhia enei kaha ma te whakamahi i te tono kua tohua hei tauira, ka whakaurua nga ariā hou i te huarahi. Ko te kaupapa tuatahi penei DestinationRules(arā, nga ture mo te kaiwhiwhi o nga waka/tono - tata ki te whakawhiti), me te awhina o te whakahohe i te whakamatautau A/B.
Whakamātautau A/B: DestinationRules i roto i te mahi
Ka whakamahia te whakamatautau A/B i nga keehi e rua nga putanga o tetahi tono (te nuinga he rereke te ahua) kaore matou i te 100% tino mohio ko wai te mea ka pai ake te wheako kaiwhakamahi. Na reira, ka whakahaerehia e matou nga putanga e rua i te wa kotahi ka kohi ine.
Hei tuku i te putanga tuarua o te pito o mua, e hiahiatia ana hei whakaatu i te whakamatautau A/B, whakahaere i te whakahau e whai ake nei:
$ kubectl apply -f resource-manifests/kube/ab-testing/sa-frontend-green-deployment.yaml
deployment.extensions/sa-frontend-green created
E rua nga waahi e rereke ana te whakaaturanga tukunga mo te putanga matomato:
Ko te ahua kei runga i tetahi tohu rereke - istio-green,
He tapanga nga Pods version: green.
I te mea he tapanga nga waahanga e rua app: sa-frontend,nga tono i tukuna e te ratonga mariko sa-external-services mo te mahi sa-frontend, ka tukuna ki ona waahi katoa ka tohatohahia te uta ki roto huritau-robin algorithm, ka puta te ahuatanga e whai ake nei:
Ko nga konae i tonoa kaore i kitea
Ko enei konae kaore i kitea na te mea he rereke te ingoa i roto i nga momo putanga rereke o te tono. Kia mohio tatou ki tenei:
Ko te tikanga tenei index.html, e tono ana i tetahi putanga o nga konae pateko, ka taea te tuku atu e te kaitaurite kawenga ki nga pota he rereke te ahua, kei reira, mo nga take tino kitea, kaore he konae penei. No reira, kia pai ai te mahi o te tono, me whakarite he here: “ko te putanga ano o te tono i tukuna ki te index.html me tuku nga tono o muri mai".
Ka tae atu tatou ki reira me te tauritenga o nga kawenga a-hash (Hash Tauritenga Tauritenga). I tenei keehi Ko nga tono mai i te kaihoko kotahi ka tukuna ki te tauira o muri, e whakamahia ana he taonga kua tautuhia - hei tauira, he pane HTTP. I whakatinanahia ma te DestinationRules.
Ture Whakataunga
I muri Ratonga Mariko i tukuna he tono ki te ratonga e hiahiatia ana, ma te whakamahi i DestinationRules ka taea e matou te tautuhi i nga kaupapa here ka pa ki nga waka kua whakaritea mo nga tauira o tenei ratonga:
Te whakahaere waka me nga rauemi a Istio
parau: Ko te paanga o nga rauemi a Istio i runga i nga hokohoko whatunga ka whakaatuhia ki konei i runga i te huarahi ngawari ki te mohio. Kia tika, ko te whakatau ko tehea wa ka tukuna te tono na te Kaihopu i roto i te Ingress Gateway i whirihorahia i te CRD.
Ma nga Ture Whakataunga, ka taea e tatou te whirihora i te taurite kawenga ki te whakamahi i nga haki riterite me te whakarite kia whakautua e taua tauira ratonga ki te kaiwhakamahi kotahi. Ko te whirihoranga e whai ake nei ka taea e koe te whakatutuki i tenei (destinationrule-sa-frontend.yaml):
parau: Hei taapiri i nga uara rereke ki te pane me te whakamatautau tika i nga hua ki te tirotiro, ka taea e koe te whakamahi tenei toronga ki Chrome (ranei me tenei mo Firefox - tata. whakawhiti.).
I te nuinga o te waa, he maha ake nga kaha o DestinationRules i roto i te waahi o te whakataurite kawenga - tirohia mo nga taipitopito kei roto tuhinga whaimana.
I mua i te ako atu i a VirtualService, me whakakorehia te "putanga matomato" o te tono me te ture ahunga waka ma te whakahaere i nga whakahau e whai ake nei:
Kōruru (“whakaruruhau”) Whakaata ranei (“whakaata”) whakamahia i roto i nga keehi e hiahia ana matou ki te whakamatautau i te huringa o te whakaputanga me te kore e pa ki nga kaiwhakamahi mutunga: ki te mahi i tenei, ka tukuna e matou nga tono ("whakaata") tono ki te waa tuarua kua mahia nga huringa e hiahiatia ana, ka titiro ki nga hua. Me korero noa, koinei te wa e whiriwhiria ai e to hoa mahi te take tino nui me te tono kume i roto i te ahua o te puranga paru nui e kore e taea e te tangata te arotake.
Hei whakamatautau i tenei ahuatanga e mahi ana, me hanga he tauira tuarua o SA-Logic me nga pepeke (buggy) ma te whakahaere i te whakahau e whai ake nei:
$ kubectl apply -f resource-manifests/kube/shadowing/sa-logic-service-buggy.yaml
deployment.extensions/sa-logic-buggy created
Na inaianei me whakahaere te whakahau kia mohio kei te noho nga waa katoa app=sa-logic He tapanga me nga putanga e rite ana:
ratonga sa-logic ka whai i nga pene me te tapanga app=sa-logic, no reira ka tohaina nga tono katoa ki nga wa katoa:
... engari e hiahia ana matou kia tukuna nga tono ki nga waaata v1 ka whakaatahia ki nga waaata v2:
Ka tutuki tenei ma te VirtualService me te DestinationRule, ka whakatauhia e nga ture nga waahanga me nga huarahi o te VirtualService ki tetahi waahanga motuhake.
Te Tautuhinga Raroiti i roto i nga Ture Whakataunga
Karekau he whakamaramatanga i konei, no reira kia kite tatou i te mahi:
$ kubectl apply -f resource-manifests/istio/shadowing/sa-logic-subsets-shadowing-vs.yaml
virtualservice.networking.istio.io/sa-logic created
Me taapiri te uta ma te karanga i te whakahau e whai ake nei:
$ while true; do curl -v http://$EXTERNAL_IP/sentiment
-H "Content-type: application/json"
-d '{"sentence": "I love yogobella"}';
sleep .8; done
Me titiro ki nga hua i roto i te Grafana, ka kite koe ko te putanga me nga pepeke (buggy) ka puta he kore mo ~60% o nga tono, engari karekau tetahi o enei rahunga e pa ki nga kaiwhakamahi mutunga i te mea ka whakautua e tetahi ratonga whakahaere.
Nga whakautu angitu o nga momo putanga rereke o te ratonga sa-arorau
I konei i kite tuatahi me pehea te tono VirtualService ki nga Kaihoe o a maatau ratonga: ahea sa-web-app ka tono kia sa-logic, ka haere i roto i te Envoy sidecar, e - na roto i te VirtualService - kua whirihorahia ki te arai i te tono ki te waahanga v1 me te whakaata i te tono ki te waahanga v2 o te ratonga. sa-logic.
E mohio ana ahau, kua whakaaro pea koe he maamaa nga Ratonga Mariko. I te waahanga e whai ake nei, ka whakawhānuihia e maatau ma te kii he tino rawe ano ratou.
Nga Whakaputa Canary
Ko te Canary Deployment te tukanga o te huri i tetahi putanga hou o te tono ki te iti o nga kaiwhakamahi. Ka whakamahia ki te whakarite kia kore he raruraru i roto i te tukunga me muri noa iho, kua maia ki tona kounga (tuku), tohatoha ki etahi atu kaiwhakamahi.оnui ake te hunga whakarongo.
Ki te whakaatu i nga whakaputanga o te kanaera, ka mahi tonu matou me tetahi waahanga iti buggy у sa-logic.
Kaua e moumou taima ki runga i nga mea iti ka tukuna tonu te 20% o nga kaiwhakamahi ki te putanga me nga pepeke (ka tohu tenei i ta tatou hurihanga canary), me te toenga 80% ki te ratonga noa. Hei mahi i tenei, whakamahia te VirtualService e whai ake nei (sa-logic-subsets-canary-vs.yaml):
... a ka kite tonu tatou ko etahi o nga tono ka raru:
$ while true; do
curl -i http://$EXTERNAL_IP/sentiment
-H "Content-type: application/json"
-d '{"sentence": "I love yogobella"}'
--silent -w "Time: %{time_total}s t Status: %{http_code}n"
-o /dev/null; sleep .1; done
Time: 0.153075s Status: 200
Time: 0.137581s Status: 200
Time: 0.139345s Status: 200
Time: 30.291806s Status: 500
Ka taea e te VirtualServices te huri i te kanari: I tenei keehi, kua whakaitihia e matou te paanga o nga take ki te 20% o te turanga kaiwhakamahi. He mea whakamiharo! Inaianei, i nga wa katoa kaore matou i te tino mohio ki ta matou waehere (i etahi atu kupu - i nga wa katoa ...), ka taea e matou te whakamahi i te whakaata me te hurihanga canary.
Nga waahi me te ngana ano
Engari kaore nga pepeha e mutu i nga wa katoa ki te waehere. I te rarangi mai i "8 Nga Pohehe mo te Rorohiko Tohatoha"Ko te tuatahi ko te whakapono pohehe "he pono te whatunga." I roto i te mooni te whatunga e kore pono, na konei ka hiahia matou ki nga waahi (waahi) ka ngana ano (whakamatau ano).
Mo te whakaaturanga ka whakamahi tonu matou i te putanga raruraru ano sa-logic (buggy), a ka whakatauritehia e matou te kore pono o te whatunga me nga rahunga ohorere.
Tukuna kia 1/3 te tupono ka roa rawa te whakautu ki ta maatau ratonga me nga pepeha, he 1/3 te tupono ka mutu me te Hapa Tūmau Roto, me te 1/3 te tupono ki te whakahoki angitu i te wharangi.
Hei whakaiti i nga paanga o enei raru me te pai ake o te oranga mo nga kaiwhakamahi, ka taea e matou:
tāpirihia he taima ki te roa ake te ratonga i te 8 hēkona ki te whakautu,
Ko te waahi mo te tono kua whakaritea ki te 8 hēkona;
Ka 3 nga wa ka ngana ano nga tono;
A ko ia nganatanga ka kiia kaore i angitu mena ka neke ake te wa whakautu i te 3 hēkona.
He arotautanga tenei na te mea kaore te kaiwhakamahi e tatari neke atu i te 8 hēkona, ka toru nga nganatanga hou ki te tiki whakautu mena ka rahua, ka piki ake te tupono ki te whakautu angitu.
Hoatu te whirihoranga kua whakahoutia me te whakahau e whai ake nei:
A, tirohia i roto i nga kauwhata Grafana kua piki ake te maha o nga whakautu angitu i runga ake nei:
Te whakapai ake i nga tatauranga whakautu angitu i muri i te taapiri i nga waahi me te ngana ano
I mua i te neke ki te waahanga e whai ake nei (he pai ake ranei, ki te waahanga e whai ake nei o te tuhinga, na te mea karekau he whakamatautau mahi - tata. transl.), muku sa-logic-buggy me VirtualService ma te whakahaere i nga whakahau e whai ake nei:
E korero ana matou mo nga tauira nui e rua i roto i te hoahoanga microservice e taea ai e koe te whakaora whaiaro (whakaora whaiaro) ratonga.
Kaiwhiwhi Puku("kaiwhati iahiko") whakamahia ki te whakamutu i nga tono ka tae mai ki tetahi tauira o te ratonga e kiia ana he kino, ka whakahoki ano i te wa e tukuna ana nga tono a te kiritaki ki nga waahi hauora o taua ratonga (e whakanui ana i te ōrau o nga whakautu angitu). (Tuhipoka: Ka kitea etahi atu korero mo te tauira, hei tauira, konei.)
Bulkhead("wehenga") ka wehe i nga rahunga ratonga mai i te pa ki te punaha katoa. Hei tauira, kua pakaru te Ratonga B ka tono tetahi atu ratonga (Kaihoko Ratonga B) ki te Ratonga B, na reira ka pau tana puna miro me te kore e taea te mahi i etahi atu tono (ahakoa ehara i te Ratonga B). (Tuhipoka: Ka kitea etahi atu korero mo te tauira, hei tauira, konei.)
Ka waiho e au nga korero mo te whakatinanatanga o enei tauira na te mea he ngawari ki te kimi i roto tuhinga whaimana, a ka tino hiahia ano ahau ki te whakaatu i te whakamotuhēhēnga me te whakamanatanga, ka korerohia i te waahanga o muri o te tuhinga.