Helm-ийн тусламжтайгаар канарын байршуулалтыг автоматжуулах энгийн бөгөөд аюулгүй арга

Helm-ийн тусламжтайгаар канарын байршуулалтыг автоматжуулах энгийн бөгөөд аюулгүй арга

Canary deployment нь хэрэглэгчдэд шинэ кодыг турших маш үр дүнтэй арга юм. Энэ нь зөвхөн тодорхой дэд бүлэгт тохиолддог тул байршуулах явцад асуудал үүсгэж болох замын ачааллыг эрс багасгадаг. Энэхүү тэмдэглэл нь Kubernetes болон байршуулалтын автоматжуулалтыг ашиглан ийм байршуулалтыг хэрхэн зохион байгуулахад зориулагдсан болно. Таныг Helm болон Kubernetes нөөцийн талаар ямар нэг зүйл мэддэг гэж бид таамаглаж байна.

Helm-ийн тусламжтайгаар канарын байршуулалтыг автоматжуулах энгийн бөгөөд аюулгүй арга

Kubernetes-д энгийн канарын байршуулалт нь үйлчилгээ өөрөө болон байршуулах хэрэгсэл гэсэн хоёр үндсэн нөөцийг агуулдаг. Canary deployment нь шинэчлэлтийн урсгалд үйлчлэх хоёр өөр эх сурвалжтай харилцан үйлчилдэг нэг үйлчилгээгээр дамжуулан ажилладаг. Эдгээр нөөцийн нэг нь "канар" хувилбартай, хоёр дахь нь тогтвортой хувилбартай ажиллах болно. Ийм нөхцөлд үйлчлэхэд шаардагдах хөдөлгөөний хэмжээг багасгахын тулд бид канарын хувилбаруудын тоог зохицуулж болно. Жишээлбэл, та Yaml ашиглахыг илүүд үзэж байгаа бол Кубернетес дээр иймэрхүү харагдах болно.

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.

kubectl болон in ашиглан энэ сонголтыг төсөөлөхөд бүр ч хялбар байдаг Kubernetes баримт бичиг Энэ хувилбарын талаар бүрэн зааварчилгаа ч бий. Гэхдээ энэ нийтлэлийн гол асуулт бол бид Helm ашиглан энэ үйл явцыг хэрхэн автоматжуулах вэ гэсэн асуулт юм.

Канарыг байрлуулах автоматжуулалт

Юуны өмнө бидэнд дээр дурдсан нөөцүүдийг багтаасан Helm диаграмын газрын зураг хэрэгтэй байна. Энэ нь иймэрхүү харагдах ёстой:

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

Helm концепцийн үндэс нь олон хувилбарт хувилбаруудыг удирдах явдал юм. Тогтвортой хувилбар нь төслийн кодын бидний үндсэн тогтвортой салбар юм. Гэхдээ Helm-ийн тусламжтайгаар бид туршилтын кодоороо канарын хувилбарыг байрлуулж болно. Хамгийн гол нь тогтвортой хувилбар ба канарын хувилбарын хоорондох хөдөлгөөний солилцоог хадгалах явдал юм. Бид энэ бүгдийг тусгай сонгогч ашиглан удирдах болно.

selector:
  app.kubernetes.io/name: myapp

Манай "канар" болон тогтвортой байршуулах нөөц нь модулиуд дээрх шошгыг зааж өгөх болно. Хэрэв бүх зүйл зөв тохируулагдсан бол манай Helm диаграмын газрын зургийн канар хувилбарыг байрлуулах явцад бид траффик шинээр байрлуулсан модулиуд руу чиглүүлэх болно. Энэ тушаалын тогтвортой хувилбар нь дараах байдлаар харагдах болно.

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

Тэгээд л болоо! Хэрэв та үйлчилгээнд пинг хийвэл, canary update нь замын хөдөлгөөнийг зөвхөн хэсэг хугацаанд чиглүүлдэг болохыг харж болно.

Хэрэв та тайлбарласан логикийг агуулсан байршуулах автоматжуулалтын хэрэгслийг хайж байгаа бол анхаарлаа хандуулаарай Deliverybot мөн дээр GitHub дээрх жолооны автоматжуулалтын хэрэгслүүд. Дээр дурдсан аргыг хэрэгжүүлэхэд ашигласан Helm графикууд нь Github дээр, энд байна. Ерөнхийдөө энэ нь канарын хувилбаруудыг байрлуулах автоматжуулалтыг практикт хэрхэн хэрэгжүүлэх талаар тодорхой ойлголт, жишээнүүдийн онолын тойм байв.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх