Lihtne ja turvaline viis kanarbikute kasutuselevÔtu automatiseerimiseks Helmiga

Lihtne ja turvaline viis kanarbikute kasutuselevÔtu automatiseerimiseks Helmiga

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 ja turvaline viis kanarbikute kasutuselevÔtu automatiseerimiseks Helmiga

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 Kubernetes'i dokumentatsioonis 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.yaml

Helm'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: myapp

Meie 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=5

NĂŒĂŒ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=1

Noh, 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 Deliverybot ja Helm automatiseerimise tööriistadele GitHubis. Helm chart'id, mida kasutatakse ĂŒlalpool kirjeldatud meetodi rakendamiseks, asuvad GitHubis, siit. Tegelikult oli see teoreetiline ĂŒlevaade, kuidas praktikas juurutada kanariversioonide automatiseerimist, koos konkreetsete kontseptsioonide ja nĂ€idetega.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster