Kubernetes-те орналастыру стратегиялары: айналдыру, қайта жасау, көк/жасыл, канарей, қараңғы (A/B сынағы)

Ескерту аударма: Weaveworks ұсынған бұл шолу қолданбаларды шығарудың ең танымал стратегияларын ұсынады және Kubernetes Flagger операторы арқылы ең жетілдірілгендерін қалай жүзеге асыруға болатынын көрсетеді. Ол қарапайым тілде жазылған және тіпті жаңа бастаған инженерлерге мәселені түсінуге мүмкіндік беретін көрнекі диаграммаларды қамтиды.

Kubernetes-те орналастыру стратегиялары: айналдыру, қайта жасау, көк/жасыл, канарей, қараңғы (A/B сынағы)
Диаграмма мына жерден алынған тағы бір шолу Container Solutions жүйесінде жасалған шығару стратегиялары

Бүгінгі таңда бұлтты жергілікті қолданбаларды әзірлеудегі ең үлкен қиындықтардың бірі - орналастыруды жылдамдату. Микросервис тәсілінде әзірлеушілер әртүрлі командаларға бір уақытта код жазуға және қолданбаға өзгертулер енгізуге мүмкіндік беретін толық модульдік қолданбалармен жұмыс істеп, жобалайды.

Қысқарақ және жиірек орналастырулар келесі артықшылықтарға ие:

  • Нарыққа шығу уақыты қысқарады.
  • Жаңа мүмкіндіктер пайдаланушыларға тезірек жетеді.
  • Пайдаланушы пікірі әзірлеушілер тобына тезірек жетеді. Бұл топ мүмкіндіктерді қосып, мәселелерді тезірек түзете алады дегенді білдіреді.
  • Әзірлеушінің моральдық деңгейі артады: дамудағы көбірек мүмкіндіктермен жұмыс істеу қызықтырақ.


Бірақ шығарылымдардың жиілігі артқан сайын, қолданбаның сенімділігіне немесе пайдаланушы тәжірибесіне теріс әсер ету мүмкіндігі де артады. Сондықтан операциялар мен DevOps командалары үшін процестерді құру және орналастыру стратегияларын өнім мен пайдаланушылар үшін тәуекелді азайтатындай басқару маңызды. (CI/CD құбырын автоматтандыру туралы көбірек біле аласыз осында.)

Бұл постта біз Kubernetes-те әртүрлі орналастыру стратегияларын, соның ішінде жылжыту орналастыруларды және канарларды шығару және олардың нұсқалары сияқты жетілдірілген әдістерді талқылаймыз.

Орналастыру стратегиялары

Мақсатыңызға байланысты қолдануға болатын орналастыру стратегияларының бірнеше түрі бар. Мысалы, қосымша тестілеу үшін белгілі бір ортаға немесе пайдаланушылар/клиенттердің жиынына өзгертулер енгізу қажет болуы мүмкін немесе мүмкіндікті жасамас бұрын шектеулі пайдаланушы тестілеуін жасау қажет болуы мүмкін. қоғамдық.

Домалау (біртіндеп, «домалау» орналастыру)

Бұл Kubernetes-тегі стандартты орналастыру стратегиясы. Ол бірте-бірте бірте-бірте қосымшаның ескі нұсқасымен қосқыштарды жаңа нұсқасымен - кластердің тоқтауынсыз ауыстырады.

Kubernetes-те орналастыру стратегиялары: айналдыру, қайта жасау, көк/жасыл, канарей, қараңғы (A/B сынағы)

Кубернетес жаңа қосқыштар жұмыс істеуге дайын болғанша күтеді (оларды пайдалану арқылы тексереді дайындық сынақтары), ескілерді орауды бастамас бұрын. Егер ақаулық орын алса, бұл жылжымалы жаңартуды бүкіл кластерді тоқтатпай тоқтатуға болады. Орналастыру түрін сипаттайтын 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 көк-жасыл rollouts ұқсас, бірақ жақсы басқару және пайдалану бар прогрессивті қадамдық тәсіл. Бұл түрге бірнеше түрлі стратегиялар кіреді, соның ішінде «жасырын» іске қосу және A/B тестілеу.

Бұл стратегия әдетте қолданбаның серверінде кейбір жаңа функцияларды сынап көру қажет болғанда қолданылады. Әдістің мәні екі дерлік бірдей серверлерді құру болып табылады: біреуі дерлік барлық пайдаланушыларға қызмет көрсетеді, ал екіншісі жаңа функциялары бар пайдаланушылардың шағын тобына ғана қызмет етеді, содан кейін олардың жұмысының нәтижелері салыстырылады. Егер бәрі қатесіз болса, жаңа нұсқа бірте-бірте бүкіл инфрақұрылымға таратылады.

Бұл стратегияны тек Kubernetes көмегімен, ескі подводтарды жаңаларына ауыстыру арқылы жүзеге асыруға болатынына қарамастан, Istio сияқты сервистік торды пайдалану әлдеқайда ыңғайлы және қарапайым.

Мысалы, сізде Git-те екі түрлі манифест болуы мүмкін: 0.1.0 тегі бар тұрақты манифест және 0.2.0 тегі бар канариялық манифест. Istio виртуалды шлюз манифестіндегі салмақтарды өзгерту арқылы сіз осы екі орналастыру арасындағы трафиктің таралуын басқара аласыз:

Kubernetes-те орналастыру стратегиялары: айналдыру, қайта жасау, көк/жасыл, канарей, қараңғы (A/B сынағы)

Istio көмегімен канарларды орналастыруды енгізу бойынша қадамдық нұсқаулықты қараңыз Istio көмегімен GitOps жұмыс процестері. (Ескерту. аударма: Біз сондай-ақ канарейлерді шығару туралы материалды Istio тіліне аудардық осында.)

Weaveworks жалаушасы бар Canary орналастырулары

Weaveworks Flagger канарейлерді оңай және тиімді басқаруға мүмкіндік береді.

Flagger автоматтандырғыштары олармен жұмыс істейді. Ол трафикті бағыттау және ауыстыру үшін Istio немесе AWS App Mesh және нәтижелерді талдау үшін Prometheus метрикасын пайдаланады. Сонымен қатар, канарларды орналастыруды талдауды қабылдау сынақтарын, жүктеме сынақтарын және кез келген басқа тексеру түрлерін жүргізу үшін веб-ілмектермен толықтыруға болады.

Kubernetes орналастыруына және қажет болса, подкасттарды көлденең масштабтауға (HPA) негізделген, Flagger канарлық орналастыруларды талдау және енгізу үшін нысандар жиынын жасайды (Kubernetes орналастырулары, ClusterIP қызметтері және Istio немесе App Mesh виртуалды қызметтері):

Kubernetes-те орналастыру стратегиялары: айналдыру, қайта жасау, көк/жасыл, канарей, қараңғы (A/B сынағы)

Басқару циклін жүзеге асыру (басқару циклі),Flagger трафикті бірте-бірте канариялық серверге ауыстырады, сонымен бірге сәтті HTTP сұрауларының арақатынасы, орташа сұрау ұзақтығы және тармақтардың денсаулығы сияқты негізгі өнімділік көрсеткіштерін өлшейді. KPI (Key Performance Indicators) талдауына сүйене отырып, канарей өседі немесе құлайды және талдау нәтижелері Slack сайтында жарияланады. Бұл процестің сипаттамасы мен демонстрациясын материалдан табуға болады App Mesh үшін прогрессивті жеткізу.

Kubernetes-те орналастыру стратегиялары: айналдыру, қайта жасау, көк/жасыл, канарей, қараңғы (A/B сынағы)

Қараңғы (жасырын) немесе A/B орналастырулары

Жасырын орналастыру - бұл канариялық стратегияның тағы бір нұсқасы (айтпақшы, Flagger онымен де жұмыс істей алады). Жасырын және канариялық орналастырулардың айырмашылығы - жасырын орналастырулар канариялық орналастырулар сияқты серверден гөрі фронтпен жұмыс істейді.

Бұл орналастырулардың басқа атауы A/B тестілеу болып табылады. Жаңа мүмкіндікті барлық пайдаланушыларға қолжетімді етудің орнына, ол олардың шектеулі бөлігіне ғана ұсынылады. Әдетте, бұл пайдаланушылар өздерінің пионер тестерлері екенін білмейді (осыдан «жасырын орналастыру» термині).

Функционалдық қосқыштарды пайдалану (функцияны ауыстыру) және басқа құралдарды қолдану арқылы пайдаланушылардың жаңа мүмкіндікпен қалай әрекеттесетінін, олар онымен айналысатынын немесе жаңа пайдаланушы интерфейсін шатастырып жатқанын және басқа көрсеткіштер түрлерін бақылай аласыз.

Kubernetes-те орналастыру стратегиялары: айналдыру, қайта жасау, көк/жасыл, канарей, қараңғы (A/B сынағы)

Flagger және A/B орналастырулары

Салмаққа негізделген маршруттаудан басқа, Flagger трафикті HTTP параметрлері негізінде канар серверіне бағыттай алады. A/B сынауында пайдаланушылардың белгілі бір сегментін бағыттау үшін HTTP тақырыптарын немесе cookie файлдарын пайдалануға болады. Бұл серверге сеансты байланыстыруды қажет ететін алдыңғы қатарлы қолданбалар жағдайында әсіресе тиімді (сессияның жақындығы). Қосымша ақпаратты Flagger құжаттамасынан табуға болады.

Автор алғысын білдіреді Стефан Продан, Weaveworks инженері (және Flagger жасаушысы), осы таңғажайып орналастыру үлгілері үшін.

Аудармашыдан PS

Біздің блогта да оқыңыз:

Ақпарат көзі: www.habr.com

пікір қалдыру