Canary Deployment bl-użu ta' Jenkins-X Istio Flagger
Skjerament tal-Kanarji
Nittamaw li taqra l-ewwel parti, fejn spjegajna fil-qosor x'inhuma l-Iskjeramenti tal-Kanarji. Urejna wkoll kif nimplimentah billi tuża riżorsi standard ta' Kubernetes.
Argo Rollouts
Argo Rollouts huwa kontrollur tal-iskjerament indiġenu ta' Kubernetes. Jipprovdi CRD (Definizzjoni tar-Riżorsi Custom) għal Kubernetes. Grazzi għaliha, nistgħu nużaw entità ġdida: Rollout, li tamministra skjeramenti blu-aħdar u kanarji b'diversi għażliet ta 'konfigurazzjoni.
Kontrollur Argo Rollouts użat minn riżors tad-dwana Rollout, Jippermetti strateġiji ta' skjerament addizzjonali bħal blu-aħdar u kanarju għal Kubernetes. Riżorsa Rollout jipprovdi funzjonalità ekwivalenti Deployment, biss bi strateġiji addizzjonali ta 'skjerament.
riżorsi Deployments għandha żewġ strateġiji għall-iskjerament: RollingUpdate и Recreate. Għalkemm dawn l-istrateġiji huma adattati għall-biċċa l-kbira tal-każijiet, għall-iskjerament għal servers fuq skala kbira ħafna, jintużaw strateġiji addizzjonali, bħal blu-aħdar jew kanarju, li mhumiex disponibbli fil-kontrollur tal-Iskjerament. Biex jużaw dawn l-istrateġiji f'Kubernetes, l-utenti kellhom jiktbu skripts fuq l-Iskjeramenti tagħhom. L-Argo Rollouts Controller jesponi dawn l-istrateġiji bħala parametri sempliċi, dikjarattivi u konfigurabbli. https://argoproj.github.io/argo-rollouts
Hemm ukoll Argo CI, li jipprovdi interface tal-web konvenjenti għall-użu ma 'Rollouts, aħna ser nagħtu ħarsa lejn dan fl-artiklu li jmiss.
Fil-nevew tal-infrastruttura tagħna (ara hawn taħt) diġà żidna install.yaml bħala i/k8s/argo-rollouts/install.yaml. Dan il-mod GitlabCI se jinstallah fil-cluster.
Din hija API Python+Flask sempliċi ħafna li tirritorna tweġiba bħala JSON. Aħna se nibnu l-pakkett billi tuża GitlabCI u nimbuttaw ir-riżultat lir-Reġistru Gitlab. Fir-reġistru għandna żewġ verżjonijiet ta 'rilaxx differenti:
wuestkamp/k8s-deployment-example-app:v1
wuestkamp/k8s-deployment-example-app:v2
L-unika differenza bejniethom hija l-fajl JSON lura. Aħna nużaw din l-applikazzjoni biex naraw kemm jista' jkun faċilment liema verżjoni qed nikkomunikaw magħha.
Repożitorju ta' l-infrastruttura
F'dan ir-repożitorju se nużaw GitlabCI għall-iskjerament fil-Kubernetes, .gitlab-ci.yml jidher bħal dan:
Rollout jaħdem l-istess bħal Deployment. Jekk ma nissettjawx strateġija ta' aġġornament (bħal canary hawn) se jġib ruħu bħall-Deployment default rolling-update.
Aħna niddefinixxu żewġ passi fil-yaml għall-iskjerament tal-kanarji:
10% tat-traffiku lejn il-kanarji (stenna l-manwal OK)
50% traffiku lejn il-kanarji (stenna 2 minuti imbagħad kompli għal 100%)
Twettiq ta 'skjerament inizjali
Wara l-iskjerament inizjali, ir-riżorsi tagħna se jidhru bħal dan:
U nġibu tweġiba biss mill-ewwel verżjoni tal-applikazzjoni:
Twettiq ta' Skjerament tal-Kanarji
Pass 1: 10% traffiku
Biex nibdew skjerament tal-kanarji, irridu biss nibdlu l-verżjoni tal-immaġni kif nagħmlu normalment bl-iskjeramenti:
Verament nirrakkomanda dan il-video, juri kif Argo Rollouts u Argo CI jaħdmu flimkien:
Total
Inħobb ħafna l-idea li nuża CRDs li jimmaniġġjaw il-ħolqien ta 'tipi addizzjonali ta' skjerament jew replikasets, direzzjoni mill-ġdid tat-traffiku, eċċ. Il-ħidma magħhom tmur bla xkiel. Sussegwentement nixtieq nittestja l-integrazzjoni ma 'Argo CI.
Madankollu, jidher li ġejja għaqda kbira ta 'Argo CI u Flux CI, għalhekk nista' nistenna sakemm toħroġ ir-rilaxx il-ġdid: Argo Fluss.