Kubernetesi vÀljundistrateegiad: rolling, recreate, blue/green, canary, dark (A/B testimine)

MĂ€rkus: See ĂŒlevaatlik materjal Weaveworksilt tutvustab kĂ”ige populaarsemaid rakenduste vĂ€ljundistrateegiaid ning rÀÀgib, kuidas nende rakendamine on vĂ”imalik Kubernetes'i operaatori Flagger abil. Tekst on kirjutatud arusaadavas keeles ja sisaldab visuaalseid skeeme, mis aitavad kĂŒsimust mĂ”ista isegi algajatele inseneridele.

Kubernetesi vÀljundistrateegiad: rolling, recreate, blue/green, canary, dark (A/B testimine)
Skeem on vĂ”etud teisest ĂŒlevaatest rakenduste vĂ€ljundistrateegiatest, mille tegi Container Solutions

Üks suurimaid probleeme cloud native rakenduste arendamisel tĂ€na on vĂ€ljaande kiirus. Mikroteenuste lĂ€henemise korral töötavad arendajad juba tĂ€ielikult moodulaarsete rakendustega ja projekteerivad neid, vĂ”imaldades erinevatel meeskondadel samal ajal koodi kirjutada ja rakenduses muudatusi teha.

LĂŒhemate ja sagedamate vĂ€ljundite eelised on jĂ€rgmised:

  • Turule pÀÀsemise aeg on lĂŒhem.
  • Uued funktsioonid jĂ”uavad kiiremini kasutajateni.
  • Kasutajate tagasiside jĂ”uab kiiremini arendajate meeskonnani. See tĂ€hendab, et meeskond saab funktsioone tĂ€iendada ja probleeme kiiremini lahendada.
  • Arendajate moraal tĂ”useb: rohkem funktsioone arendusprotsessis muudab töö huvitavamaks.


Kuid koos vĂ€ljaande sageduse suurenemisega kasvab ka tĂ”enĂ€osus, et see mĂ”jutab negatiivselt rakenduse usaldusvÀÀrsust vĂ”i kasutajakogemust. SeepĂ€rast on operatsioonimeeskondade ja DevOpsi jaoks oluline ĂŒles ehitada protsessid ja hallata juurutusstrateegiaid viisil, mis vĂ€hendab riski tootele ja kasutajatele. (Rohkem teavet CI/CD torujuhtme automatiseerimise kohta leiate siit.)

Selles publikatsioonis arutame erinevaid juurutusstrateegiaid Kuberneteses, sealhulgas jĂ€rkjĂ€rgulisi juurutusi ja tĂ€iustatud meetodeid, nagu kanarĂŒĂŒde (canary) kasutuselevĂ”tt ja nende variandid.

Juurutamise strateegiad

On mitmeid erinevaid juurutusstrateegiaid, millest saad valida sÔltuvalt eesmÀrgist. NÀiteks vÔib sul tekkida vajadus teha muudatusi mingis keskkonnas edasiseks katsetamiseks, vÔi alamhulgale kasutajatele/klientidele, vÔi vÔib tekkida vajadus viia lÀbi piiratud testimine kasutajatega, enne kui teha mingi funktsioon avalikuks.

JÀrkjÀrguline (rolling) juurutamine

See on Kubernetes'i standardne juurutusstrateegia. See asendab jÀrk-jÀrgult vana versiooni rakenduse pod'id uute versioonidega - ilma klastri seiskamiseta.

Kubernetesi vÀljundistrateegiad: rolling, recreate, blue/green, canary, dark (A/B testimine)

Kubernetes ootab, kuni uued pod'id on tööks valmis (kontrollides neid valmiduskatsete), enne kui vanade kokkupakkumist alustatakse. Kui tekivad probleemid, saab sellise jĂ€rkjĂ€rgulise uuendamise peatada, peatamata kogu klastri tööd. YAML-failis, mis kirjeldab juurutustĂŒĂŒpi, asendab uus pilt vana:

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

JÀrk-jÀrgult uuendamise parameetreid saab tÀpsustada manifestifailis:

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

Recreate (uuesti loomine)

Selles kĂ”ige lihtsamas juurutustĂŒĂŒbis tapetakse vanad pod'id kĂ”ik korraga ja asendatakse uutega:

Kubernetesi vÀljundistrateegiad: rolling, recreate, blue/green, canary, dark (A/B testimine)

Asjakohane manifest nÀeb vÀlja umbes nii:

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

Blue/Green (sinine/roheline juurdamine)

Sinine-roheline juurutamisstrateegia (mida nimetatakse ka punaseks/mustaks) hÔlmab vana (roheline) ja uue (sinine) versiooni rakenduse samaaegset juurutamist. PÀrast mÔlema versiooni paigaldamist saavad tavalised kasutajad juurdepÀÀsu rohelisele, samas kui sinine versioon on QA meeskonnale automaatsete testide tegemiseks saadaval lÀbi eraldi teenuse vÔi otsese portide edastamise:

Kubernetesi vÀljundistrateegiad: rolling, recreate, blue/green, canary, dark (A/B testimine)

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

PĂ€rast seda, kui sinine (uus) versioon on testitud ja selle vĂ€ljalaskmine on heaks kiidetud, lĂŒlitutakse teenuse kasutamisele ning roheline (vana) sulgedakse:

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

Kanareejad (kanareepide juurutamised)

Kanareepide juurutamised sarnanevad sinine-roheline lĂ€henemisega, kuid neid juhitakse paremini ja nad kasutavad progressiivset etapilist lĂ€henemist. Sellesse tĂŒĂŒpi kuuluvad mitmed erinevad strateegiad, sealhulgas "peidetud" kĂ€ivitused ja A/B-testimine.

Seda strateegiat kasutatakse, kui on vaja testida uut funktsionaalsust, reeglina rakenduse tagaplaanil. LĂ€henemise olemus on luua kaks praktiliselt identset serverit: ĂŒks teenindab enamiku kasutajatest, teine, uutega, teenindab vaid vĂ€ikest kasutajate rĂŒhma, mille jĂ€rel vĂ”rreldakse nende tulemusi. Kui kĂ”ik lĂ€heb probleemideta, tutvustatakse uut versiooni jĂ€rk-jĂ€rgult kogu infrastruktuuri.

Kuigi seda strateegiat saab rakendada ainult Kubernetes'e tööriistadega, asendades vanad pod'id uutega, on palju mugavam ja lihtsam kasutada teenuste vÔrgustikku nagu Istio.

NÀiteks vÔib teil olla kaks erinevat manifesti Git'is: tavapÀrane versioon sildiga 0.1.0 ja "kananÀidise" versioon sildiga 0.2.0. Muutes Istio virtuaalse vÀrava manifestis kaalu, saab hallata liikluse jaotust nende kahe kasutuselevÔtu vahel:

Kubernetesi vÀljundistrateegiad: rolling, recreate, blue/green, canary, dark (A/B testimine)

KÀesolevas dokumendis on samm-sammuline juhend kanaaride kasutuselevÔttude rakendamiseks Istio abil GitOps Workflow'id koos Istio'ga. (MÀrk. tÔlge.: Samuti tÔlkisime materjali kanaaride kasutuselevÔttude kohta Istio's siit.)

Kanaaride kasutuselevÔtud Weaveworks Flagger'iga

Weaveworks Flagger vÔimaldab hÔlpsasti ja tÔhusalt hallata kanarooli vÀljaandeid.

Flagger automatiseerib nende töötluse. See kasutab Istio vĂ”i AWS App Mesh'i liikluse suunamiseks ja vahetamiseks ning Prometheuse statistikat tulemuste analĂŒĂŒsimiseks. Lisaks saab kanarooli vĂ€ljaannete analĂŒĂŒsi tĂ€iendada veebihook'idega, et lĂ€bi viia aktsepteerimisteste, koormusteste ja muid kontrolle.

Kubernetes'i vĂ€ljade pĂ”hjal ja vajadusel konteinerite (pod'ide) horisontaalse skaleerimisega (HPA) loob Flagger Kubernetes'e objektide komplektid (Kubernetes'i vĂ€ljad, ClusterIP teenused ja virtuaalsed teenused Istio vĂ”i App Mesh) analĂŒĂŒsiks ja kanarooli vĂ€ljaannete rakendamiseks.

Kubernetesi vÀljundistrateegiad: rolling, recreate, blue/green, canary, dark (A/B testimine)

Rakendades juhtimiskontuuri (kontrolli silmus), Flagger suunab jĂ€rk-jĂ€rgult liikluse kanarooli serverisse, samal ajal mÔÔtes vĂ”tme jĂ”udlusnĂ€itajaid nagu edukaid HTTP-pĂ€ringute osakaal, keskmine pĂ€ringu kestus ja pod'ide seisund. KPI (vĂ”tme jĂ”udlusnĂ€itajate) analĂŒĂŒsi pĂ”hjal kas kanarooli osa kasvab vĂ”i vĂ€heneb ning analĂŒĂŒsi tulemused avaldatakse Slackis. Selle protsessi kirjelduse ja demonstreerimise leiate materjalist. Progressiivne kohaletoimetamine App Mesh'i jaoks.

Kubernetesi vÀljundistrateegiad: rolling, recreate, blue/green, canary, dark (A/B testimine)

Tumedad (salajased) vÔi A/B-deploy'd

Salajane deploy on veel ĂŒks kanaristrateegia variatsioon (mille puhul suudab Flagger samuti toimida). Erinevus salajase ja kanarise deploy vahel seisneb selles, et salajased deploy'd tegelevad esiplaaniga, mitte tagaplaaniga, nagu kanarisĂŒsteem.

Need deploy'd on tuntud ka kui A/B-testimine. Selle asemel, et avada uus funktsioon kĂ”igile kasutajatele, pakutakse seda vaid piiratud osale. TĂŒĂŒpiliselt ei tea need kasutajad, et nad on pioneeritestidest (seetĂ”ttu ka termin 'salajane deploy').

Funktsionaalsuse lĂŒlitite abil (feature toggles) ja teiste tööriistade abil saab jĂ€lgida, kuidas kasutajad suhtlevad uue funktsiooniga, kas see köidab neid vĂ”i peavad nad uut kasutajaliidest segaseks, ning muid tĂŒĂŒpe metrikat.

Kubernetesi vÀljundistrateegiad: rolling, recreate, blue/green, canary, dark (A/B testimine)

Flagger ja A/B-deploy'd

Lisaks kaalu arvestavale suunamisele saab Flagger suunata kanarieserverile ka HTTP parameetrite pĂ”hjal. A/B-testimise korral saab kasutada HTTP pĂ€iseid vĂ”i kĂŒpsiseid, et suunata kindlat kasutajasegmenti. See on eriti tĂ”hus frontend-rakenduste puhul, mis nĂ”uavad sessiooni kinnitamist serveriga. (sessiooni kinnitamine). TĂ€iendavat teavet leiate Flaggeri dokumentatsioonist.

Autor tÀnab Stefan Prodanit, Weaveworksi inseneri (ja Flaggeri looja), kÔigi nende hÀmmastavate juurutusdiagrammide eest.

P.S. tÔlkija mÀrkused

Lugege ka meie blogist:

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster