Enkel og sikker mÄde at automatisere kanariefugle-deploys med Helm

Enkel og sikker mÄde at automatisere kanariefugle-deploys med Helm

Kanarideployering er en meget effektiv metode til at teste ny kode pÄ en delmÊngde af brugere. Det reducerer betydeligt den trafikbelastning, som kan forÄrsage problemer under udrulningen, da det kun finder sted inden for en bestemt undergruppe. Denne note handler om, hvordan man organiserer en sÄdan deployment ved hjÊlp af Kubernetes og automatisering af deployment. Det antages, at du allerede ved noget om Helm og Kubernetes-ressourcer..

Enkel og sikker mÄde at automatisere kanariefugle-deploys med Helm

En enkel kanarideployering i Kubernetes involverer to nÞgle ressourcer: selve servicen og udrulningsvÊrktÞjet. Kanarideployeringen fungerer gennem en tjeneste, der interagerer med to forskellige ressourcer, der hÄndterer opdateringstrafikken. En af disse ressourcer vil arbejde med den 'kanariefarvede' version, mens den anden vil arbejde med den stabile version. I denne situation kan vi regulere antallet af kanariefarvede versioner for at reducere den nÞdvendige mÊngde trafik, der skal hÄndteres. Hvis du for eksempel foretrÊkker at bruge Yaml, ser det sÄdan ud i 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 vil rute trafik til begge udrulninger.

En endnu lettere mÄde at forestille sig denne variant er via kubectl, mens i dokumentationen for Kubernetes faktisk findes der en komplet tutorial til dette scenarie. Men det hovedspÞrgsmÄl, som dette indlÊg handler om, er, hvordan vi planlÊgger at automatisere denne proces ved hjÊlp af Helm.

Automatisering af kanarideployering

FÞrst og fremmest har vi brug for et Helm chart, som allerede indeholder de ressourcer, vi har diskuteret ovenfor. Det skal se nogenlunde sÄdan ud:

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

Kernen i Helm-koncepterne er hÄndtering af multi-versioner af releases. Den stabile version er vores primÊre stabile kodegren for projektet. Men ved hjÊlp af Helm kan vi udrulle en kanarirelease med vores eksperimentelle kode. Det vigtigste er at bevare trafikudvekslingen mellem den stabile version og kanarireleasen. Alt dette vil vi styre med en sÊrlig selector:

selector:
  app.kubernetes.io\/name: myapp

Vores bÄde "kanariefugle" og stabile deployments vil angive denne label pÄ modulerne. Hvis alt er konfigureret korrekt, vil trafikken under deployment af den kanariefugle version af vores Helm chart blive dirigeret til de nyoprettede moduler. Den stabile version af denne kommando vil se sÄdan ud:

helm upgrade
  --install myapp 
  --namespace default 
  --set app.name=myapp       # GÄr ind i app.kubernetes.io/name
  --set app.version=v1       # GÄr ind i app.kubernetes.io/version
  --set image.tag=stable 
  --set replicaCount=5

Nu lad os tjekke vores kanariefugle release. For at deployere den kanariefugle version, skal vi huske to ting. Navnet pÄ releasen skal adskille sig, sÄ vi ikke overskriver den nuvÊrende stabile version. Versionen og tagget skal ogsÄ adskille sig, sÄ vi kan deployere anden kode og identificere forskelle baseret pÄ ressource-tags.

helm upgrade
  --install myapp-canary 
  --namespace default 
  --set app.name=myapp       # GÄr ind i app.kubernetes.io/name
  --set app.version=v2       # GÄr ind i app.kubernetes.io/version
  --set image.tag=canary 
  --set replicaCount=1

Og det er egentlig det! Hvis man pinger tjenesten, kan man se, at den kanariefugle opdatering kun dirigerer trafikken noget af tiden.

Hvis du leder efter automatiseringsvÊrktÞjer til deployment, der inkluderer den beskrevne logik, sÄ tjek Deliverybot og pÄ automatiseringsvÊrktÞjer til Helm pÄ GitHub. Helm charts, der anvendes til implementeringen af den beskrevne metode, ligger pÄ GitHub, her. Generelt var dette en teoretisk gennemgang af, hvordan man praktisk implementerer automatisering af kanariefugle deployments med specifikke koncepter og eksempler.

Kilde: habr.com

KĂžb pĂ„lidelig webhosting med DDoS-beskyttelse, VPS VDS-servere đŸ”„ KĂžb pĂ„lidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster