Hoʻohana ʻo Canary me ka hoʻohana ʻana iā Jenkins-X Istio Flagger
Hoʻokomo Canary
Manaʻo mākou e heluhelu ʻoe ʻāpana mua, kahi i wehewehe pōkole ai mākou i ke ʻano o Canary Deployments. Ua hōʻike pū mākou pehea e hoʻokō ai me ka hoʻohana ʻana i nā kumuwaiwai Kubernetes maʻamau.
Argo Rollouts
ʻO Argo Rollouts kahi mea hoʻokele hoʻonohonoho maoli ʻo Kubernetes. Hāʻawi ia i kahi CRD (Custom Resource Definition) no nā Kubernetes. Mahalo iā ia, hiki iā mākou ke hoʻohana i kahi hui hou: Rollout, nāna e hoʻokele i nā hoʻonohonoho ʻulaʻula uliuli a me nā canary me nā koho hoʻonohonoho like ʻole.
Hoʻohana ʻia ka mea hoʻokele Argo Rollouts e kahi kumuwaiwai maʻamau Rollout, ʻAe i nā hoʻolālā hoʻolālā hou e like me ka uliuli-'ōmaʻomaʻo a me ka canary no nā Kubernetes. Punawai Rollout hāʻawi i ka hana like Deployment, me nā hoʻolālā hoʻolaha hou aku.
mau Deployments Loaʻa i ʻelua mau hoʻolālā no ka hoʻolaha ʻana: RollingUpdate и Recreate. ʻOiai ua kūpono kēia mau hoʻolālā no ka hapa nui o nā hihia, no ka hoʻoili ʻana i nā kikowaena ma kahi ākea nui, hoʻohana ʻia nā hoʻolālā ʻē aʻe, e like me ka uliuli-'ōmaʻomaʻo a i ʻole canary, ʻaʻole i loaʻa i ka mea hoʻokele Deployment. No ka hoʻohana ʻana i kēia mau hoʻolālā ma Kubernetes, pono nā mea hoʻohana e kākau i nā palapala ma luna o kā lākou Deployments. Hōʻike ka Argo Rollouts Controller i kēia mau hoʻolālā ma ke ʻano he maʻalahi, hoʻolaha, hoʻonohonoho ʻia. https://argoproj.github.io/argo-rollouts
Aia pū kekahi Argo CI, e hāʻawi ana i kahi kikowaena pūnaewele kūpono no ka hoʻohana ʻana me Rollouts, e nānā mākou i kēlā ma ka ʻatikala aʻe.
I loko o kā mākou mea hoʻonanea turnip (e ʻike i lalo) ua hoʻohui mākou i install.yaml e like me i/k8s/argo-rollouts/install.yaml. Ma kēia ala e hoʻokomo ai ʻo GitlabCI iā ia i loko o ka pūpū.
He Python + Flask API maʻalahi kēia e hoʻihoʻi i kahi pane e like me JSON. E kūkulu mākou i ka pōʻai me ka hoʻohana ʻana iā GitlabCI a pana i ka hopena i ka Registry Gitlab. I loko o ke kākau inoa ʻelua mau mana hoʻokuʻu ʻokoʻa:
wuestkamp/k8s-deployment-example-app:v1
wuestkamp/k8s-deployment-example-app:v2
ʻO ka ʻokoʻa wale nō ma waena o lākou ʻo ka faila JSON i hoʻihoʻi ʻia. Hoʻohana mākou i kēia noi e ʻike maʻalahi i ka mana a mākou e kamaʻilio nei.
Hale waihona waiwai
Ma kēia waihona e hoʻohana mākou iā GitlabCI no ka hoʻouka ʻana iā Kubernetes, .gitlab-ci.yml e like me kēia:
Rollout hana like me ka Deployment. Inā ʻaʻole mākou e hoʻonohonoho i kahi hoʻolālā hoʻolālā (e like me ka canary ma aneʻi) e hana ia e like me ka Deployment rolling-update Deployment.
Wehewehe mākou i ʻelua mau ʻanuʻu ma yaml no ka hoʻolaha ʻana i nā canary:
10% o ke kaʻa i ka canary (kali no ka manual OK)
50% kaʻa i ka canary (kali 2 mau minuke a laila hoʻomau i 100%)
Ke hana nei i ka hoʻolaha mua ʻana
Ma hope o ka hoʻolaha mua ʻana, e like me kēia kā mākou kumuwaiwai:
A loaʻa iā mākou kahi pane mai ka mana mua o ka noi:
Ke hana nei i ka Canary Deployment
KaʻAnuʻu 1: 10% kaʻahele
No ka hoʻomaka ʻana i kahi hoʻolaha canary, pono mākou e hoʻololi i ke kiʻi kiʻi e like me kā mākou hana maʻamau me nā deployments:
Manaʻo nui wau i kēia wikiō, e hōʻike ana pehea e hana pū ai ʻo Argo Rollouts a me Argo CI:
ʻO ka hopena
Nui koʻu makemake i ka manaʻo o ka hoʻohana ʻana i nā CRD e hoʻokele i ka hana ʻana i nā ʻano o ka hoʻopili ʻana a i ʻole replicasets, redirect traffic, etc. Holo mālie ka hana pū me lākou. A laila makemake wau e hoʻāʻo i ka hoʻohui ʻana me Argo CI.
Eia nō naʻe, ʻike ʻia kahi hui nui o Argo CI a me Flux CI e hele mai ana, no laila e kali wau a hiki i ka puka ʻana o ka hoʻokuʻu hou: Argo Flux.
Ua loaʻa iā ʻoe kekahi ʻike me Argo Rollouts a i ʻole Argo CI?
E heluhelu pū i nā ʻatikala ʻē aʻe ma kā mākou blog: