Ett enkelt och sÀkert sÀtt att automatisera kanardeploys med Helm

Ett enkelt och sÀkert sÀtt att automatisera kanardeploys med Helm

En kanariedeplyering Àr en mycket effektiv metod för att testa ny kod pÄ en delmÀngd av anvÀndarna. Den minskar betydligt den trafikbelastning som kan orsaka problem under distributionen, eftersom den endast sker inom en specifik undergrupp. Denna anteckning handlar om hur man organiserar en sÄdan deployment med hjÀlp av Kubernetes och automatisering. Det förutsÀtts att du har en viss kunskap om Helm och Kubernetes-resurser..

Ett enkelt och sÀkert sÀtt att automatisera kanardeploys med Helm

En enkel kanariedeplyering i Kubernetes omfattar tvÄ nyckelresurser: sjÀlva tjÀnsten och verktyget för distribution. Kanariedeplyeringen fungerar via en tjÀnst som interagerar med tvÄ olika resurser som hanterar trafikuppdateringen. En av dessa resurser kommer att hantera den 'kanariegula' versionen, medan den andra kommer att hantera den stabila versionen. I denna situation kan vi reglera mÀngden kanariegula versioner för att minska mÀngden trafik som behöver hanteras. Om du till exempel föredrar att anvÀnda Yaml, kommer det att se ut i Kubernetes sÄ hÀr:

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 # Selektorn kommer att dirigera trafik till bÄda distributionerna.

Det Àr Ànnu enklare att förestÀlla sig ett sÄdant alternativ med kubectl, och i dokumentationen för Kubernetes finns faktiskt en fullstÀndig handledning för detta scenario. Men den centrala frÄgan i detta inlÀgg handlar om hur vi planerar att automatisera denna process med hjÀlp av Helm.

Automatisering av kanariedeplyering

Först och frÀmst behöver vi ett Helm-diagram som redan inkluderar de resurser vi diskuterade ovan. Det ska se ut ungefÀr sÄ hÀr:

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

Grunden för Helm-konceptet Àr hantering av flera versioner av distributioner. Stabil version Àr vÄr huvudstabila gren av projektets kod. Men med hjÀlp av Helm kan vi distribuera en kanariefördelning med vÄr experimentella kod. Det viktigaste Àr att bevara trafikflödet mellan den stabila versionen och kanariefördelningen. Vi kommer att hantera allt detta med en speciell selektor:

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

VÄra bÄde "kanariefÄgel"- och stabila distribueringsresurser kommer att ange denna tagg pÄ modulerna. Om allt konfigureras korrekt, kommer vi under distributionen av vÄr kanarifÄgelversion av Helm-diagrammet att se att trafiken dirigeras till de nyligen distribuerade modulerna. Den stabila versionen av detta kommando kommer att se ut sÄ hÀr:

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

Nu ska vi kontrollera vÄr kanarifÄgelrelease. För att distribuera kanarifÄgelversionen mÄste vi tÀnka pÄ tvÄ saker. Namnet pÄ release mÄste skilja sig sÄ att vi inte uppdaterar den nuvarande stabila versionen. Version och tagg mÄste ocksÄ vara olika sÄ att vi kan distribuera annan kod och avgöra skillnaderna genom resursens taggar.

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

SÄ, det Àr allt! Om du pingar tjÀnsten kan du se att kanarifÄgeluppdateringen dirigerar trafiken endast en del av tiden.

Om du letar efter automatiseringsverktyg för distribueringsprocessen som inkluderar den beskrivna logiken, ta en titt pÄ Deliverybot och pÄ automatiseringsverktyg för Helm pÄ GitHub. Helm-diagrammen som anvÀnds för att implementera den ovan beskrivna metoden finns pÄ Github, hÀr. Generellt var detta en teoretisk översikt över hur man implementerar automatisering av kanarifÄgelversioner i praktiken, med specifika koncept och exempel.

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster