Tikimės, kad perskaitėte pirma dalis, kur trumpai paaiškinome, kas yra Canary Deployments. Taip pat parodėme, kaip tai įgyvendinti naudojant standartinius Kubernetes išteklius.
Argo Rollouts
„Argo Rollouts“ yra vietinis „Kubernetes“ diegimo valdiklis. Tai suteikia Kubernetes CRD (Custom Resource Definition). Jo dėka galime naudoti naują objektą: Rollout, kuri valdo mėlynai žalią ir kanarinę dislokaciją su įvairiomis konfigūravimo parinktimis.
„Argo Rollouts“ valdiklis, naudojamas tinkintų išteklių Rollout, Leidžia naudoti papildomas Kubernetes diegimo strategijas, pvz., mėlynai žalią ir kanarinę. Išteklius Rollout suteikia funkcionalumo ekvivalentą Deployment, tik su papildomomis diegimo strategijomis.
išteklių Deployments turi dvi diegimo strategijas: RollingUpdate и Recreate. Nors šios strategijos yra tinkamos daugeliu atvejų, diegiant serveriuose labai dideliu mastu, naudojamos papildomos strategijos, tokios kaip mėlynai žalia arba kanarinė, kurių nėra diegimo valdiklyje. Norėdami naudoti šias strategijas „Kubernetes“, vartotojai turėjo parašyti scenarijus savo diegimo viršuje. „Argo Rollouts Controller“ pateikia šias strategijas kaip paprastus, deklaratyvius, konfigūruojamus parametrus. https://argoproj.github.io/argo-rollouts
Taip pat yra „Argo CI“, kuri suteikia patogią žiniatinklio sąsają naudoti su „Rollouts“, pažvelgsime į tai kitame straipsnyje.
Tai labai paprasta Python+Flask API, kuri atsakymą pateikia kaip JSON. Mes sukursime paketą naudodami GitlabCI ir perkelsime rezultatą į Gitlab registrą. Registre turime dvi skirtingas leidimo versijas:
wuestkamp/k8s-deployment-example-app:v1
wuestkamp/k8s-deployment-example-app:v2
Vienintelis skirtumas tarp jų yra grąžintas JSON failas. Naudojame šią programą norėdami kuo lengviau įsivaizduoti, su kuria versija bendraujame.
Infrastruktūros saugykla
Šioje saugykloje naudosime GitlabCI diegti Kubernetes, .gitlab-ci.yml atrodo taip:
Rollout veikia taip pat kaip diegimas. Jei nenustatysime naujinimo strategijos (kaip čia canary), ji veiks kaip numatytasis nuolatinio atnaujinimo diegimas.
Mes apibrėžiame du „yaml“ kanalo diegimo etapus:
10 % eismo į Kanarų salą (palaukite rankiniu būdu Gerai)
50% srauto į Kanarų salą (palaukite 2 minutes, tada tęskite iki 100%)
Pradinis diegimas
Po pradinio diegimo mūsų ištekliai atrodys taip:
Ir mes gauname atsakymą tik iš pirmosios programos versijos:
Atlieka Kanarų dislokavimą
1 veiksmas: 10 % srauto
Norėdami pradėti Canary diegimą, mums tereikia pakeisti vaizdo versiją, kaip paprastai darome su diegimu:
Tikrai rekomenduoju šį vaizdo įrašą, kuriame parodyta, kaip Argo Rollouts ir Argo CI veikia kartu:
Visas
Man labai patinka idėja naudoti CRD, kurios valdo papildomų tipų diegimo ar replikacijų kūrimą, srauto peradresavimą ir pan. Darbas su jais vyksta sklandžiai. Toliau norėčiau išbandyti integraciją su Argo CI.
Tačiau panašu, kad artėja didelis Argo CI ir Flux CI susijungimas, todėl galiu palaukti, kol pasirodys naujas leidimas: Argo Flux.
Ar turėjote patirties su Argo Rollouts ar Argo CI?
Taip pat skaitykite kitus mūsų tinklaraščio straipsnius: