Te Whakatairanga Canary ma te whakamahi i a Jenkins-X Istio Flagger
Te Tukunga Canary
Ko te tumanako ka panui koe waahanga tuatahi, i whakamaarama pototia e matou he aha nga Canary Deployments. I whakaatu ano matou me pehea te whakatinana ma te whakamahi i nga rauemi Kubernetes paerewa.
Argo Rollouts
Ko Argo Rollouts he kaiwhakahaere tuku taketake a Kubernetes. Ka whakaratohia he CRD (Whakamaramatanga Rauemi Ritenga) mo nga Kubernetes. He mihi ki tenei, ka taea e tatou te whakamahi i tetahi hinonga hou: Rollout, e whakahaere ana i nga whakatakotoranga puru-matomato me te canary me nga momo whiringa whirihoranga.
Argo Rollouts pūmana whakamahia e te rauemi ritenga Rollout, Whakaaetia mo etahi atu rautaki whakatakotoranga penei i te puru-matomato me te canary mo Kubernetes. Rauemi Rollout whakarato taumahinga rite Deployment, me etahi atu rautaki whakaurunga anake.
rauemi Deployments e rua nga rautaki mo te tuku: RollingUpdate и Recreate. Ahakoa e pai ana enei rautaki mo te nuinga o nga keehi, mo te tuku ki nga kaitoro i runga i te waahanga nui rawa atu, ka whakamahia etahi atu rautaki, penei i te puru-matomato, canary ranei, kaore i te waatea i roto i te Kaiwhakahaere Whakamahinga. Hei whakamahi i enei rautaki i roto i nga Kubernetes, me tuhi nga kaiwhakamahi i nga tuhinga tuhi ki runga ake o a raatau Whakamahinga. Ko te Kaiwhakahaere Argo Rollouts e whakaatu ana i enei rautaki he ngawari, he korero, he tawhā taea te whirihora. https://argoproj.github.io/argo-rollouts
Kei reira ano hoki a Argo CI, e whakarato ana i te atanga paetukutuku pai mo te whakamahi me te Rollouts, ka tirohia e maatau i te tuhinga e whai ake nei.
I roto i to maatau hanganga kemu (tirohia i raro) kua taapirihia e matou te install.yaml hei i/k8s/argo-rollouts/install.yaml. Ma tenei ka whakauruhia e GitlabCI ki roto i te kohinga.
He Python+Flask API tino ngawari tenei e whakahoki mai ana i te urupare hei JSON. Ka hangaia e matou te kete ma te whakamahi i te GitlabCI ka pana te hua ki te Rehita Gitlab. I roto i te rehita e rua nga putanga tuku rereke:
wuestkamp/k8s-deployment-example-app:v1
wuestkamp/k8s-deployment-example-app:v2
Ko te rereketanga anake i waenga i a raatau ko te konae JSON i whakahokia mai. Ka whakamahia e matou tenei tono ki te tiro ngawari ki te ahua o te putanga e korero ana matou.
Pupuri hangahanga
I roto i tenei putunga ka whakamahia e matou a GitlabCI mo te tuku ki nga Kubernetes, .gitlab-ci.yml te ahua penei:
Rollout he rite tonu te mahi ki te Whakamahinga. Ki te kore matou e whakatakoto rautaki whakahōu (penei i te kanari i konei) ka rite te ahua o te Whakanoho-whakahoutanga taunoa.
Ka tautuhia e matou nga waahanga e rua i roto i te yaml mo te tuku canary:
10% o nga waka ki te canary (tatari mo te pukapuka OK)
50% te hokohoko ki te canary (tatari 2 meneti ka haere tonu ki te 100%)
Te mahi tukunga tuatahi
Whai muri i te tukunga tuatahi, ka penei te ahua o a maatau rauemi:
Na ka whiwhi whakautu mai i te putanga tuatahi o te tono:
Te mahi i te Canary Deployment
Hipanga 1: 10% hokohoko
Hei tiimata i te tukunga kanari, me whakarereke noa te ahua o te ahua penei i te nuinga o te waa ki te tuku:
Ka tino taunaki ahau i tenei ataata, e whakaatu ana me pehea te mahi tahi a Argo Rollouts me Argo CI:
Ko te hua
He pai ki ahau te whakaaro ki te whakamahi i nga CRD e whakahaere ana i te hanga o etahi atu momo whakaurunga, tauira taapiri ranei, whakahuri i nga waka, aha atu. He pai te mahi tahi me ratou. I muri mai ka hiahia ahau ki te whakamatautau i te whakauru ki a Argo CI.
Heoi, te ahua nei he whakakotahitanga nui o Argo CI me Flux CI e haere mai ana, na ka tatari ahau kia puta mai te tukunga hou: Argo Flux.
Kua whai wheako koe mo Argo Rollouts Argo CI ranei?
Panuihia etahi atu tuhinga i runga i ta maatau blog: