
Tuhipoka. whakamaori.: 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. .
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 createdE 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 , 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:
$ curl --silent http://$EXTERNAL_IP/ | tr '"' 'n' | grep main
/static/css/main.c7071b22.css
/static/js/main.059f8e9c.js
$ curl --silent http://$EXTERNAL_IP/ | tr '"' 'n' | grep main
/static/css/main.f87cd8c9.css
/static/js/main.f7659dbb.js 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 ():
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: sa-frontend
spec:
host: sa-frontend
trafficPolicy:
loadBalancer:
consistentHash:
httpHeaderName: version # 1 1 - ka hangaia te hash i runga i nga ihirangi o te pane HTTP version.
Hoatu te whirihoranga me te whakahau e whai ake nei:
$ kubectl apply -f resource-manifests/istio/ab-testing/destinationrule-sa-frontend.yaml
destinationrule.networking.istio.io/sa-frontend created Na, whakahaeretia te whakahau i raro nei ka whakarite kia whiwhi koe i nga konae tika ina tohua e koe te pane version:
$ curl --silent -H "version: yogo" http://$EXTERNAL_IP/ | tr '"' 'n' | grep mainparau: 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 ki Chrome (ranei 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 .
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:
$ kubectl delete -f resource-manifests/kube/ab-testing/sa-frontend-green-deployment.yaml
deployment.extensions “sa-frontend-green” deleted
$ kubectl delete -f resource-manifests/istio/ab-testing/destinationrule-sa-frontend.yaml
destinationrule.networking.istio.io “sa-frontend” deletedWhakaata: Ratonga Mariko kei te Parakatihi
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:
$ kubectl get pods -l app=sa-logic --show-labels
NAME READY LABELS
sa-logic-568498cb4d-2sjwj 2/2 app=sa-logic,version=v1
sa-logic-568498cb4d-p4f8c 2/2 app=sa-logic,version=v1
sa-logic-buggy-76dff55847-2fl66 2/2 app=sa-logic,version=v2
sa-logic-buggy-76dff55847-kx8zz 2/2 app=sa-logic,version=v2 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
Nga huinga-iti (roopuiti) ka whakatauhia e te whirihoranga e whai ake nei ():
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: sa-logic
spec:
host: sa-logic # 1
subsets:
- name: v1 # 2
labels:
version: v1 # 3
- name: v2
labels:
version: v2- Kaihautū (
host) ka whakatauhia ko tenei ture e pa ana ki nga keehi ka haere te huarahi ki te ratongasa-logic; - Taitara (
name) ka whakamahia nga huinga-a-roto i te wa e ararere ana ki nga waahanga-iti; - Tapanga (
label) ka tautuhi i nga takirua uara-matua me taurite nga tauira kia noho hei waahanga o te huinga-iti.
Hoatu te whirihoranga me te whakahau e whai ake nei:
$ kubectl apply -f resource-manifests/istio/shadowing/sa-logic-subsets-destinationrule.yaml
destinationrule.networking.istio.io/sa-logic createdInaianei kua tautuhia nga waahanga iti, ka taea e tatou te neke me te whirihora i te VirtualService ki te tono ture ki nga tono ki te sa-arorau kia:
- Ararere ki te huinga-iti
v1, - Whakaatahia ki te huinga-iti
v2.
Ko te whakaaturanga e whai ake nei ka taea e koe te whakatutuki i o mahere ():
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: sa-logic
spec:
hosts:
- sa-logic
http:
- route:
- destination:
host: sa-logic
subset: v1
mirror:
host: sa-logic
subset: v2Karekau 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 createdMe 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 ():
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: sa-logic
spec:
hosts:
- sa-logic
http:
- route:
- destination:
host: sa-logic
subset: v1
weight: 80 # 1
- destination:
host: sa-logic
subset: v2
weight: 20 # 1 1 te taumaha (weight), e tohu ana i te ōrau o nga tono ka tukuna ki tetahi kaiwhiwhi, ki tetahi waahanga iti ranei o te kaiwhiwhi.
Kia whakahouhia te whirihoranga VirtualService o mua mo sa-logic me te whakahau e whai ake nei:
$ kubectl apply -f resource-manifests/istio/canary/sa-logic-subsets-canary-vs.yaml
virtualservice.networking.istio.io/sa-logic configured... 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: 500Ka 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 ""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,
- ngana ano ki te rahua te tono.
Mo te whakatinanatanga, ka whakamahia e matou te whakamaramatanga rauemi e whai ake nei ():
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: sa-logic
spec:
hosts:
- sa-logic
http:
- route:
- destination:
host: sa-logic
subset: v1
weight: 50
- destination:
host: sa-logic
subset: v2
weight: 50
timeout: 8s # 1
retries:
attempts: 3 # 2
perTryTimeout: 3s # 3- 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:
$ kubectl apply -f resource-manifests/istio/retries/sa-logic-retries-timeouts-vs.yaml
virtualservice.networking.istio.io/sa-logic configuredA, 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:
$ kubectl delete deployment sa-logic-buggy
deployment.extensions “sa-logic-buggy” deleted
$ kubectl delete virtualservice sa-logic
virtualservice.networking.istio.io “sa-logic” deletedKo nga Tauira Waahi iahiko me te Tumuaki
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, .)
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, .)
Ka waiho e au nga korero mo te whakatinanatanga o enei tauira na te mea he ngawari ki te kimi i roto , 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.
PS mai i te kaiwhakamaori
Pānuihia hoki i runga i ta maatau blog:
- "Hoki ki nga ratonga moroiti me Istio": , ;
- «";
- «".
Source: will.com
