Ọna ti o rọrun ati aabo lati ṣe adaṣe awọn imuṣiṣẹ canary pẹlu Helm

Ọna ti o rọrun ati aabo lati ṣe adaṣe awọn imuṣiṣẹ canary pẹlu Helm

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.

Ọna ti o rọrun ati aabo lati ṣe adaṣe awọn imuṣiṣẹ canary pẹlu Helm

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 Kubernetes iwe aṣẹ Ikẹkọ ni kikun paapaa wa lori oju iṣẹlẹ yii. Ṣugbọn ibeere akọkọ ti ifiweranṣẹ yii ni bii a ṣe le ṣe adaṣe ilana yii ni lilo Helm.

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 Deliverybot ati lori Awọn irinṣẹ adaṣe Helm lori GitHub. Awọn shatti Helm ti a lo lati ṣe ilana ọna ti a ṣalaye loke wa lori Github, nibi gangan. Ni gbogbogbo, eyi jẹ awotẹlẹ imọ-jinlẹ ti bii o ṣe le ṣe adaṣe adaṣe ti imuṣiṣẹ ti awọn ẹya canary ni iṣe, pẹlu awọn imọran pato ati awọn apẹẹrẹ.

orisun: www.habr.com

Fi ọrọìwòye kun