Usa ka yano ug luwas nga paagi aron ma-automate ang pag-deploy sa mga canary gamit ang Helm

Usa ka yano ug luwas nga paagi aron ma-automate ang pag-deploy sa mga canary gamit ang Helm

Ang pag-deploy sa Canary usa ka epektibo kaayo nga paagi sa pagsulay sa bag-ong code sa usa ka subset sa mga tiggamit. Makapamenos kini pag-ayo sa load sa trapiko nga mahimong problema sa panahon sa proseso sa pag-deploy, tungod kay kini mahitabo lamang sulod sa usa ka piho nga subset. Kini nga nota gipahinungod sa kung unsaon pag-organisar ang ingon nga pag-deploy gamit ang Kubernetes ug deployment automation. Nagtuo kami nga nahibal-an nimo ang bahin sa mga kapanguhaan sa Helm ug Kubernetes.

Usa ka yano ug luwas nga paagi aron ma-automate ang pag-deploy sa mga canary gamit ang Helm

Ang usa ka yano nga canary deployment sa Kubernetes naglakip sa duha ka importanteng kapanguhaan: ang serbisyo mismo ug ang deployment tool. Ang pag-deploy sa Canary naglihok pinaagi sa usa ka serbisyo nga nakig-uban sa duha ka lainlaing mga kapanguhaan nga nagserbisyo sa pag-update sa trapiko. Ang usa niini nga mga kapanguhaan magamit sa "canary" nga bersyon, ug ang ikaduha magamit sa stable nga bersyon. Niini nga sitwasyon, mahimo natong i-regulate ang gidaghanon sa mga bersyon sa canary aron makunhuran ang gidaghanon sa trapiko nga gikinahanglan sa pagserbisyo. Kung, pananglitan, gusto nimo nga gamiton ang Yaml, nan kini tan-awon sa 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.

Mas sayon ​​​​nga mahanduraw kini nga kapilian gamit ang kubectl, ug sa Dokumentasyon sa Kubernetes Adunay bisan usa ka bug-os nga panudlo sa kini nga senaryo. Apan ang panguna nga pangutana sa kini nga post mao kung giunsa naton pag-automate kini nga proseso gamit ang Helm.

Automation sa pag-deploy sa canary

Una sa tanan, kinahanglan nato ang Helm chart nga mapa, nga naglakip na sa mga kahinguhaan nga atong gihisgutan sa ibabaw. Kini kinahanglan nga tan-awon sama niini:

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

Ang sukaranan sa konsepto sa Helm mao ang pagdumala sa mga multi-bersyon nga pagpagawas. Ang stable nga bersyon mao ang among nag-unang stable nga sanga sa code sa proyekto. Apan uban sa Helm maka-deploy kami og canary release gamit ang among experimental code. Ang nag-unang butang mao ang pagpadayon sa pagbinayloay sa trapiko tali sa stable nga bersyon ug sa pagpagawas sa kanaryo. Among dumalahon kining tanan gamit ang usa ka espesyal nga tigpili:

selector:
  app.kubernetes.io/name: myapp

Ang among "canary" ug lig-on nga mga kapanguhaan sa pag-deploy magpakita niini nga label sa mga module. Kung ang tanan na-configure sa husto, unya sa panahon sa pag-deploy sa canary nga bersyon sa among Helm chart nga mapa atong makita nga ang trapiko idirekta sa bag-ong gi-deploy nga mga module. Ang stable nga bersyon niini nga sugo mahimong tan-awon sama niini:

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

Karon atong tan-awon ang atong canary release. Aron ma-deploy ang bersyon sa canary, kinahanglan natong hinumdoman ang duha ka butang. Kinahanglan nga lahi ang ngalan sa pagpagawas aron dili kami magpagawas usa ka update sa karon nga stable nga bersyon. Ang bersyon ug tag kinahanglan usab nga lahi aron kita maka-deploy sa ubang code ug makaila sa mga kalainan pinaagi sa mga tag sa kapanguhaan.

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

Mao ra na! Kung imong i-ping ang serbisyo, imong makita nga ang pag-update sa canary nag-ruta sa trapiko bahin lamang sa oras.

Kung nangita ka alang sa mga himan sa pag-deploy sa automation nga naglakip sa gihulagway nga lohika, unya hatagi'g pagtagad Deliverybot ug padayon Helm automation tools sa GitHub. Ang Helm chart nga gigamit sa pagpatuman sa pamaagi nga gihulagway sa ibabaw anaa sa Github, dinhi mismo. Sa kinatibuk-an, kini usa ka teoretikal nga pagtan-aw kung giunsa ang pagpatuman sa automation sa pag-deploy sa mga bersyon sa canary sa praktis, nga adunay piho nga mga konsepto ug mga pananglitan.

Source: www.habr.com

Idugang sa usa ka comment