Kanári bevetés a Jenkins-X Istio Flagger használatával
Kanári bevetés
Reméljük, olvassa első rész, ahol röviden elmagyaráztuk, mi is az a Canary Deployments. Megmutattuk azt is, hogyan kell megvalósítani szabványos Kubernetes-erőforrásokkal.
Argo Rollouts
Az Argo Rollouts a Kubernetes natív telepítési vezérlője. CRD-t (Custom Resource Definition) biztosít a Kubernetes számára. Ennek köszönhetően egy új entitást használhatunk: Rollout, amely különféle konfigurációs opciókkal kezeli a kék-zöld és a kanári telepítéseket.
Egyéni erőforrás által használt Argo Rollouts vezérlő Rollout, Lehetővé teszi további telepítési stratégiák alkalmazását, például a kék-zöld és a canary a Kubernetes számára. Forrás Rollout egyenértékű funkcionalitást biztosít Deployment, csak további telepítési stratégiákkal.
forrás Deployments két stratégiája van a telepítéshez: RollingUpdate и Recreate. Bár ezek a stratégiák a legtöbb esetben megfelelőek, nagyon nagy léptékű kiszolgálókra történő telepítéshez, további stratégiákat használnak, például kék-zöld vagy kanári, amelyek nem érhetők el a telepítési vezérlőben. E stratégiák Kubernetesben való használatához a felhasználóknak szkripteket kellett írniuk a telepítéseik tetejére. Az Argo Rollouts Controller ezeket a stratégiákat egyszerű, deklaratív, konfigurálható paraméterekként jeleníti meg. https://argoproj.github.io/argo-rollouts
Létezik továbbá az Argo CI is, amely kényelmes webes felületet biztosít a Rollouts használatához, ezt a következő cikkben nézzük meg.
Ez egy nagyon egyszerű Python+Flask API, amely JSON-ként ad vissza választ. A csomagot a GitlabCI segítségével készítjük, és az eredményt a Gitlab Registry-be küldjük. A rendszerleíró adatbázisban két különböző kiadási verzió található:
wuestkamp/k8s-deployment-example-app:v1
wuestkamp/k8s-deployment-example-app:v2
Az egyetlen különbség köztük a visszaadott JSON-fájl. Ezzel az alkalmazással a lehető legegyszerűbben vizualizáljuk, hogy melyik verzióval kommunikálunk.
Infrastruktúra adattár
Ebben a tárolóban a GitlabCI-t fogjuk használni a Kubernetes rendszerbe történő telepítéshez, a .gitlab-ci.yml így néz ki:
Rollout ugyanúgy működik, mint a telepítés. Ha nem állítunk be frissítési stratégiát (mint itt a canary), az alapértelmezett gördülő frissítési telepítésként fog működni.
A yamlban két lépést határozunk meg a kanári telepítéshez:
A kanári forgalom 10%-a (várja meg a kézi OK-t)
50%-os forgalom a kanári felé (várjon 2 percet, majd folytassa a 100%-ot)
Kezdeti telepítés végrehajtása
A kezdeti üzembe helyezés után erőforrásaink így fognak kinézni:
És csak az alkalmazás első verziójából kapunk választ:
Kanári bevetés végrehajtása
1. lépés: 10% forgalom
A Canary telepítés elindításához csak a képverziót kell módosítanunk, ahogy azt általában a telepítéseknél tesszük:
Nagyon ajánlom ezt a videót, megmutatja, hogyan működik együtt az Argo Rollouts és az Argo CI:
Teljes
Nagyon szeretem a CRD-k használatát, amelyek további telepítési típusok vagy replikátumok létrehozását, a forgalom átirányítását stb. A velük való munka zökkenőmentesen megy. Ezután szeretném tesztelni az Argo CI-vel való integrációt.
Úgy tűnik azonban, hogy az Argo CI és a Flux CI egy nagy összeolvadás következik, így lehet, hogy megvárom az új kiadás megjelenését: Argo Flux.
Van tapasztalatod az Argo Rollouts vagy az Argo CI használatáról?