Ni esperas, ke vi legas unua parto, kie ni mallonge klarigis kio estas Kanariaj Deplojoj. Ni ankaŭ montris kiel efektivigi ĝin uzante normajn rimedojn de Kubernetes.
Argo-Elvolviĝoj
Argo Rollouts estas denaska deplojregilo de Kubernetes. Ĝi provizas CRD (Persona Rimeda Difino) por Kubernetes. Danke al ĝi, ni povas uzi novan enton: Rollout, kiu administras bluverdajn kaj kanariajn deplojojn kun diversaj agordaj elektoj.
Argo Rollouts-regilo uzata de kutima rimedo Rollout, Ebligas pliajn deplojajn strategiojn kiel bluverda kaj kanaria por Kubernetes. Rimedo Rollout provizas ekvivalentan funkciecon Deployment, nur kun kromaj deplojstrategioj.
rimedo Deployments havas du strategiojn por deplojo: RollingUpdate и Recreate. Kvankam ĉi tiuj strategioj taŭgas por la plej multaj kazoj, por deplojo al serviloj sur tre granda skalo, kromaj strategioj estas uzataj, kiel bluverda aŭ kanaria, kiuj ne estas disponeblaj en la Deploja regilo. Por uzi ĉi tiujn strategiojn en Kubernetes, uzantoj devis skribi skriptojn aldone al siaj Deplojoj. La Argo Rollouts Controller elmontras ĉi tiujn strategiojn kiel simplajn, deklarajn, agordeblajn parametrojn. https://argoproj.github.io/argo-rollouts
Ankaŭ ekzistas Argo CI, kiu disponigas oportunan interfacon por uzi kun Rollouts, ni rigardos tion en la sekva artikolo.
Ĉi tio estas tre simpla Python+Flask API, kiu resendas respondon kiel JSON. Ni konstruos la pakaĵon uzante GitlabCI kaj puŝos la rezulton al la Gitlab-Registro. En la registro ni havas du malsamajn eldonversiojn:
wuestkamp/k8s-deployment-example-app:v1
wuestkamp/k8s-deployment-example-app:v2
La nura diferenco inter ili estas la JSON-dosiero resendita. Ni uzas ĉi tiun aplikaĵon por vidi kiel eble plej facile, kun kiu versio ni komunikas.
Infrastruktura deponejo
En ĉi tiu deponejo ni uzos GitlabCI por deplojo al Kubernetes, .gitlab-ci.yml aspektas jene:
Rollout funkcias same kiel Deployment. Se ni ne fiksas ĝisdatigan strategion (kiel kanario ĉi tie) ĝi kondutos kiel la defaŭlta ruliĝanta-ĝisdatigo Deplojo.
Ni difinas du paŝojn en yaml por kanaria deplojo:
10% de trafiko al kanario (atendu manlibron OK)
50% trafiko al kanario (atendu 2 minutojn poste daŭrigu al 100%)
Farante komencan deplojon
Post la komenca deplojo, niaj rimedoj aspektos jene:
Kaj ni ricevas respondon nur de la unua versio de la aplikaĵo:
Farante Kanarian Deplojon
Paŝo 1: 10% trafiko
Por komenci kanarian deplojon, ni nur bezonas ŝanĝi la bildoversion kiel ni kutime faras kun deplojoj:
Mi vere rekomendas ĉi tiun videon, ĝi montras kiel Argo Rollouts kaj Argo CI funkcias kune:
La rezulto
Mi tre ŝatas la ideon uzi CRD-ojn, kiuj administras la kreadon de pliaj specoj de deplojoj aŭ kopiaroj, alidirektas trafikon ktp. Labori kun ili iras glate. Poste mi ŝatus testi la integriĝon kun Argo CI.
Tamen, ŝajnas esti granda fuzio de Argo CI kaj Flux CI venanta, do mi eble atendas ĝis la nova eldono aperos: Argo Flukso.