Doufáme, že čtete první díl, kde jsme si krátce vysvětlili, co to Canary Deployments jsou. Ukázali jsme také, jak jej implementovat pomocí standardních zdrojů Kubernetes.
Zavádění Argo
Argo Rollouts je nativní řadič nasazení Kubernetes. Poskytuje CRD (Custom Resource Definition) pro Kubernetes. Díky tomu můžeme použít novou entitu: Rollout, který spravuje modrozelená a kanárková nasazení s různými možnostmi konfigurace.
Řadič Argo Rollouts používaný vlastním zdrojem Rollout, Umožňuje další strategie nasazení, jako je modrozelená a kanárková pro Kubernetes. Zdroj Rollout poskytuje ekvivalentní funkčnost Deployment, pouze s dalšími strategiemi nasazení.
prostředky Deployments má dvě strategie nasazení: RollingUpdate и Recreate. Ačkoli jsou tyto strategie vhodné pro většinu případů, pro nasazení na servery ve velmi velkém měřítku se používají další strategie, jako je modrozelená nebo kanárková, které nejsou k dispozici v řadiči nasazení. Aby uživatelé mohli používat tyto strategie v Kubernetes, museli psát skripty nad rámec svých nasazení. Argo Rollouts Controller odhaluje tyto strategie jako jednoduché, deklarativní a konfigurovatelné parametry. https://argoproj.github.io/argo-rollouts
Existuje také Argo CI, které poskytuje pohodlné webové rozhraní pro použití s Rollouts, na to se podíváme v příštím článku.
Do naší infrastruktury tuřín (viz níže) jsme již přidali install.yaml jako i/k8s/argo-rollouts/install.yaml. Tímto způsobem jej GitlabCI nainstaluje do clusteru.
Toto je velmi jednoduché Python+Flask API, které vrací odpověď jako JSON. Balíček vytvoříme pomocí GitlabCI a výsledek pošleme do registru Gitlab. V registru máme dvě různé verze vydání:
wuestkamp/k8s-deployment-example-app:v1
wuestkamp/k8s-deployment-example-app:v2
Jediný rozdíl mezi nimi je vrácený soubor JSON. Tuto aplikaci používáme k co nejjednodušší vizualizaci, se kterou verzí komunikujeme.
Infrastrukturní úložiště
V tomto úložišti použijeme GitlabCI pro nasazení do Kubernetes, .gitlab-ci.yml vypadá takto:
Toto video opravdu doporučuji, ukazuje, jak Argo Rollouts a Argo CI spolupracují:
Celkový
Opravdu se mi líbí myšlenka použití CRD, která spravují vytváření dalších typů nasazení nebo replikací, přesměrování provozu atd. Práce s nimi jde hladce. Dále bych chtěl otestovat integraci s Argo CI.
Zdá se však, že se blíží velká fúze Argo CI a Flux CI, takže bych mohl počkat, až vyjde nová verze: Argo Flux.
Máte nějaké zkušenosti s Argo Rollouts nebo Argo CI?