
Kanarike deployed on hapx markt is an efficient way to test new code with a specific subset of users. It significantly reduces the traffic load that may cause problems during deployment, as it occurs only within a defined subgroup. This note is dedicated to organizing such a deployment using Kubernetes and deployment automation. It is assumed that you have some knowledge of Helm and Kubernetes resources..

A simple canary deployment in Kubernetes involves two key resources: the service itself and the deployment tool. The canary deployment operates through a single service that interacts with two different resources handling update traffic. One of these resources will run with a "canary" version, while the other will handle the stable version. In this scenario, we can regulate the number of canary versions to reduce the amount of traffic that needs to be managed. For example, if you prefer using YAML, it would look like this in Kubernetes:
tĂŒĂŒp: Deployment
metaandmed:
nimi: app-canary
sildid:
rakendus: app
spetsifikatsioon:
koopiad: 1
...
pilt: myapp:canary
---
tĂŒĂŒp: Deployment
metaandmed:
nimi: app
sildid:
rakendus: app
spetsifikatsioon:
koopiad: 5
...
pilt: myapp:stable
---
tĂŒĂŒp: Service
valik:
rakendus: app # Valik suunab liiklust mĂ”lemale deployment'ile.Sellist varianti on veelgi lihtsam ette kujutada kubectl'i abil, kuid on isegi tĂ€ielik juhend selle stsenaariumi kohta. Kuid selle postituse peamine kĂŒsimus on, kuidas me kavatseme seda protsessi automatiseerida, kasutades Helm.
KanarĂŒĂŒde automatiseerimine
Esiteks vajame Helm'i chart'i faili, kuhu on juba lisatud eelnevalt arutatud ressursid. See peaks vÀlja nÀgema umbes nii:
~/charts/app
âââ Chart.yaml
âââ README.md
âââ mallid
â âââ NOTES.txt
â âââ _helpers.tpl
â âââ deployment.yaml
â âââ service.yaml
âââ values.yamlHelm'i kontseptsiooni pĂ”hialus on mitme versiooni haldamine. Stable-versioon on meie pĂ”hja stabiilne koodiharu. Kuid Helm'i abil saame kĂ€ivitada kanarĂŒĂŒsid meie eksperimentaalse koodiga. Peamine on sĂ€ilitada liikluse vahetamine stabiilse versiooni ja kanarĂŒĂŒde vahel. KĂ”ike seda haldame spetsiaalse valijaga:
valija:
app.kubernetes.io/name: myappMeie nii «kanarilistes» kui ka stable-deploy ressurssidest avaldatud mÀrk tÀhistab seda moodulites. Kui kÔik on Ôigesti seadistatud, siis kanariversiooni Helm chart'i avaldamise ajal suunatakse liiklus vÀrskelt juurutatud moodulitele.
helm upgrade
--install myapp
--namespace default
--set app.name=myapp # Go into app.kubernetes.io/name
--set app.version=v1 # Go into app.kubernetes.io/version
--set image.tag=stable
--set replicaCount=5NĂŒĂŒd kontrollime meie kanariversiooni. Kanariversiooni juurutamiseks peame meeles pidama kahte asja. Erinev nimi pĂ”hiversioonist peab olema, et me ei saaks praegusele stable-versioonile uuendust. Versioon ja silt peavad samuti olema erinevad, et saaksime juurutada teist koodi ja mÀÀrata ressursimĂ€rkide erinevused.
helm upgrade
--install myapp-canary
--namespace default
--set app.name=myapp # Go into app.kubernetes.io/name
--set app.version=v2 # Go into app.kubernetes.io/version
--set image.tag=canary
--set replicaCount=1Ja see ongi kÔik! Kui kutsuda teenust, siis nÀeme, et kanariversiooni uuendus suunab liiklust ainult osaliselt ajast.
Kui otsite juurutusautomaatika tööriistu, mis sisaldavad kirjeldatud loogikat, siis tasub tĂ€helepanu pöörata ja . Helmi diagrammid, mida kasutatakse ĂŒlaltoodud meetodi rakendamiseks, asuvad GitHubis, . Ăldiselt oli see teoreetiline ĂŒlevaade sellest, kuidas ellu viia kanarindade versioonide juurutuse automatiseerimist praktikas, koos konkreetsete kontseptsioonide ja nĂ€idetega.
Allikas: habr.com
