Njira yosavuta komanso yotetezeka yosinthira ma canary pogwiritsa ntchito Helm

Njira yosavuta komanso yotetezeka yosinthira ma canary pogwiritsa ntchito Helm

Kutumiza kwa Canary ndi njira yabwino kwambiri yoyesera ma code atsopano pagulu la ogwiritsa ntchito. Zimachepetsa kwambiri kuchuluka kwa magalimoto omwe angakhale ovuta panthawi yotumizira, chifukwa zimangochitika mkati mwa gawo linalake. Cholembachi chimaperekedwa momwe mungakonzekere kutumizidwa kotereku pogwiritsa ntchito Kubernetes ndi automation ya deployment. Tikuganiza kuti mukudziwa china chake chokhudza Helm ndi Kubernetes zothandizira.

Njira yosavuta komanso yotetezeka yosinthira ma canary pogwiritsa ntchito Helm

Kutumiza kosavuta kwa canary ku Kubernetes kumaphatikizapo zinthu ziwiri zofunika: ntchito yokha ndi chida chotumizira. Kutumiza kwa Canary kumagwira ntchito imodzi yomwe imalumikizana ndi zinthu ziwiri zosiyana zomwe zimathandizira kuchuluka kwa magalimoto. Chimodzi mwazinthuzi chidzagwira ntchito ndi "canary" version, ndipo chachiwiri chidzagwira ntchito ndi mtundu wokhazikika. Zikatere, titha kuwongolera kuchuluka kwa mitundu ya canary kuti tichepetse kuchuluka kwa magalimoto omwe akufunika kuti azitumikira. Ngati, mwachitsanzo, mukufuna kugwiritsa ntchito Yaml, ndiye kuti izi zidzawoneka ku 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.

Ndikosavuta kulingalira njirayi pogwiritsa ntchito kubectl, ndi in Kubernetes zolemba Pali ngakhale phunziro lathunthu pankhaniyi. Koma funso lalikulu la positi iyi ndi momwe tidzasinthira izi pogwiritsa ntchito Helm.

Automation ya canary deployment

Choyamba, tifunika mapu a Helm chart, omwe ali ndi zinthu zomwe takambirana pamwambapa. Iyenera kuwoneka motere:

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

Maziko a lingaliro la Helm ndikuwongolera kutulutsa kwamitundu yambiri. Mtundu wokhazikika ndi nthambi yathu yokhazikika ya code ya polojekiti. Koma ndi Helm titha kutumiza kutulutsidwa kwa canary ndi code yathu yoyesera. Chinthu chachikulu ndikusunga kusinthanitsa kwa magalimoto pakati pa mtundu wokhazikika ndi kutulutsidwa kwa canary. Tidzakonza zonsezi pogwiritsa ntchito chosankha chapadera:

selector:
  app.kubernetes.io/name: myapp

Zida zathu za "canary" ndi zokhazikika zotumizira zidzawonetsa chizindikiro ichi pama modules. Ngati zonse zitakonzedwa bwino, ndiye kuti pakutumizidwa kwa canary ya mapu athu a Helm chart tiwona kuti magalimoto adzalunjikitsidwa ku ma module omwe angotumizidwa kumene. Mtundu wokhazikika wa lamuloli udzawoneka motere:

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

Tsopano tiyeni tiwone kutulutsidwa kwathu kwa canary. Kuti tigwiritse ntchito mtundu wa canary, tiyenera kukumbukira zinthu ziwiri. Dzina lomasulidwa liyenera kukhala losiyana kuti tisatulutse zosintha zamtundu waposachedwa. Mtundu ndi tag ziyeneranso kukhala zosiyana kuti titha kuyika ma code ena ndikuzindikira kusiyana ndi ma tag othandizira.

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

Ndizomwezo! Mukayimba ntchitoyo, mutha kuwona kuti njira zosinthira za canary zimangodutsa nthawi imodzi.

Ngati mukuyang'ana zida zoyendetsera ntchito zomwe zikuphatikiza malingaliro ofotokozedwawo, samalani Deliverybot ndi kupitirira Helm automation zida pa GitHub. Ma chart a Helm omwe amagwiritsidwa ntchito kukhazikitsa njira yomwe tafotokozazi ali pa Github, pomwe pano. Mwambiri, ichi chinali chiwongolero cham'mene mungakhazikitsire makina osinthika a canary pochita, okhala ndi malingaliro ndi zitsanzo.

Source: www.habr.com

Kuwonjezera ndemanga