
Kanaldeploy on vÀga tÔhus viis uue koodi testimiseks vÀikese kasutajate alamhulga peal. See vÀhendab oluliselt liiklust, mis vÔib tekitada probleeme juurutamise protsessis, kuna see toimub ainult kindlas alagruppis. See mÀrkus kÀsitleb, kuidas sellist juurutamist Kubernetes ja juurutamise automatiseerimise vahenditega korraldada. Eeldatakse, et teil on vÀhemalt pÔhiline arusaam Helm'ist ja Kubernetes'i ressurssidest..

Lihtne kanaldeploy Kubernetes'is sisaldab kahte peamist ressurssi: teenust ja juurutamisvahendit. Kanaldeploy töötab lĂ€bi ĂŒhe teenuse, mis suhtleb kahe erineva ressursiga, mis teenindavad uuenduste liiklust. Ăks neist ressurssidest töötab "kanal" versiooniga, teine aga stabiilsega. Sel juhul saame reguleerida kanalversioonide arvu, et vĂ€hendada vajaliku teenindatava liikluse mahtu. NĂ€iteks, kui eelistate Yaml'i kasutada, nĂ€eb see Kubernetes'is vĂ€lja jĂ€rgmiselt:
kind: Deployment
metadata:
name: app-canary
labels:
app: app
spec:
replicas: 1
...
image: myapp:canary
---
kind: Deployment
metadata:
name: app
labels:
app: app
spec:
replicas: 5
...
image: myapp:stable
---
kind: Service
selector:
app: app # Selector suunab liikluse mĂ”lemasse juurutusse.Seda varianti on veel lihtsam esitada kubectl'i abil ja on isegi tĂ€ielik juhend selle stsenaariumi jaoks. Kuid selle postituse peamine kĂŒsimus on, kuidas me kavatseme seda protsessi automatiseerida, kasutades Helm'i.
Kanaldeploy automatiseerimine
Esiteks vajame Helm'i chartide kaarti, kuhu on juba lisatud eespool arutatud ressursid. See peaks vÀlja nÀgema umbes nii:
~\/charts\/app
âââ Chart.yaml
âââ README.md
âââ templates
â âââ NOTES.txt
â âââ _helpers.tpl
â âââ deployment.yaml
â âââ service.yaml
âââ values.yamlHelm'i kontseptsiooni aluseks on mitme versiooni haldamine. Stabiilne versioon on meie pĂ”hialgse stabiilse koodiharu. Kuid Helm'i abil saame juurutada kanali vĂ€ljaande koos eksperimentaalse koodiga. Peamine prioriteet on sĂ€ilitada liikluse vahetus stabiilse versiooni ja kanali vĂ€ljaande vahel. Kogu seda haldame spetsiaalse valijaga:
selector:
app.kubernetes.io\/name: myappMeie nii âkanarilĂ”heâ kui ka stable-deploy ressursid osutavad sellele sildile moodulites. Kui kĂ”ik Ă”igesti seadistada, nĂ€eme, et kanariversiooni juurutamise ajal meie Helm charti liiklust suunatakse vĂ€rskelt juurutatud moodulitele. Selle kĂ€su stabiilne versioon nĂ€eb vĂ€lja selline:
helm upgrade
--install myapp
--namespace default
--set app.name=myapp # LĂ€heb app.kubernetes.io/name
--set app.version=v1 # LĂ€heb app.kubernetes.io/version
--set image.tag=stable
--set replicaCount=5NĂŒĂŒd kontrollime meie kanaride vĂ€ljaannet. Kanariversiooni juurutamiseks peame meeles pidama kahte asja. VĂ€ljaande nimi peab olema erinev, et me ei kataks ĂŒle praegust stabiilset versiooni. Versioon ja silt peavad samuti olema erinevad, et saaksime juurutada teistsugust koodi ja mÀÀrata ressursside siltide erinevusi.
helm upgrade
--install myapp-canary
--namespace default
--set app.name=myapp # LĂ€heb app.kubernetes.io/name
--set app.version=v2 # LĂ€heb app.kubernetes.io/version
--set image.tag=canary
--set replicaCount=1Noh, see ongi kÔik! Kui teenust pingida, saab nÀha, et kanaride versiooniuuendus suunab liiklust ainult osa ajast.
Kui otsite juurutamise automatiseerimise tööriistu, mis hĂ”lmavad kirjeldatud loogikat, pöörake tĂ€helepanu ja . Helm chart'id, mida kasutatakse ĂŒlalpool kirjeldatud meetodi rakendamiseks, asuvad GitHubis, . Tegelikult oli see teoreetiline ĂŒlevaade, kuidas praktikas juurutada kanariversioonide automatiseerimist, koos konkreetsete kontseptsioonide ja nĂ€idetega.
Allikas: habr.com
