MĂ€rkus tĂ”lkes: See ĂŒlevaatlik materjal Weaveworksilt tutvustab kĂ”ige populaarsemaid rakenduste vĂ€ljaandmise strateegiaid ja selgitab, kuidas rakendada kĂ”ige arenenumaid neist Kubernetesi operaatori Flaggeriga. See on kirjutatud lihtsas keeles ja sisaldab visuaalseid skeeme, mis aitavad mĂ”ista teemat isegi algajatel inseneridel.

Skeem on pÀrit vÀljandusstrateegiate kohta, mille on koostanud Container Solutions
Ăks suurimaid probleeme tĂ€napĂ€eva pilvaseente rakenduste arendamisel on vĂ€ljaande kiirus. Mikroteenuste lĂ€henemisviisis töötavad arendajad juba tĂ€iesti modulaarsete rakendustega ja kavandavad neid, vĂ”imaldades erinevatele meeskondadele samal ajal koodi kirjutada ja rakenduses muudatusi teha.
LĂŒhematel ja sagedasematel vĂ€ljaannetel on jĂ€rgmised eelised:
- LĂŒhendatakse turule jĂ”udmise aega.
- 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 motivatsioon tÔuseb: rohkemate funktsioonide arendamisel on huvitavam töötada.
Aga vÀljaannete sageduse suurenedes tÔuseb ka risk, et see vÔib negatiivselt mÔjutada rakenduse usaldusvÀÀrsust vÔi kasutajakogemust. Just seetÔttu on tegevus- ja DevOps-meeskondade jaoks oluline ehitada protsessid ja hallata vÀljaandmisstrateegiaid nii, et minimeerida riske tootele ja kasutajatele. (Lisainfot CI/CD töövoogude automatiseerimise kohta leiate .)
Selles publikatsioonis arutame erinevaid vÀljaandmisstrateegiaid Kubernetesis, sealhulgas jÀrk-jÀrgulisi vÀljaandeid ja arenenumaid meetodeid, nagu kanarivÀljaanded ja nende variatsioonid.
Juurutamisstrateegiad
On olemas mitmeid erinevaid vÀljaandmisstrateegiaid, mida saab kasutada sÔltuvalt eesmÀrgist. NÀiteks vÔite vajada muudatusi mingis keskkonnas edasiseks testimiseks, vÔi alagrupis kasutajatest/klientidest, vÔi vÔib olla vajalik teostada piiratud testimine kasutajate seas enne mÔne funktsiooni avalikustamist.
Rolling (jĂ€rkjĂ€rguline, âĂŒlesehitavâ vĂ€ljaanne)
See on Kubernetes'i standardne juurutamisstrateegia. See vahetab jĂ€rk-jĂ€rgult, ĂŒks haaval, vanade rakenduse versiooniga pod'id uute versiooniga pod'ide vastu - ilma klastris seisakut tekitamata.

Kubernetes ootab, kuni uued pod'id on tööks valmis (kontrollides neid ), enne kui alustatakse vanade sulgemist. Kui tekib probleem, saab sellise jĂ€rkjĂ€rgulise uuendamise katkestada, peatamata kogu klastrit. YAML-failis, mis kirjeldab juurutamise tĂŒĂŒ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: 8080JÀrkjÀrgulise uuendamise parameetreid saab tÀpsustada maniifestifailis:
spec:
replicas: 3
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
template:
...
Recreate (uuesti loomine)
Selles kĂ”ige lihtsamas juurutamise tĂŒĂŒbis tapetakse vanad pod'id kĂ”ik korraga ja asendatakse uutega:

Asjakohane maniifesteeritud nÀeb vÀlja ligikaudu nii:
spec:
replicas: 3
strategy:
type: Recreate
template:
...Blue/Green (sinine/roheline juurutamine)
Sinise-kase juurutamise strateegia (mĂ”nikord nimetatakse seda ka punase/musta sĂŒsteemiks) hĂ”lmab vana (rohelise) ja uue (sinise) versiooni rakenduse samaaegset juurutamist. PĂ€rast mĂ”lema versiooni paigutamist saavad tavakasutajad juurdepÀÀsu rohelisele, samal ajal kui sinine on kĂ€tketud QA meeskonnale automaatsete testide lĂ€biviimiseks lĂ€bi eraldi teenuse vĂ”i otseportide suunamise:

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 release on heaks kiidetud, lĂŒlitatakse teenus sellele ĂŒle, samal ajal kui roheline (vana) suletakse:
apiVersion: v1
kind: Service
metadata:
name: awesomeapp
spec:
selector:
app: awesomeapp
version: "02"
...Canary (kanaride juurutamine)
Kanari juurutamised on sarnased sinise-rohelise sĂŒsteemiga, kuid paremini hallatud ja kasutavad jĂ€rkjĂ€rgulist lĂ€henemist. Sellesse tĂŒĂŒpi kuulub mitmeid erinevaid strateegiaid, sealhulgas âvarjatudâ kĂ€ivitamised ja A/B testimine.
Seda strateegiat rakendatakse, kui on vajalik testida uut funktsionaalsust, tavaliselt rakenduse tagapool. LĂ€henemise olemus seisneb kahe praktiliselt identse serveri loomises: ĂŒks teenindab peaaegu kĂ”iki kasutajaid, samas kui teine, uute funktsioonidega, teenindab vaid vĂ€ikest alagruppi kasutajatest, mille jĂ€rel vĂ”rreldakse nende töö tulemusi. Kui kĂ”ik lĂ€heb ladusalt, viiakse uus versioon jĂ€rk-jĂ€rgult kogu infrastruktuuri.
Kuigi seda strateegiat saab teostada ainult Kubernetes'e vahenditega, asendades vanad pod'id uute vastu, on palju mugavam ja lihtsam kasutada teenuste mesh'i nagu Istio.
NÀiteks vÔivad teil olla kaks erinevat manifesti Git'is: tavaline versioon sildiga 0.1.0 ja "kanaari" versioon sildiga 0.2.0. Muutes kaalu Istio virtuaalses vÀravas, saab hallata liikluse jaotust nende kahe deployment'i vahel:

Samm-sammuline juhend kanaari deployment'ide rakendamiseks Istio abil leiate materjalist . (MÀrkus tÔlke kohta.: Oleme samuti tÔlkinud materjali kanaari vÀljalaskmise kohta Istios .)
Kanaari deployment'id Weaveworks Flagger'iga
vÔimaldab hÔlpsasti ja tÔhusalt hallata kanaari vÀljalaskmisi.
Flagger automatiseerib nendega töötamise. See kasutab liikumise ja liikluse suunamise jaoks Istio vĂ”i AWS App Mesh'i ning tulemuste analĂŒĂŒsimiseks Prometheuse mÔÔdikuid. Lisaks saab kanaari deployment'ide analĂŒĂŒsi tĂ€iendada veebiluhtidega vastuvĂ”tu testide, koormustestide ja muude kontrollide lĂ€biviimiseks.
Kubernetes'i deployment'i ja vajadusel pod'ide horisontaalse skalimise (HPA) alusel loob Flagger objektide kogumeid (Kubernetes'i deployment'id, ClusterIP teenused ja Istio vĂ”i App Mesh'i virtuaalsed teenused) kanaari deployment'ide analĂŒĂŒside ja rakendamise jaoks:

Rakendades juhtimistsĂŒklit (control loop), suunab Flagger jĂ€rk-jĂ€rgult liikluse kanaari serverile, samas mÔÔtes vĂ”tmenĂ€itajate, nĂ€iteks edukate HTTP-pĂ€ringute osakaalu, keskmise pĂ€ringu kestuse ja pod'ide tervise nĂ€itajaid. KPI (vĂ”tmenĂ€itajate) analĂŒĂŒsi pĂ”hjal kanaari osa kas tĂ”useb vĂ”i langeb, ning analĂŒĂŒsi tulemused avaldatakse Slackis. Selle protsessi kirjelduse ja demonstrooimis saate leida materjalist .

Tume (peidetud) vÔi A/B-juhtimised
Peidetud juurdevĂ”tt on veel ĂŒks kanarbiku strateegia variatsioon (mille jaoks vĂ”ib Flagger samuti töötada). Erinevus peidetud ja kanarbiku juurdevĂ”tte vahel on see, et peidetud juurdevĂ”tt tegeleb esikĂŒljega, mitte tagakĂŒljega, nagu kanarbiku.
Teine nimi nendele juurdevÔttedele on A/B-testimine. Selle asemel, et avada uue funktsiooni juurdevÔtt kÔigile kasutajatele, pakutakse seda ainult piiratud osale neist. Tavaline on, et need kasutajad ei tea, et nad on esimesena testijad (seetÔttu ka termin "peidetud juurdevÔtt").
Funktsionaalsuse lĂŒlitite kaudu (feature toggles) ja teiste tööriistade abil saab jĂ€lgida, kuidas kasutajad uue funktsiooniga suhtlevad, kas see köidab neid vĂ”i peavad nad uut kasutajaliidest segaseks, ja muid mÔÔdikuid.

Flagger ja A/B-juurdevÔtted
Lisaks kaalu pĂ”hjal suunamisele vĂ”ib Flagger samuti suunata kanarbiku serverisse liiklust sĂ”ltuvalt HTTP parameetritest. A/B-testimisel saab kasutada HTTP pealkirju vĂ”i kĂŒpsiseid teatud kasutajasegmendi suunamiseks. See on eriti tĂ”hus esikĂŒljel rakenduste puhul, mis nĂ”uavad seansi seotust serveriga (session affinity). TĂ€iendavat teavet leiate Flaggeri dokumentatsioonist.
Autor tÀnab , Weaveworksi inseneri (ja Flaggeri looja), kÔikide nende hÀmmastavate juurutusskeemide eest.
P.S. tÔlkijalt
Lugege ka meie blogist:
- «»;
- «»;
- «»;
- «».
Allikas: habr.com
