IzvietoÅ”anas stratēģijas programmā Kubernetes: ritoŔā, atkārtota, zila/zaļa, kanārijas, tumÅ”a (A/B testÄ“Å”ana)

PiezÄ«me tulkojums: Å is Weaveworks pārskats iepazÄ«stina ar populārākajām lietojumprogrammu izlaiÅ”anas stratēģijām un parāda, kā vismodernākās var ieviest, izmantojot operatoru Kubernetes Flagger. Tas ir uzrakstÄ«ts vienkārŔā valodā un satur vizuālas diagrammas, kas ļauj pat iesācējiem inženieriem izprast problēmu.

IzvietoÅ”anas stratēģijas programmā Kubernetes: ritoŔā, atkārtota, zila/zaļa, kanārijas, tumÅ”a (A/B testÄ“Å”ana)
Diagramma ir ņemta no vēl viena atsauksme Container Solutions izstrādātās izlaiÅ”anas stratēģijas

MÅ«sdienās viens no lielākajiem izaicinājumiem mākoņa lietojumprogrammu izstrādē ir izvietoÅ”anas paātrināŔana. Mikropakalpojumu pieejā izstrādātāji jau strādā ar un izstrādā pilnÄ«gi modulāras lietojumprogrammas, ļaujot dažādām komandām vienlaikus rakstÄ«t kodu un veikt izmaiņas lietojumprogrammā.

ÄŖsākai un biežākai izvietoÅ”anai ir Ŕādas priekÅ”rocÄ«bas:

  • Tiek samazināts laiks lÄ«dz tirgum.
  • Jaunās funkcijas ātrāk sasniedz lietotājus.
  • Lietotāju atsauksmes ātrāk sasniedz izstrādes komandu. Tas nozÄ«mē, ka komanda var ātrāk pievienot funkcijas un novērst problēmas.
  • Paaugstinās izstrādātāju morāle: ar vairākām izstrādes funkcijām ir daudz patÄ«kamāk strādāt.


Taču, palielinoties izlaiÅ”anas biežumam, palielinās arÄ« iespēja negatÄ«vi ietekmēt lietojumprogrammas uzticamÄ«bu vai lietotāja pieredzi. Tāpēc operācijām un DevOps komandām ir svarÄ«gi veidot procesus un pārvaldÄ«t izvietoÅ”anas stratēģijas tā, lai lÄ«dz minimumam samazinātu produkta un lietotāju risku. (Varat uzzināt vairāk par CI/CD konveijera automatizāciju Å”eit.)

Å ajā ziņojumā mēs apspriedÄ«sim dažādas Kubernetes izvietoÅ”anas stratēģijas, tostarp slÄ«doÅ”o izvietoÅ”anu un progresÄ«vākas metodes, piemēram, kanārijas izlaiÅ”anu un to variācijas.

IzvērÅ”anas stratēģijas

Ir vairāki dažādi izvietoÅ”anas stratēģiju veidi, kurus varat izmantot atkarÄ«bā no mērÄ·a. Piemēram, jums var bÅ«t nepiecieÅ”ams veikt izmaiņas noteiktā vidē, lai veiktu turpmāku testÄ“Å”anu, vai lietotāju/klientu apakÅ”kopā, vai arÄ« pirms funkcijas izveides jāveic ierobežota lietotāju pārbaude. publiski.

RitoÅ”a (pakāpeniska, ā€œritoŔāā€ izvietoÅ”ana)

Å Ä« ir standarta izvietoÅ”anas stratēģija Kubernetes. Tas pakāpeniski, pa vienam, aizvieto aplikācijas ar veco lietojumprogrammas versiju ar jauno versiju ā€” bez klastera dÄ«kstāves.

IzvietoÅ”anas stratēģijas programmā Kubernetes: ritoŔā, atkārtota, zila/zaļa, kanārijas, tumÅ”a (A/B testÄ“Å”ana)

Kubernetes gaida, lÄ«dz jaunie podi ir gatavi darbam (pārbaudiet tos, izmantojot gatavÄ«bas pārbaudes), pirms sākat ritināt vecās. Ja rodas problēma, Å”o ritoÅ”o atjauninājumu var pārtraukt, neapturot visu klasteru. YAML failā, kurā aprakstÄ«ts izvietoÅ”anas veids, jaunais attēls aizstāj veco attēlu:

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

ApgāŔanās atjaunināŔanas parametrus var norādīt manifesta failā:

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

Atjaunot

Šajā vienkārŔākajā izvietoŔanas veidā vecie podi tiek iznīcināti uzreiz un aizstāti ar jauniem:

IzvietoÅ”anas stratēģijas programmā Kubernetes: ritoŔā, atkārtota, zila/zaļa, kanārijas, tumÅ”a (A/B testÄ“Å”ana)

AtbilstoÅ”ais manifests izskatās apmēram Ŕādi:

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

Zila/zaļa (zili-zaļa izvietoŔana)

Zili zaļā izvietoÅ”anas stratēģija (dažreiz saukta arÄ« par sarkanu/melnu) ietver lietojumprogrammas vecās (zaļās) un jaunās (zilās) versijas vienlaicÄ«gu izvietoÅ”anu. Pēc abu versiju publicÄ“Å”anas parastajiem lietotājiem ir pieejama zaļā versija, savukārt zilā ir pieejama kvalitātes nodroÅ”ināŔanas komandai, lai automatizētu testus, izmantojot atseviŔķu pakalpojumu vai tieÅ”u porta pāradresāciju:

IzvietoÅ”anas stratēģijas programmā Kubernetes: ritoŔā, atkārtota, zila/zaļa, kanārijas, tumÅ”a (A/B testÄ“Å”ana)

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

Pēc zilās (jaunās) versijas testÄ“Å”anas un tās izlaiÅ”anas apstiprināŔanas pakalpojums pārslēdzas uz to, un zaļā (vecā) versija tiek salocÄ«ta:

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

Kanārijputniņi (kanārijputniņi)

Kanāriju izlaidumi ir lÄ«dzÄ«gi zili zaļiem izlaiÅ”anai, taču tiem ir labāka kontrole un lietoÅ”ana progresÄ«vs soli pa solim pieeja. Å is veids ietver vairākas dažādas stratēģijas, tostarp "slēpto" palaiÅ”anu un A/B testÄ“Å”anu.

Å o stratēģiju izmanto, ja ir jāizmēģina kāda jauna funkcionalitāte, parasti lietojumprogrammas aizmugurē. Pieejas bÅ«tÄ«ba ir izveidot divus gandrÄ«z identiskus serverus: viens apkalpo gandrÄ«z visus lietotājus, bet otrs ar jaunām funkcijām apkalpo tikai nelielu lietotāju apakÅ”grupu, pēc kura tiek salÄ«dzināti viņu darba rezultāti. Ja viss norit bez kļūdām, jaunā versija pakāpeniski tiek ieviesta visā infrastruktÅ«rā.

Lai gan Å”o stratēģiju var Ä«stenot tikai, izmantojot Kubernetes, aizstājot vecās podi ar jaunām, daudz ērtāk un vienkārŔāk ir izmantot pakalpojumu tÄ«klu, piemēram, Istio.

Piemēram, pakalpojumā Git jums var bÅ«t divi dažādi manifesti: parastais manifests ar tagu 0.1.0 un kanārijputnu manifests ar tagu 0.2.0. Mainot svarus Istio virtuālās vārtejas manifestā, varat kontrolēt trafika sadalÄ«jumu starp Ŕīm divām izvietoÅ”anām:

IzvietoÅ”anas stratēģijas programmā Kubernetes: ritoŔā, atkārtota, zila/zaļa, kanārijas, tumÅ”a (A/B testÄ“Å”ana)

Detalizētu rokasgrāmatu par kanārijputnu izvietoÅ”anas ievieÅ”anu, izmantojot Istio, skatiet GitOps darbplÅ«smas ar Istio. (PiezÄ«me. tulk.: Istio valodā mēs arÄ« tulkojām materiālus par kanārijputnu izrullÄ“Å”anu Å”eit.)

Kanāriju izvietoÅ”ana ar Weaveworks atzÄ«mētāju

Weaveworks karodzītājs ļauj viegli un efektīvi pārvaldīt kanārijas izlaiŔanu.

AtzÄ«mētājs automatizē darbu ar tiem. Tas izmanto Istio vai AWS App Mesh, lai marÅ”rutētu un pārslēgtu satiksmi, un Prometheus metriku, lai analizētu rezultātus. Turklāt kanārijputnu izvietoÅ”anas analÄ«zi var papildināt ar tÄ«mekļa aizÄ·erēm, lai veiktu pieņemÅ”anas testus, slodzes testus un jebkura cita veida pārbaudes.

Pamatojoties uz Kubernetes izvietoÅ”anu un, ja nepiecieÅ”ams, horizontālo apvidu mērogoÅ”anu (HPA), Flagger izveido objektu kopas (Kubernetes izvietoÅ”ana, ClusterIP pakalpojumi un Istio vai App Mesh virtuālie pakalpojumi), lai analizētu un ieviestu kanārijas izvietoÅ”anu:

IzvietoÅ”anas stratēģijas programmā Kubernetes: ritoŔā, atkārtota, zila/zaļa, kanārijas, tumÅ”a (A/B testÄ“Å”ana)

VadÄ«bas cilpas ievieÅ”ana (vadÄ«bas cilpa),Flagger pakāpeniski pārslēdz trafiku uz Canary serveri, vienlaikus mērot galvenos veiktspējas rādÄ«tājus, piemēram, veiksmÄ«go HTTP pieprasÄ«jumu attiecÄ«bu, vidējo pieprasÄ«juma ilgumu un aplikumu stāvokli. Pamatojoties uz KPI (Key Performance Indicators) analÄ«zi, kanārijputniņŔ vai nu aug, vai sabrÅ«k, un analÄ«zes rezultāti tiek publicēti vietnē Slack. Å Ä« procesa apraksts un demonstrācija ir atrodama materiālā ProgresÄ«va App Mesh piegāde.

IzvietoÅ”anas stratēģijas programmā Kubernetes: ritoŔā, atkārtota, zila/zaļa, kanārijas, tumÅ”a (A/B testÄ“Å”ana)

TumÅ”i (slēpti) vai A/B izvietojumi

Stealth izvietoÅ”ana ir vēl viena Kanāriju stratēģijas variācija (ar kuru, starp citu, var darboties arÄ« Flagger). AtŔķirÄ«ba starp slepeno un kanārijas izvietoÅ”anu ir tāda, ka slepenie izvietojumi ir saistÄ«ti ar priekÅ”galu, nevis ar aizmuguri, piemēram, kanārijputnu izvietoÅ”anu.

Vēl viens Å”o izvietojumu nosaukums ir A/B testÄ“Å”ana. Tā vietā, lai jaunā funkcija bÅ«tu pieejama visiem lietotājiem, tā tiek piedāvāta tikai ierobežotai daļai lietotāju. Parasti Å”ie lietotāji neapzinās, ka ir celmlauži testētājiem (tātad termins "slēptā izvietoÅ”ana").

Funkcionalitātes slēdžu izmantoÅ”ana (funkciju pārslēgÅ”ana) un citiem rÄ«kiem, varat pārraudzÄ«t, kā lietotāji mijiedarbojas ar jauno funkciju, vai tā viņus piesaista, vai jaunais lietotāja interfeiss viņiem Ŕķiet mulsinoÅ”s, kā arÄ« cita veida metriku.

IzvietoÅ”anas stratēģijas programmā Kubernetes: ritoŔā, atkārtota, zila/zaļa, kanārijas, tumÅ”a (A/B testÄ“Å”ana)

AtzÄ«mētājs un A/B izvietoÅ”ana

Papildus uz svaru balstÄ«tai marÅ”rutÄ“Å”anai, Flagger var arÄ« marÅ”rutēt trafiku uz kanārijputnu serveri, pamatojoties uz HTTP parametriem. A/B testÄ“Å”anā varat izmantot HTTP galvenes vai sÄ«kfailus, lai atlasÄ«tu konkrētu lietotāju segmentu. Tas ir Ä«paÅ”i efektÄ«vi priekÅ”gala lietojumprogrammām, kurām nepiecieÅ”ama sesijas saistÄ«Å”ana ar serveri (sesijas radniecÄ«ba). PlaŔāku informāciju var atrast atzÄ«mētāja dokumentācijā.

Autore izsaka pateicību Stefans Prodans, Weaveworks inženieris (un Flagger veidotājs) visiem Ŕiem pārsteidzoŔajiem izvietoŔanas modeļiem.

PS no tulka

Lasi arī mūsu emuārā:

Avots: www.habr.com

Pievieno komentāru