Helm ilə kanareyka yerləşdirmələrini avtomatlaşdırmağın sadə və təhlükəsiz yolu

Helm ilə kanareyka yerləşdirmələrini avtomatlaşdırmağın sadə və təhlükəsiz yolu

Canary deployment yeni kodu istifadəçilərin bir hissəsində sınaqdan keçirmək üçün çox təsirli bir üsuldur. O, yerləşdirmə zamanı problem yarada biləcək trafik yükünü əhəmiyyətli dərəcədə azaldır, çünki bu, yalnız müəyyən bir alt qrup daxilində baş verir. Bu qeyd Kubernetes və yerləşdirmə avtomatlaşdırmasından istifadə edərək belə bir yerləşdirmənin necə təşkil edilməsinə həsr olunub. Güman edirik ki, Helm və Kubernetes resursları haqqında nəsə bilirsiniz.

Helm ilə kanareyka yerləşdirmələrini avtomatlaşdırmağın sadə və təhlükəsiz yolu

Kubernetes-ə sadə kanareyka yerləşdirilməsi iki əsas resurs ehtiva edir: xidmətin özü və yerləşdirmə aləti. Canary yerləşdirilməsi yeniləmə trafikinə xidmət edən iki müxtəlif resursla qarşılıqlı əlaqədə olan tək bir xidmət vasitəsilə işləyir. Bu resurslardan biri “kanareyka” versiyası ilə, ikincisi isə stabil versiya ilə işləyəcək. Bu vəziyyətdə, xidmət üçün tələb olunan trafik miqdarını azaltmaq üçün kanareyka versiyalarının sayını tənzimləyə bilərik. Məsələn, Yaml istifadə etməyi üstün tutursunuzsa, o zaman Kubernetes-də belə görünəcək:

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.

Bu seçimi kubectl-dən istifadə edərək təsəvvür etmək daha asandır Kubernetes sənədləri Bu ssenari üzrə hətta tam təlimat var. Ancaq bu yazının əsas sualı Helm istifadə edərək bu prosesi necə avtomatlaşdıracağımızdır.

Kanareyka yerləşdirilməsinin avtomatlaşdırılması

İlk növbədə, yuxarıda müzakirə etdiyimiz resursları özündə birləşdirən Helm chart xəritəsi lazımdır. Bu kimi bir şey görünməlidir:

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

Helm konsepsiyasının əsasını çox versiyalı buraxılışların idarə edilməsi təşkil edir. Stabil versiya layihə kodunun əsas stabil qolumuzdur. Lakin Helm ilə biz eksperimental kodumuzla kanareyka buraxılışını yerləşdirə bilərik. Əsas odur ki, stabil versiya ilə kanareyka buraxılışı arasında trafik mübadiləsini təmin edin. Bütün bunları xüsusi bir seçicidən istifadə edərək idarə edəcəyik:

selector:
  app.kubernetes.io/name: myapp

Bizim “kanareyka” və sabit yerləşdirmə resurslarımız modullarda bu etiketi göstərəcək. Hər şey düzgün konfiqurasiya edilibsə, o zaman Helm diaqram xəritəmizin kanareyka versiyasının yerləşdirilməsi zamanı biz trafikin yeni yerləşdirilmiş modullara yönəldiləcəyini görəcəyik. Bu əmrin stabil versiyası belə görünəcək:

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

İndi kanareyka buraxılışımızı yoxlayaq. Kanareyka versiyasını yerləşdirmək üçün iki şeyi yadda saxlamalıyıq. Buraxılış adı fərqli olmalıdır ki, biz cari stabil versiyaya yeniləməni yaymayaq. Versiya və etiket də fərqli olmalıdır ki, biz başqa kodu yerləşdirə bilək və resurs teqləri ilə fərqləri müəyyən edək.

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

Hamısı budur! Xidmətə ping atsanız, kanareyka yeniləməsinin trafiki yalnız vaxtın bir hissəsini yönləndirdiyini görə bilərsiniz.

Təsvir edilən məntiqi ehtiva edən yerləşdirmə avtomatlaşdırma vasitələrini axtarırsınızsa, diqqət yetirin Çatdırılma robotuGitHub-da sükan avtomatlaşdırma vasitələri. Yuxarıda təsvir edilən metodu həyata keçirmək üçün istifadə olunan Helm diaqramları Github-da, burada. Ümumiyyətlə, bu, konkret anlayışlar və nümunələrlə kanareyka versiyalarının yerləşdirilməsinin avtomatlaşdırılmasının praktikada necə həyata keçiriləcəyinə dair nəzəri icmal idi.

Mənbə: www.habr.com

Добавить комментарий