Við vonum að þú lesir fyrri hluti, þar sem við útskýrðum stuttlega hvað Canary Deployments eru. Við sýndum líka hvernig á að innleiða það með því að nota staðlaða Kubernetes auðlindir.
Argo útgáfur
Argo Rollouts er innfæddur Kubernetes dreifingarstýring. Það veitir CRD (Custom Resource Definition) fyrir Kubernetes. Þökk sé því getum við notað nýja einingu: Rollout, sem stjórnar blágrænum og kanarí-uppfærslum með ýmsum stillingarvalkostum.
Argo Rollouts stjórnandi notaður af sérsniðnu tilfangi Rollout, Gerir ráð fyrir frekari dreifingaraðferðum eins og blágrænum og kanarí fyrir Kubernetes. Auðlind Rollout veitir samsvarandi virkni Deployment, aðeins með frekari dreifingaraðferðum.
úrræði Deployments hefur tvær aðferðir fyrir dreifingu: RollingUpdate и Recreate. Þó að þessar aðferðir henti í flestum tilfellum, til dreifingar á netþjóna í mjög stórum stíl, eru viðbótaraðferðir notaðar, eins og blágrænn eða kanarífugl, sem eru ekki tiltækar í dreifingarstýringunni. Til að nota þessar aðferðir í Kubernetes þurftu notendur að skrifa forskriftir ofan á dreifinguna sína. Argo Rollouts Controller afhjúpar þessar aðferðir sem einfaldar, lýsandi, stillanlegar færibreytur. https://argoproj.github.io/argo-rollouts
Það er líka Argo CI, sem veitir þægilegt vefviðmót til notkunar með Rollouts, við munum skoða það í næstu grein.
Í innviðarófu okkar (sjá hér að neðan) höfum við þegar bætt install.yaml við sem i/k8s/argo-rollouts/install.yaml. Þannig mun GitlabCI setja það upp í þyrpinguna.
Þetta er mjög einfalt Python+Flask API sem skilar svari sem JSON. Við munum byggja pakkann með því að nota GitlabCI og ýta niðurstöðunni í Gitlab Registry. Í skránni höfum við tvær mismunandi útgáfur:
wuestkamp/k8s-deployment-example-app:v1
wuestkamp/k8s-deployment-example-app:v2
Eini munurinn á milli þeirra er JSON skráin sem skilað er. Við notum þetta forrit til að sjá eins auðveldlega og mögulegt er hvaða útgáfu við erum í samskiptum við.
Innviðageymsla
Í þessari geymslu munum við nota GitlabCI fyrir dreifingu á Kubernetes, .gitlab-ci.yml lítur svona út:
Rollout virkar á sama hátt og Deployment. Ef við setjum ekki uppfærslustefnu (eins og Canary hér) mun hún hegða sér eins og sjálfgefna uppfærsluuppfærslu.
Við skilgreinum tvö skref í yaml fyrir dreifingu kanarífugla:
10% af umferð til Kanarí (bíddu eftir handvirkt OK)
50% umferð til Kanarí (bíddu í 2 mínútur og haltu síðan áfram í 100%)
Framkvæmir fyrstu dreifingu
Eftir fyrstu dreifingu munu auðlindir okkar líta svona út:
Og við fáum aðeins svar frá fyrstu útgáfu forritsins:
Framkvæmir Canary Deployment
Skref 1: 10% umferð
Til að hefja dreifingu kanarífugla þurfum við bara að breyta myndútgáfunni eins og við gerum venjulega með dreifingu:
Ég mæli virkilega með þessu myndbandi, það sýnir hvernig Argo Rollouts og Argo CI vinna saman:
Samtals
Mér líkar mjög við hugmyndina um að nota CRD sem stjórna stofnun viðbótartegunda dreifingar eða afrita, endurbeina umferð osfrv. Vinna með þeim gengur snurðulaust fyrir sig. Næst langar mig að prófa samþættinguna við Argo CI.
Hins vegar virðist vera stór samruni Argo CI og Flux CI að koma, svo ég gæti beðið þar til nýja útgáfan kemur út: Argo Flux.