Једноставан и безбедан начин за аутоматизацију примене канаринца помоћу Хелм-а

Једноставан и безбедан начин за аутоматизацију примене канаринца помоћу Хелм-а

Цанари имплементација је веома ефикасан начин за тестирање новог кода на подскупу корисника. То значајно смањује оптерећење саобраћаја које може бити проблематично током процеса имплементације, јер се јавља само унутар одређеног подскупа. Ова напомена је посвећена томе како да организујете такву примену користећи Кубернетес и аутоматизацију примене. Претпостављамо да знате нешто о Хелм и Кубернетес ресурсима.

Једноставан и безбедан начин за аутоматизацију примене канаринца помоћу Хелм-а

Једноставна канаринска примена у Кубернетес укључује два кључна ресурса: саму услугу и алатку за примену. Цанари имплементација функционише кроз једну услугу која је у интеракцији са два различита ресурса који опслужују саобраћај ажурирања. Један од ових ресурса ће радити са „канаринском“ верзијом, а други ће радити са стабилном верзијом. У овој ситуацији можемо регулисати број верзија канаринца како бисмо смањили количину саобраћаја која је потребна за опслуживање. Ако, на пример, више волите да користите Иамл, онда ће то изгледати овако у Кубернетесу:

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.

Још је лакше замислити ову опцију користећи кубецтл и ин Кубернетес документација Постоји чак и комплетан водич о овом сценарију. Али главно питање овог поста је како ћемо аутоматизовати овај процес користећи Хелм.

Аутоматизација постављања канаринца

Пре свега, потребна нам је мапа Хелмовог графикона, која већ укључује ресурсе о којима смо горе говорили. Требало би да изгледа отприлике овако:

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

Основа Хелм концепта је управљање издањима у више верзија. Стабилна верзија је наша главна стабилна грана кода пројекта. Али са Хелмом можемо да применимо канаринац са нашим експерименталним кодом. Главна ствар је да се одржи размена саобраћаја између стабилне верзије и канаринца. Све ово ћемо управљати помоћу посебног селектора:

selector:
  app.kubernetes.io/name: myapp

Наши „канарински“ и стабилни ресурси за примену ће означити ову ознаку на модулима. Ако је све исправно конфигурисано, онда ћемо током постављања канарске верзије наше Хелмове мапе графикона видети да ће саобраћај бити усмерен на новопостављене модуле. Стабилна верзија ове команде ће изгледати овако:

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

Сада хајде да проверимо наше издање канаринца. Да бисмо применили верзију канаринца, морамо да запамтимо две ствари. Име издања мора бити другачије да не бисмо објавили ажурирање на тренутну стабилну верзију. Верзија и ознака такође морају да се разликују како бисмо могли да применимо други код и идентификујемо разлике према ознакама ресурса.

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

То је све! Ако пингујете услугу, можете видети да ажурирање канаринца усмерава саобраћај само део времена.

Ако тражите алате за аутоматизацију примене који укључују описану логику, обратите пажњу на Деливерибот и Алати за аутоматизацију Хелм-а на ГитХуб-у. Хелмове карте које се користе за имплементацију горе описане методе налазе се на Гитхубу, овде. Уопштено говорећи, ово је био теоријски преглед како имплементирати аутоматизацију имплементације канарских верзија у пракси, са конкретним концептима и примерима.

Извор: ввв.хабр.цом

Додај коментар