Canary Deployment Jenkins-X Istio Flaggerin avulla
Kanarian käyttöönotto
Toivomme, että luet ensimmäinen osa, jossa selitimme lyhyesti, mitä Canary Deployments ovat. Näitimme myös, kuinka se toteutetaan käyttämällä Kubernetesin tavallisia resursseja.
Argo Rollouts
Argo Rollouts on Kubernetesin alkuperäinen käyttöönottoohjain. Se tarjoaa CRD:n (Custom Resource Definition) Kubernetesille. Sen ansiosta voimme käyttää uutta kokonaisuutta: Rollout, joka hallitsee sinivihreitä ja kanariankielisiä käyttöönottoja erilaisilla kokoonpanovaihtoehdoilla.
Mukautetun resurssin käyttämä Argo Rollouts -ohjain Rollout, Mahdollistaa lisäkäyttöönottostrategioiden, kuten sinivihreän ja kanariansaarten käytön Kubernetesille. Resurssi Rollout tarjoaa vastaavan toiminnallisuuden Deployment, vain lisäkäyttöstrategioilla.
resurssi Deployments sillä on kaksi käyttöönottostrategiaa: RollingUpdate и Recreate. Vaikka nämä strategiat soveltuvat useimpiin tapauksiin, erittäin suuren mittakaavan käyttöönotossa palvelimille, käytetään lisästrategioita, kuten sinivihreä tai kanarian, jotka eivät ole käytettävissä käyttöönottoohjaimessa. Käyttääkseen näitä strategioita Kubernetesissa käyttäjien oli kirjoitettava komentosarjat käyttöönottojensa päälle. Argo Rollouts Controller paljastaa nämä strategiat yksinkertaisina, deklaratiivisina, konfiguroitavina parametreina. https://argoproj.github.io/argo-rollouts
Mukana on myös Argo CI, joka tarjoaa kätevän verkkokäyttöliittymän Rollouts-käyttöön. Tarkastelemme sitä seuraavassa artikkelissa.
Infrastruktuurinauriimme (katso alla) olemme jo lisänneet install.yaml:n nimellä i/k8s/argo-rollouts/install.yaml. Näin GitlabCI asentaa sen klusteriin.
Tämä on hyvin yksinkertainen Python+Flask API, joka palauttaa vastauksen JSON-muodossa. Rakennamme paketin GitlabCI:lla ja välitämme tuloksen Gitlab-rekisteriin. Meillä on rekisterissä kaksi erilaista julkaisuversiota:
wuestkamp/k8s-deployment-example-app:v1
wuestkamp/k8s-deployment-example-app:v2
Ainoa ero niiden välillä on palautettu JSON-tiedosto. Käytämme tätä sovellusta visualisoidaksemme mahdollisimman helposti, minkä version kanssa kommunikoimme.
Infrastruktuurin arkisto
Tässä arkistossa käytämme GitlabCI:tä Kubernetesin käyttöönottoon, .gitlab-ci.yml näyttää tältä:
Rollout toimii samalla tavalla kuin käyttöönotto. Jos emme määritä päivitysstrategiaa (kuten Canarya tässä), se käyttäytyy kuin oletusarvoinen jatkuvan päivityksen käyttöönotto.
Määrittelemme yamlissa kaksi vaihetta kanarialaisten käyttöönotolle:
Suosittelen todella tätä videota, se näyttää kuinka Argo Rollouts ja Argo CI toimivat yhdessä:
Koko
Pidän todella ajatuksesta käyttää CRD:itä, jotka hallitsevat lisätyyppisten käyttöönottojen tai replikaattien luomista, liikenteen uudelleenohjausta jne. Työskentely heidän kanssaan sujuu mutkattomasti. Seuraavaksi haluaisin testata integraatiota Argo CI:n kanssa.
Argo CI:n ja Flux CI:n yhdistäminen näyttää kuitenkin olevan tulossa, joten saatan odottaa uuden julkaisun ilmestymistä: Argo Flux.
Onko sinulla kokemusta Argo Rolloutista tai Argo CI:stä?