En einfachen a séchere Wee fir Kanaresch Deployementer mat Helm ze automatiséieren

En einfachen a séchere Wee fir Kanaresch Deployementer mat Helm ze automatiséieren

Canary Deployment ass e ganz effiziente Wee fir neie Code op engem Ënnerdeel vu Benotzer ze testen. Et reduzéiert immens d'Verkéierslaascht, déi problematesch ka sinn während dem Deploymentprozess, well et nëmmen an enger bestëmmter Ënnergrupp geschitt. Dës Notiz ass iwwer wéi een esou eng Deployment mat Kubernetes an Deployment Automation organiséiert. Dëst gëtt ugeholl datt Dir e puer Wëssen iwwer Helm a Kubernetes Ressourcen hutt..

En einfachen a séchere Wee fir Kanaresch Deployementer mat Helm ze automatiséieren

Eng einfach Kanaresch Deployment op Kubernetes enthält zwee Schlësselressourcen: de Service selwer an den Deployment Tool. Kanaresch Détachement Wierker duerch eng eenzeg Service datt mat zwee verschiddene Ressourcen kommunizéieren update Verkéier déngen. Ee vun dëse Ressourcen wäert mat der "Kanaresch" Versioun schaffen, an déi zweet - mat der stabiler. An dëser Situatioun kënne mir d'Zuel vun de Kanaresch Versiounen upassen fir de Betrag vum Traffic fir den Ënnerhalt ze reduzéieren. Wann, zum Beispill, Dir léiwer Yaml ze benotzen, da géif et esou ausgesinn a Kubernetes:

kind: Deployment
metadata:
  name: app-canary
  labels:
    app: app
spec:
  replicas: 1
  ...
    image: myapp:canary
---
kind: Deployment
metadata:
  name: app
  labels:
    app: app
spec:
  replicas: 5
  ...
    image: myapp:stable
---
kind: Service
selector:
  app: app # Selector will route traffic to both deployments.

Et ass nach méi einfach esou eng Optioun op kubectl virzestellen, an an Dokumentatioun fir Kubernetes et gëtt souguer e komplette Tutorial iwwer dëst Szenario. Awer d'Haaptfro vun dësem Post ass wéi mir dëse Prozess mat Helm automatiséieren.

Canary Deployment Automation

Als éischt brauche mir eng Helm Chart Kaart, déi schonn d'Ressourcen enthält déi uewe diskutéiert hunn. Et soll sou eppes ausgesinn:

~/charts/app
├── Chart.yaml
├── README.md
├── templates
│   ├── NOTES.txt
│   ├── _helpers.tpl
│   ├── deployment.yaml
│   └── service.yaml
└── values.yaml

D'Basis vum Helm Konzept ass d'Gestioun vu Multiversion Verëffentlechungen. Déi stabil Versioun ass eis Haaptstabil Code Branche fir de Projet. Awer mat der Hëllef vum Helm kënne mir d'Kanaresch Verëffentlechung mat eisem experimentellen Code ofsetzen. Den Haapt Saach ass de Verkéiersaustausch tëscht der stabiler Versioun an der Kanaresch Verëffentlechung ze halen. Mir verwalten dat alles mat engem spezielle Selektor:

selector:
  app.kubernetes.io/name: myapp

Eis souwuel "Kanaresch" wéi och stabil Deployment Ressourcen wäerten dëse Label op de Moduler uginn. Wann alles richteg konfiguréiert ass, da wäerte mir während dem Deployment vun der Kanaresch Versioun vun eiser Helm Chart Kaart gesinn datt de Verkéier op déi frësch ofgebaute Moduler geleet gëtt. Déi stabil Versioun vun dësem Kommando géif esou ausgesinn:

helm upgrade
  --install myapp 
  --namespace default 
  --set app.name=myapp       # Goes into app.kubernetes.io/name
  --set app.version=v1       # Goes into app.kubernetes.io/version
  --set image.tag=stable 
  --set replicaCount=5

Loosst eis elo eis Kanaresch Verëffentlechung kucken. Fir d'Kanaresch Versioun z'installéieren, musse mir zwou Saachen erënneren. Den Numm vun der Verëffentlechung muss anescht sinn fir datt mir déi aktuell stabil Versioun net aktualiséieren. D'Versioun an d'Tag mussen och anescht sinn, sou datt mir anere Code kënnen ofsetzen an Differenzen an Ressourcentags identifizéieren.

helm upgrade
  --install myapp-canary 
  --namespace default 
  --set app.name=myapp       # Goes into app.kubernetes.io/name
  --set app.version=v2       # Goes into app.kubernetes.io/version
  --set image.tag=canary 
  --set replicaCount=1

Dat ass eigentlech alles! Wann Dir de Service pingt, kënnt Dir gesinn datt de Kanaresch Update nëmmen den Traffic en Deel vun der Zäit leet.

Wann Dir no Deployment Automation Tools sicht déi déi beschriwwe Logik enthalen, da kuckt op Liwwerungsbot an un Helm Automatisatiounsinstrumenter op GitHub. D'Helm Charts benotzt fir d'Method hei uewen beschriwwen ëmzesetzen sinn op Github, hei riets. Am Allgemengen war et eng theoretesch Iwwersiicht iwwer wéi d'Deployment Automation vun Kanaresch Versiounen an der Praxis ëmzesetzen, mat spezifesche Konzepter a Beispiller.

Source: will.com

Setzt e Commentaire