Ukuthunyelwa kwe-Canary kuyindlela ephumelela kakhulu yokuhlola ikhodi entsha kusethi engaphansi yabasebenzisi. Yehlisa kakhulu umthwalo wethrafikhi ongase ube yinkinga phakathi nenqubo yokuthunyelwa, njengoba kwenzeka kuphela ngaphakathi kwesethi ethile encane. Leli nothi linikezelwe ekuhleleni ukuthunyelwa okunjalo kusetshenziswa i-Kubernetes kanye ne-deployment automation. Sicabanga ukuthi wazi okuthile ngezinsiza ze-Helm ne-Kubernetes.
Ukuthunyelwa okulula kwe-canary ku-Kubernetes kufaka phakathi izinsiza ezimbili ezibalulekile: isevisi ngokwayo kanye nethuluzi lokuthunyelwa. Ukuthunyelwa kwe-Canary kusebenza ngesevisi eyodwa esebenzisana nezinsiza ezimbili ezihlukene ezinikezela ngethrafikhi yokubuyekeza. Enye yalezi zinsiza izosebenza nenguqulo "ye-canary", kanti eyesibili izosebenza nenguqulo ezinzile. Kulesi simo, singakwazi ukulawula inani lezinguqulo ze-canary ukuze sinciphise inani lethrafikhi edingekayo ukuze kusetshenziswe. Uma, ngokwesibonelo, ukhetha ukusebenzisa i-Yaml, izobukeka kanje 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.
Kulula kakhulu ukucabanga le nketho usebenzisa i-kubectl, kanye nokungena
I-automation yokuthunyelwa kwe-canary
Okokuqala, sidinga imephu yeshadi le-Helm, elihlanganisa kakade izinsiza esikhulume ngazo ngenhla. Kufanele ibukeke kanje:
~/charts/app
├── Chart.yaml
├── README.md
├── templates
│ ├── NOTES.txt
│ ├── _helpers.tpl
│ ├── deployment.yaml
│ └── service.yaml
└── values.yaml
Isisekelo somqondo we-Helm ukuphathwa kokukhishwa kwezinguqulo eziningi. Inguqulo ezinzile igatsha lethu elizinzile lekhodi yephrojekthi. Kodwa nge-Helm singasebenzisa ukukhishwa kwe-canary ngekhodi yethu yokuhlola. Into eyinhloko ukugcina ukushintshaniswa kwethrafikhi phakathi kwenguqulo ezinzile nokukhululwa kwe-canary. Sizophatha konke lokhu sisebenzisa isikhethi esikhethekile:
selector:
app.kubernetes.io/name: myapp
Izinsiza zethu "ze-canary" nezinzile zizobonisa le lebula kumamojula. Uma yonke into ilungiswe kahle, lapho-ke kusetshenziswa inguqulo ye-canary yemephu yethu yeshadi le-Helm sizobona ukuthi ithrafikhi izoqondiswa kumamojula asanda kufakwa. Inguqulo ezinzile yalo myalo izobukeka kanje:
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
Manje ake sihlole ukukhululwa kwethu kwe-canary. Ukuze sisebenzise inguqulo ye-canary, sidinga ukukhumbula izinto ezimbili. Igama lokukhishwa kufanele lihluke ukuze singakhiphi isibuyekezo kunguqulo ezinzile yamanje. Inguqulo nomaka kufanele futhi kuhluke ukuze sikwazi ukusebenzisa enye ikhodi futhi sihlonze umehluko ngomaka bensiza.
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
Yilokho kuphela! Uma uphina isevisi, ungabona ukuthi ithrafikhi yemizila ye-canary ingxenye yesikhathi kuphela.
Uma ufuna amathuluzi e-automation okuthunyelwa afaka phakathi i-logic echazwe, qaphela
Source: www.habr.com