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.

Skeem on vÔetud 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 .)
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.

Kubernetes ootab, kuni uued pod'id on tööks valmis (kontrollides neid ), 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: 8080JÀ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:

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:

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 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:

KÀesolevas dokumendis on samm-sammuline juhend kanaaride kasutuselevÔttude rakendamiseks Istio abil . (MÀrk. tÔlge.: Samuti tÔlkisime materjali kanaaride kasutuselevÔttude kohta Istio's .)
Kanaaride kasutuselevÔtud Weaveworks Flagger'iga
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.

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. .

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.

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 , 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
