Mir hoffen Dir liest éischten Deel, wou mir kuerz erkläert hunn wat Canary Deployments sinn. Mir hunn och gewisen wéi een et mat Standard Kubernetes Ressourcen ëmsetzt.
Argo Rollouts
Argo Rollouts ass e Kubernetes native Deployment Controller. Et bitt eng CRD (Custom Resource Definition) fir Kubernetes. Dank et kënne mir eng nei Entitéit benotzen: Rollout, déi blo-gréng a kanaresch Deployementer mat verschiddene Konfiguratiounsoptiounen geréiert.
Argo Rollouts Controller benotzt vun enger personaliséierter Ressource Rollout, Erlaabt zousätzlech Deploymentstrategien wéi blo-gréng a Kanaresch fir Kubernetes. Ressource Rollout stellt Funktionalitéit gläichwäerteg Deployment, nëmme mat zousätzlech Deploymentstrategien.
Ressource Deployments huet zwou Strategien fir Deployment: RollingUpdate и Recreate. Obwuel dës Strategien fir déi meescht Fäll gëeegent sinn, fir Deployment op Serveren op enger ganz grousser Skala, ginn zousätzlech Strategien benotzt, wéi blo-gréng oder Kanaresch, déi net am Deployment Controller verfügbar sinn. Fir dës Strategien a Kubernetes ze benotzen, mussen d'Benotzer Skripte uewen op hiren Deployments schreiwen. Den Argo Rollouts Controller weist dës Strategien als einfach, deklarativ, konfiguréierbar Parameteren aus. https://argoproj.github.io/argo-rollouts
Et gëtt och Argo CI, deen e prakteschen Webinterface ubitt fir mat Rollouts ze benotzen, mir kucken dat am nächsten Artikel.
An eiser Infrastruktur turnip (kuckt hei ënnen) hu mir schonn install.yaml als i/k8s/argo-rollouts/install.yaml bäigefüügt. Dëse Wee wäert GitlabCI et an de Cluster installéieren.
Dëst ass eng ganz einfach Python + Flask API déi eng Äntwert als JSON zréckginn. Mir bauen de Package mat GitlabCI an dréckt d'Resultat op de Gitlab Registry. Am Registry hu mir zwou verschidde Verëffentlechungsversioune:
wuestkamp/k8s-deployment-example-app:v1
wuestkamp/k8s-deployment-example-app:v2
Deen eenzegen Ënnerscheed tëscht hinnen ass d'JSON Datei zréck. Mir benotzen dës Applikatioun fir sou einfach wéi méiglech ze visualiséieren mat wéi enger Versioun mir kommunizéieren.
Infrastruktur Repository
An dësem Repository benotze mir GitlabCI fir d'Deployment op Kubernetes, .gitlab-ci.yml gesäit esou aus:
Rollout funktionnéiert d'selwecht wéi Deployment. Wa mir keng Updatestrategie setzen (wéi Kanaresch hei) wäert se sech behuelen wéi de Standard Rolling Update Deployment.
Mir definéieren zwee Schrëtt am Yaml fir Kanaresch Deployment:
10% vum Traffic op Kanaren (waart op manuell OK)
50% Traffic op Kanaresch (waart 2 Minutten a fuert weider op 100%)
Ausféieren initial Deployment
No der éischter Deployment wäerten eis Ressourcen esou ausgesinn:
A mir kréien eng Äntwert nëmmen aus der éischter Versioun vun der Applikatioun:
Kanaresch Deployment ausféieren
Schrëtt 1: 10% Verkéier
Fir e Kanaresch Deployment unzefänken, brauche mir just d'Bildversioun z'änneren wéi mir normalerweis mat Deployementer maachen:
Ech recommandéieren dëse Video wierklech, et weist wéi Argo Rollouts an Argo CI zesumme schaffen:
D 'Resultat
Ech hu wierklech gär d'Iddi fir CRDs ze benotzen déi d'Schafung vun zousätzlech Aarte vun Deployementer oder Replikasets verwalten, de Verkéier viruleeden, asw. Mat hinnen ze schaffen geet glat. Als nächst wëll ech d'Integratioun mam Argo CI testen.
Wéi och ëmmer, et schéngt eng grouss Fusioun vun Argo CI a Flux CI ze kommen, also kann ech waarden bis déi nei Verëffentlechung erauskënnt: Argo Flux.
Hutt Dir Erfahrung mat Argo Rollouts oder Argo CI?