Loodame, et loed esimene osa, kus selgitasime lühidalt, mis on Canary Deployments. Samuti näitasime, kuidas seda standardsete Kubernetese ressursside abil rakendada.
Argo Rollouts
Argo Rollouts on Kubernetese juurutuskontroller. See pakub Kubernetese jaoks CRD-d (kohandatud ressursi määratlus). Tänu sellele saame kasutada uut olemit: Rollout, mis haldab erinevate konfiguratsioonivalikutega sini-rohelist ja kanaari juurutamist.
Argo Rolloutsi kontroller, mida kasutab kohandatud ressurss Rollout, Võimaldab Kubernetese jaoks täiendavaid juurutamisstrateegiaid, nagu sinine-roheline ja kanaarilind. Ressurss Rollout pakub samaväärset funktsionaalsust Deployment, ainult täiendavate juurutusstrateegiatega.
ressurss Deployments on kaks juurutamisstrateegiat: RollingUpdate и Recreate. Kuigi need strateegiad sobivad enamikul juhtudel, kasutatakse väga suures mahus serveritesse juurutamiseks täiendavaid strateegiaid, näiteks sini-rohelist või kanaari värvi, mis pole juurutamise kontrolleris saadaval. Nende strateegiate kasutamiseks Kubernetes pidid kasutajad oma juurutuste peale kirjutama skripte. Argo Rollouts Controller paljastab need strateegiad lihtsate, deklaratiivsete ja konfigureeritavate parameetritena. https://argoproj.github.io/argo-rollouts
Samuti on Argo CI, mis pakub Rolloutsiga kasutamiseks mugavat veebiliidest, seda vaatame järgmises artiklis.
See on väga lihtne Python+Flask API, mis tagastab vastuse JSON-ina. Ehitame paketi GitlabCI abil ja edastame tulemuse Gitlabi registrisse. Registris on meil kaks erinevat väljalaskeversiooni:
wuestkamp/k8s-deployment-example-app:v1
wuestkamp/k8s-deployment-example-app:v2
Ainus erinevus nende vahel on tagastatud JSON-fail. Kasutame seda rakendust, et võimalikult lihtsalt visualiseerida, millise versiooniga me suhtleme.
Infrastruktuuri hoidla
Selles hoidlas kasutame Kubernetes juurutamiseks GitlabCI-d, .gitlab-ci.yml näeb välja selline:
Rollout töötab samamoodi nagu juurutamine. Kui me värskendusstrateegiat ei määra (nagu siin Canary), käitub see nagu vaikimisi jooksva värskenduse juurutamine.
Kanaari juurutamiseks määratleme yamlis kaks sammu:
10% liiklusest kanaari saarele (oodake käsitsi OK)
50% liiklusest kanaari saarele (oodake 2 minutit ja jätkake 100%)
Esialgse juurutamise teostamine
Pärast esialgset kasutuselevõttu näevad meie ressursid välja järgmised:
Ja vastuse saame ainult rakenduse esimesest versioonist:
Kanaari juurutamine
1. samm: 10% liiklust
Kanaari juurutamise alustamiseks peame lihtsalt muutma pildiversiooni, nagu tavaliselt juurutuste puhul:
Ma tõesti soovitan seda videot, see näitab, kuidas Argo Rollouts ja Argo CI koos töötavad:
Summaarne
Mulle väga meeldib idee kasutada CRD-sid, mis haldavad täiendavat tüüpi juurutuste või replikaatide loomist, liikluse ümbersuunamist jne. Töö nendega läheb sujuvalt. Järgmisena tahaksin testida integratsiooni Argo CI-ga.
Siiski näib, et tulemas on Argo CI ja Flux CI suur ühinemine, nii et võin oodata, kuni uus väljaanne ilmub: Argo Flux.
Kas teil on olnud kogemusi Argo Rolloutsi või Argo CI-ga?