Kubernetes-д байршуулах стратеги: өнхрөх, дахин үүсгэх, хөх/ногоон, канар, харанхуй (A/B туршилт)

Анхаарна уу орчуулга: Weaveworks-ийн энэхүү тойм нь хамгийн алдартай програм нэвтрүүлэх стратегиудыг танилцуулж, хамгийн дэвшилтэт стратегиудыг Kubernetes Flagger оператор ашиглан хэрхэн хэрэгжүүлж болохыг харуулж байна. Энэ нь энгийн хэлээр бичигдсэн бөгөөд шинэхэн инженерүүдэд ч гэсэн асуудлыг ойлгох боломжийг олгодог харааны диаграммуудыг агуулдаг.

Kubernetes-д байршуулах стратеги: өнхрөх, дахин үүсгэх, хөх/ногоон, канар, харанхуй (A/B туршилт)
Диаграмыг авсан болно өөр тойм Container Solutions-д хийсэн нэвтрүүлэх стратеги

Өнөөдөр үүлэн программыг хөгжүүлэхэд тулгарч буй хамгийн том сорилтуудын нэг бол байршуулалтыг хурдасгах явдал юм. Микро үйлчилгээний арга барилд хөгжүүлэгчид аль хэдийн бүрэн модульчлагдсан программуудтай ажиллаж, дизайн хийснээр өөр өөр багуудад нэгэн зэрэг код бичиж, програмд ​​өөрчлөлт оруулах боломжийг олгодог.

Илүү богино, илүү олон удаа байршуулах нь дараахь давуу талуудтай.

  • Зах зээлд гарах хугацаа багассан.
  • Шинэ боломжууд хэрэглэгчдэд илүү хурдан хүрдэг.
  • Хэрэглэгчийн санал хүсэлт нь хөгжүүлэлтийн багт илүү хурдан хүрдэг. Энэ нь баг онцлогуудыг нэмж, асуудлыг илүү хурдан засах боломжтой гэсэн үг юм.
  • Хөгжүүлэгчийн ёс суртахуун нэмэгддэг: хөгжүүлэлтийн олон боломжуудтай ажиллахад илүү хөгжилтэй байдаг.


Гэхдээ хувилбарын давтамж нэмэгдэхийн хэрээр програмын найдвартай байдал эсвэл хэрэглэгчийн туршлагад сөргөөр нөлөөлөх магадлал нэмэгддэг. Ийм учраас үйл ажиллагаанууд болон DevOps багуудад бүтээгдэхүүн болон хэрэглэгчдэд учрах эрсдэлийг багасгахын тулд үйл явцыг бий болгож, байршуулах стратегийг удирдах нь чухал юм. (Та CI/CD дамжуулах хоолойн автоматжуулалтын талаар илүү ихийг мэдэж болно энд.)

Энэ нийтлэлд бид Kubernetes-д байршуулах янз бүрийн стратеги, тухайлбал гулсмал байршуулалт, канарын өнхрөлт, тэдгээрийн хувилбарууд гэх мэт илүү дэвшилтэт аргуудын талаар хэлэлцэх болно.

Байршуулах стратеги

Зорилгоос хамааран ашиглах боломжтой хэд хэдэн төрлийн байршуулах стратеги байдаг. Жишээлбэл, та нэмэлт туршилт хийхийн тулд тодорхой орчинд эсвэл хэрэглэгчид/үйлчлүүлэгчдийн дэд бүлэгт өөрчлөлт оруулах эсвэл функц хийхээсээ өмнө хязгаарлагдмал хэрэглэгчийн тест хийх шаардлагатай байж болно. олон нийтэд нээлттэй.

Өнхрөх (аажмаар, "өнхрөх" байршуулалт)

Энэ бол Кубернетес дэх стандарт байршуулах стратеги юм. Энэ нь аажмаар нэг нэгээр нь програмын хуучин хувилбартай подкуудыг шинэ хувилбараар сольж, кластерын зогсолтгүйгээр хийдэг.

Kubernetes-д байршуулах стратеги: өнхрөх, дахин үүсгэх, хөх/ногоон, канар, харанхуй (A/B туршилт)

Кубернетес шинэ pod ажиллахад бэлэн болтол хүлээнэ (тэдгээрийг ашиглан шалгаж байна бэлэн байдлын тестүүд), хуучин зүйлсийг өнхрүүлж эхлэхээс өмнө. Хэрэв асуудал гарвал кластерийг бүхэлд нь зогсоохгүйгээр энэ гулсмал шинэчлэлтийг зогсоож болно. Байршуулах төрлийг тодорхойлсон YAML файлд шинэ зураг нь хуучин зургийг орлоно.

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: awesomeapp
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: awesomeapp
    spec:
      containers:
        - name: awesomeapp
          image: imagerepo-user/awesomeapp:new
          ports:
            - containerPort: 8080

Дамжуулах шинэчлэлтийн параметрүүдийг манифест файлд зааж өгч болно:

spec:
  replicas: 3
  strategy:
    type: RollingUpdate
    rollingUpdate:
       maxSurge: 25%
       maxUnavailable: 25%  
  template:
  ...

Дахин үүсгэх

Энэхүү хамгийн энгийн суулгацын хувьд хуучин хонхорцог бүгдийг нэг дор устгаж, шинээр сольдог.

Kubernetes-д байршуулах стратеги: өнхрөх, дахин үүсгэх, хөх/ногоон, канар, харанхуй (A/B туршилт)

Харгалзах манифест нь иймэрхүү харагдаж байна:

spec:
  replicas: 3
  strategy:
    type: Recreate
  template:
  ...

Цэнхэр/Ногоон (цэнхэр-ногоон байршуулалт)

Цэнхэр-ногоон байршуулах стратеги (заримдаа улаан/хар гэж нэрлэдэг) нь програмын хуучин (ногоон) болон шинэ (цэнхэр) хувилбаруудыг нэгэн зэрэг ашиглах явдал юм. Хоёр хувилбарыг нийтлэсний дараа энгийн хэрэглэгчид ногоон хувилбарт хандах боломжтой бол QA багийн хувьд тусдаа үйлчилгээ эсвэл шууд порт дамжуулах замаар тестийг автоматжуулахын тулд цэнхэр хувилбарыг ашиглах боломжтой.

Kubernetes-д байршуулах стратеги: өнхрөх, дахин үүсгэх, хөх/ногоон, канар, харанхуй (A/B туршилт)

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: awesomeapp-02
spec:
  template:
    metadata:
      labels:
        app: awesomeapp
        version: "02"

Цэнхэр (шинэ) хувилбарыг туршиж, гаргахыг зөвшөөрсний дараа үйлчилгээ түүн рүү шилжиж, ногоон (хуучин) хувилбарыг нугалав.

apiVersion: v1
kind: Service
metadata:
  name: awesomeapp
spec:
  selector:
    app: awesomeapp
    version: "02"
...

Канар (канарын байршуулалт)

Canary rollouts нь хөх ногоон өнхрөлттэй төстэй боловч илүү сайн хяналт, хэрэглээтэй байдаг дэвшилтэт алхам алхмаар арга барил. Энэ төрөлд "далд" хөөргөх, A/B тест зэрэг хэд хэдэн өөр стратеги багтана.

Энэ стратегийг ихэвчлэн програмын арын хэсэгт шинэ функцийг турших шаардлагатай үед ашигладаг. Аргын мөн чанар нь бараг ижил хоёр серверийг бий болгох явдал юм: нэг нь бараг бүх хэрэглэгчдэд үйлчилдэг, нөгөө нь шинэ функцээр зөвхөн жижиг дэд бүлэг хэрэглэгчдэд үйлчилдэг бөгөөд үүний дараа тэдний ажлын үр дүнг харьцуулдаг. Хэрэв бүх зүйл алдаагүй бол шинэ хувилбар аажмаар бүхэл бүтэн дэд бүтцэд шилжинэ.

Хэдийгээр энэ стратегийг зөвхөн Kubernetes ашиглан хуучин хонхорцогуудыг шинээр сольж болох боловч Istio шиг үйлчилгээний торыг ашиглах нь илүү тохиромжтой бөгөөд хялбар юм.

Жишээлбэл, та Git дээр хоёр өөр манифесттэй байж болно: 0.1.0 шошготой ердийн манифест ба 0.2.0 шошготой канарын манифест. Istio виртуал гарцын манифест дахь жинг өөрчилснөөр та эдгээр хоёр байршуулалтын хоорондох хөдөлгөөний хуваарилалтыг хянах боломжтой.

Kubernetes-д байршуулах стратеги: өнхрөх, дахин үүсгэх, хөх/ногоон, канар, харанхуй (A/B туршилт)

Istio ашиглан канар суулгацыг хэрэгжүүлэх алхам алхмаар зааварчилгааг үзнэ үү Istio-тэй GitOps ажлын урсгалууд. (Анхаарна уу. орчуулга.: Мөн бид канар rollouts тухай материалыг Istio руу орчуулсан энд.)

Weaveworks Flagger бүхий Canary Deployments

Weaveworks Flagger канарын өнхрөлтийг хялбар, үр дүнтэй удирдах боломжийг танд олгоно.

Flagger автоматжуулалт нь тэдэнтэй ажилладаг. Энэ нь урсгалыг чиглүүлэх, шилжүүлэхэд Istio эсвэл AWS App Mesh, үр дүнд дүн шинжилгээ хийхэд Prometheus хэмжигдэхүүнийг ашигладаг. Нэмж дурдахад, канарын байршуулалтын дүн шинжилгээг хүлээн авах туршилт, ачааллын туршилт болон бусад төрлийн шалгалт хийх зорилгоор вэб дэгээгээр нэмж болно.

Flagger нь Kubernetes-ийн байршуулалт, хэрэв шаардлагатай бол pods-ийн хэвтээ масштаб (HPA) дээр үндэслэн канарын байршуулалтад дүн шинжилгээ хийж, хэрэгжүүлэхийн тулд объектуудын багцыг (Kubernetes байршуулалт, ClusterIP үйлчилгээ болон Istio эсвэл App Mesh виртуал үйлчилгээ) үүсгэдэг:

Kubernetes-д байршуулах стратеги: өнхрөх, дахин үүсгэх, хөх/ногоон, канар, харанхуй (A/B туршилт)

Хяналтын гогцоог хэрэгжүүлж байна (хяналтын гогцоо),Flagger нь трафикийг аажмаар canary сервер рүү шилжүүлж, амжилттай HTTP хүсэлтийн хувь, хүсэлтийн дундаж үргэлжлэх хугацаа, хонгилын эрүүл мэнд зэрэг гүйцэтгэлийн гол хэмжүүрүүдийг нэгэн зэрэг хэмждэг. KPI (Гүйцэтгэлийн гол үзүүлэлтүүд)-ийн шинжилгээнд үндэслэн канар ургах эсвэл нурах ба шинжилгээний үр дүнг Slack-д нийтэлдэг. Энэ үйл явцын тайлбар, үзүүлбэрийг материалаас олж болно App Mesh-д зориулсан дэвшилтэт хүргэлт.

Kubernetes-д байршуулах стратеги: өнхрөх, дахин үүсгэх, хөх/ногоон, канар, харанхуй (A/B туршилт)

Харанхуй (далд) эсвэл A/B байршуулалт

Далд байршуулалт нь канарын стратегийн өөр нэг хувилбар юм (Дашрамд хэлэхэд, Flagger-тэй ажиллах боломжтой). Stealth болон canary deployment-ийн ялгаа нь үл үзэгдэгч байршуулалтууд нь канарын байршуулалт шиг арын хэсэгт биш харин урд талдаа ажилладагт оршино.

Эдгээр байршуулалтын өөр нэг нэр нь A/B тест юм. Шинэ функцийг бүх хэрэглэгчид ашиглах боломжтой болгохын оронд зөвхөн тэдний хязгаарлагдмал хэсэгт санал болгож байна. Ерөнхийдөө эдгээр хэрэглэгчид өөрсдийгөө анхдагч шалгагч гэдгээ мэддэггүй (тиймээс "далд байршуулалт" гэсэн нэр томъёо).

Функциональ унтраалга ашиглах (онцлогыг асаах/унтраах) болон бусад хэрэгслүүдийн тусламжтайгаар та хэрэглэгчид шинэ функцтэй хэрхэн харилцаж байгаа, тэдгээрт хамрагдаж байгаа эсэх, шинэ хэрэглэгчийн интерфэйс нь төөрөгдүүлсэн эсэх болон бусад төрлийн хэмжүүрүүдийг хянах боломжтой.

Kubernetes-д байршуулах стратеги: өнхрөх, дахин үүсгэх, хөх/ногоон, канар, харанхуй (A/B туршилт)

Flagger болон A/B байршуулалт

Жинд суурилсан чиглүүлэлтээс гадна Flagger нь HTTP параметрүүд дээр тулгуурлан canary сервер рүү урсгалыг чиглүүлэх боломжтой. A/B тестийн хувьд та хэрэглэгчдийн тодорхой сегментийг чиглүүлэхийн тулд HTTP толгой эсвэл күүки ашиглаж болно. Энэ нь серверт сессийг холбохыг шаарддаг frontend програмуудын хувьд ялангуяа үр дүнтэй байдаг (сессийн ойр байдал). Дэлгэрэнгүй мэдээллийг Flagger баримтаас авах боломжтой.

Зохиогч талархлаа илэрхийлж байна Стефан Продан, Weaveworks инженер (мөн Flagger-ийг бүтээгч), эдгээр бүх гайхалтай байршуулалтын загваруудын хувьд.

Орчуулагчийн жич

Мөн манай блог дээрээс уншина уу:

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

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