Canary deployment o se auala sili ona aoga e suʻe ai tulafono fou i luga o se vaega o tagata faʻaoga. E matua faʻaitiitia ai le uta o taavale e mafai ona faʻafitauli i le taimi o le faʻapipiʻiina, aua e naʻo totonu o se vaega faʻapitoa e tupu. O lenei faʻamatalaga e tuʻuina atu i le faʻatulagaina o sea faʻaogaina e faʻaaoga ai le Kubernetes ma le faʻaogaina o masini. Matou te manatu e te iloa se mea e uiga i punaoa Helm ma Kubernetes.
O se fa'ata'ita'iga faigofie canary i Kubernetes e aofia ai punaoa autu e lua: o le 'au'aunaga lava ia ma le meafaigaluega fa'apipi'i. Canary deployment e galue e ala i se auaunaga e tasi e fegalegaleai ma punaoa eseese e lua o loʻo faʻafou ai fefaʻatauaiga. O se tasi o nei punaoa o le a galue ma le "canary" version, ma o le lona lua o le a galue ma le faʻamaumauga mautu. I lenei tulaga, e mafai ona tatou faʻatonutonuina le numera o lomiga canary ina ia faʻaitiitia ai le aofaʻi o feoaiga e manaʻomia e tautua ai. Afai, mo se faʻataʻitaʻiga, e te manaʻo e faʻaaoga Yaml, ona foliga mai lea ile 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.
E sili atu ona faigofie le mafaufauina o lenei filifiliga e faʻaaoga ai le kubectl, ma totonu
Otometi o le faʻapipiʻiina o canary
Muamua lava, matou te manaʻomia se faʻafanua Helm siata, lea ua uma ona aofia ai punaoa na matou talanoaina i luga. E tatau ona foliga e pei o lenei:
~/charts/app
├── Chart.yaml
├── README.md
├── templates
│ ├── NOTES.txt
│ ├── _helpers.tpl
│ ├── deployment.yaml
│ └── service.yaml
└── values.yaml
O le fa'avae o le manatu Helm o le puleaina lea o fa'asalalauga fa'atele. O le lomiga mautu o le matou lala mautu autu o le code poloketi. Ae fa'atasi ai ma Helm e mafai ona matou fa'apipi'iina se fa'amalologa canary ma la matou fa'ata'ita'iga fa'ailoga. O le mea autu o le tausia lea o fefaʻatauaiga o fefaʻatauaiga i le va o le faʻamaumauga mautu ma le faʻamalolo canary. O le a matou faʻatautaia nei mea uma e faʻaaoga ai se filifiliga faʻapitoa:
selector:
app.kubernetes.io/name: myapp
O a matou "canary" ma punaoa faʻapipiʻi mautu o le a faʻaalia ai lenei igoa i luga o modules. Afai e sa'o lelei mea uma, i le taimi o le fa'apipi'iina o le canary version o la tatou fa'afanua Helm siata o le a tatou va'ai ai o le a fa'asino atu le ta'avale i modules fou fa'apipi'i. Ole fa'atonuga mautu o lenei poloaiga o le a pei o lenei:
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
Se'i o tatou siaki la tatou sa'olotoga o canary. Ina ia faʻapipiʻi le canary version, e manaʻomia ona tatou manatua mea e lua. E tatau ona ese le igoa fa'amatu'u ina ia aua ne'i matou fa'asalalauina se fa'afouga i le fa'amaumauga mautu o lo'o iai nei. E tatau fo'i ona ese le fa'aliliuga ma le pine ina ia mafai ai ona fa'apipi'i isi fa'ailoga ma fa'ailoa eseesega e ala i pine o puna'oa.
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
Pau lava lena! Afai e te ping le auaunaga, e mafai ona e vaʻaia o le faʻafouina o le canary o loʻo faʻauluina feoaiga na o se vaega o le taimi.
Afai o loʻo e suʻeina ni meafaigaluega faʻapipiʻi faʻapipiʻi e aofia ai le faʻamatalaga faʻamatalaga, ona faʻalogo lea i
puna: www.habr.com