Zbatimi i Kanarit duke përdorur Jenkins-X Istio Flagger
Vendosja e Kanarinave
Shpresojmë ta lexoni pjesa e pare, ku shpjeguam shkurtimisht se çfarë janë vendosjet e Kanarit. Ne treguam gjithashtu se si ta zbatojmë atë duke përdorur burimet standarde të Kubernetes.
Argo Rollouts
Argo Rollouts është një kontrollues vendas i vendosjes së Kubernetes. Ai siguron një CRD (Përkufizimi i Burimeve të Përshtatshme) për Kubernetes. Falë tij, ne mund të përdorim një entitet të ri: Rollout, i cili menaxhon vendosjet blu-jeshile dhe kanarinë me opsione të ndryshme konfigurimi.
Kontrolluesi Argo Rollouts përdoret nga një burim i personalizuar Rollout, Lejon strategji shtesë të vendosjes si blu-jeshile dhe kanarinë për Kubernetes. Burim Rollout ofron funksionalitet ekuivalent Deployment, vetëm me strategji shtesë të vendosjes.
burime Deployments ka dy strategji për vendosjen: RollingUpdate и Recreate. Edhe pse këto strategji janë të përshtatshme për shumicën e rasteve, për vendosje në serverë në një shkallë shumë të madhe, përdoren strategji shtesë, të tilla si blu-jeshile ose kanarinë, të cilat nuk janë të disponueshme në kontrolluesin Deployment. Për të përdorur këto strategji në Kubernetes, përdoruesit duhej të shkruanin skripta në krye të vendosjeve të tyre. Kontrolluesi Argo Rollouts i ekspozon këto strategji si parametra të thjeshtë, deklarativë dhe të konfigurueshëm. https://argoproj.github.io/argo-rollouts
Ekziston gjithashtu Argo CI i cili ofron një ndërfaqe ueb miqësore për përdorim me Rollouts, ne do t'i hedhim një vështrim në artikullin vijues.
Në rrepën tonë të infrastrukturës (shih më poshtë) ne kemi shtuar tashmë install.yaml si i/k8s/argo-rollouts/install.yaml. Në këtë mënyrë GitlabCI do ta instalojë atë në grup.
Ky është një API shumë i thjeshtë Python+Flask që kthen një përgjigje si JSON. Ne do të ndërtojmë paketën duke përdorur GitlabCI dhe do ta shtyjmë rezultatin në Regjistrin Gitlab. Në regjistër kemi dy versione të ndryshme të lëshimit:
wuestkamp/k8s-deployment-example-app:v1
wuestkamp/k8s-deployment-example-app:v2
Dallimi i vetëm midis tyre është skedari JSON i kthyer. Ne e përdorim këtë aplikacion për të vizualizuar sa më lehtë se me cilin version po komunikojmë.
Depoja e infrastrukturës
Në këtë depo ne do të përdorim GitlabCI për vendosjen në Kubernetes, .gitlab-ci.yml duket kështu:
Rollout funksionon njësoj si Deployment. Nëse nuk caktojmë një strategji përditësimi (si kanarinë këtu) ajo do të sillet si vendosja e parazgjedhur e përditësimit të parazgjedhur.
Ne përcaktojmë dy hapa në yaml për vendosjen e kanarinës:
10% e trafikut në kanarinë (prit manualisht OK)
50% trafik në kanarinë (prit 2 minuta pastaj vazhdo në 100%)
Kryerja e vendosjes fillestare
Pas vendosjes fillestare, burimet tona do të duken kështu:
Dhe marrim një përgjigje vetëm nga versioni i parë i aplikacionit:
Kryerja e vendosjes së Kanarit
Hapi 1: 10% trafik
Për të filluar vendosjen e kanarinave, thjesht duhet të ndryshojmë versionin e imazhit siç bëjmë zakonisht me vendosjet:
Unë me të vërtetë rekomandoj këtë video, ajo tregon se si Argo Rollouts dhe Argo CI punojnë së bashku:
Total
Më pëlqen shumë ideja e përdorimit të CRD-ve që menaxhojnë krijimin e llojeve shtesë të vendosjeve ose replikasetave, ridrejtimin e trafikut, etj. Puna me ta shkon pa probleme. Më pas do të doja të testoja integrimin me Argo CI.
Sidoqoftë, duket se do të ketë një bashkim të madh të Argo CI dhe Flux CI, kështu që mund të pres derisa të dalë publikimi i ri: Argo Flux.
A keni pasur ndonjë përvojë me Argo Rollouts ose Argo CI?
Lexoni gjithashtu artikuj të tjerë në blogun tonë: