Gbigbe Canary jẹ ọna ti o munadoko pupọ lati ṣe idanwo koodu tuntun lori ipin ti awọn olumulo. O ṣe pataki dinku fifuye ijabọ ti o le jẹ iṣoro lakoko ilana imuṣiṣẹ, bi o ṣe waye nikan laarin ipin kan pato. Akọsilẹ yii jẹ iyasọtọ si bii o ṣe le ṣeto iru imuṣiṣẹ ni lilo Kubernetes ati adaṣe imuṣiṣẹ. A ro pe o mọ nkankan nipa Helm ati Kubernetes oro.
Ifilọlẹ canary ti o rọrun si Kubernetes pẹlu awọn orisun bọtini meji: iṣẹ funrararẹ ati ohun elo imuṣiṣẹ. Imuṣiṣẹ Canary n ṣiṣẹ nipasẹ iṣẹ kan ti o ṣe ajọṣepọ pẹlu awọn orisun oriṣiriṣi meji ti n ṣiṣẹ ijabọ imudojuiwọn. Ọkan ninu awọn orisun wọnyi yoo ṣiṣẹ pẹlu ẹya “canary”, ati ekeji yoo ṣiṣẹ pẹlu ẹya iduroṣinṣin. Ni ipo yii, a le ṣe ilana nọmba awọn ẹya canary lati le dinku iye ijabọ ti o nilo lati ṣiṣẹ. Ti, fun apẹẹrẹ, o fẹ lati lo Yaml, lẹhinna yoo dabi eyi ni 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.
O rọrun paapaa lati fojuinu aṣayan yii nipa lilo kubectl, ati ninu
Adaṣiṣẹ ti Canary imuṣiṣẹ
Ni akọkọ, a nilo maapu chart Helm kan, eyiti o pẹlu awọn orisun ti a sọrọ loke. O yẹ ki o dabi iru eyi:
~/charts/app
├── Chart.yaml
├── README.md
├── templates
│ ├── NOTES.txt
│ ├── _helpers.tpl
│ ├── deployment.yaml
│ └── service.yaml
└── values.yaml
Ipilẹ ti imọran Helm jẹ iṣakoso ti awọn idasilẹ awọn ẹya pupọ. Ẹya iduroṣinṣin jẹ ẹka iduroṣinṣin akọkọ wa ti koodu ise agbese. Ṣugbọn pẹlu Helm a le ran itusilẹ canary kan pẹlu koodu esiperimenta wa. Ohun akọkọ ni lati ṣetọju paṣipaarọ ijabọ laarin ẹya iduroṣinṣin ati itusilẹ canary. A yoo ṣakoso gbogbo eyi nipa lilo yiyan pataki kan:
selector:
app.kubernetes.io/name: myapp
Wa “canary” ati awọn orisun imuṣiṣẹ iduroṣinṣin yoo tọka aami yii lori awọn modulu. Ti ohun gbogbo ba tunto ni deede, lẹhinna lakoko imuṣiṣẹ ti ẹya canary ti maapu chart Helm wa a yoo rii pe yoo darí ijabọ si awọn modulu tuntun ti a fi ranṣẹ. Ẹya iduroṣinṣin ti aṣẹ yii yoo dabi eyi:
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
Bayi jẹ ki a ṣayẹwo itusilẹ canary wa. Lati ran awọn Canary version, a nilo lati ranti ohun meji. Orukọ itusilẹ gbọdọ yatọ ki a maṣe ṣe imudojuiwọn imudojuiwọn si ẹya iduroṣinṣin lọwọlọwọ. Ẹya ati tag gbọdọ tun yatọ ki a le ran koodu miiran ṣiṣẹ ati ṣe idanimọ awọn iyatọ nipasẹ awọn ami awọn orisun.
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
Gbogbo ẹ niyẹn! Ti o ba ping iṣẹ naa, o le rii pe imudojuiwọn awọn ipa ọna canary nikan ni apakan ti akoko naa.
Ti o ba n wa awọn irinṣẹ adaṣe imuṣiṣẹ ti o pẹlu ọgbọn ti a ṣalaye, lẹhinna san ifojusi si
orisun: www.habr.com