рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ #2 рдордзреНрдпреЗ рдХреЕрдирд░реА рддреИрдирд╛рддреА: рдЕрд░реНрдЧреЛ рд░реЛрд▓рдЖрдЙрдЯреНрд╕

Kubernetes рд╡рд░ рдХреЕрдирд░реА рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯ рдЪрд╛рд▓рд╡рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдореНрд╣реА k8s-рдиреЗрдЯрд┐рд╡реНрд╣ Argo Rollouts deployment Controller рдЖрдгрд┐ GitlabCI рдЪрд╛ рд╡рд╛рдкрд░ рдХрд░реВ

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ #2 рдордзреНрдпреЗ рдХреЕрдирд░реА рддреИрдирд╛рддреА: рдЕрд░реНрдЧреЛ рд░реЛрд▓рдЖрдЙрдЯреНрд╕

https://unsplash.com/photos/V41PulGL1z0

рдпрд╛ рдорд╛рд▓рд┐рдХреЗрддреАрд▓ рд▓реЗрдЦ

рдХреЕрдирд░реА рдЙрдкрдпреЛрдЬрди

рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрд╢рд╛ рдЖрд╣реЗ рдХреА рддреБрдореНрд╣реА рд╡рд╛рдЪрд╛рд▓ рдкрд╣рд┐рд▓рд╛ рднрд╛рдЧ, рдЬреЗрдереЗ рдХреЕрдирд░реА рдЙрдкрдпреЛрдЬрди рдХрд╛рдп рдЖрд╣реЗрдд рд╣реЗ рдЖрдореНрд╣реА рдереЛрдбрдХреНрдпрд╛рдд рд╕реНрдкрд╖реНрдЯ рдХреЗрд▓реЗ. рдЖрдореНрд╣реА рдорд╛рдирдХ Kubernetes рд╕рдВрд╕рд╛рдзрдиреЗ рд╡рд╛рдкрд░реВрди рддреЗ рдХрд╕реЗ рдЕрдВрдорд▓рд╛рдд рдЖрдгрд╛рдпрдЪреЗ рддреЗ рджреЗрдЦреАрд▓ рджрд╛рдЦрд╡рд▓реЗ.

рдЕрд░реНрдЧреЛ рд░реЛрд▓рдЖрдЙрдЯреНрд╕

Argo Rollouts рдПрдХ Kubernetes рдиреЗрдЯрд┐рд╡реНрд╣ рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯ рдХрдВрдЯреНрд░реЛрд▓рд░ рдЖрд╣реЗ. рд╣реЗ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рд╕рд╛рдареА CRD (рдХрд╕реНрдЯрдо рд░рд┐рд╕реЛрд░реНрд╕ рдбреЗрдлрд┐рдирд┐рд╢рди) рдкреНрд░рджрд╛рди рдХрд░рддреЗ. рддреНрдпрд╛рдмрджреНрджрд▓ рдзрдиреНрдпрд╡рд╛рдж, рдЖрдореНрд╣реА рдПрдХ рдирд╡реАрди рдЕрд╕реНрддрд┐рддреНрд╡ рд╡рд╛рдкрд░реВ рд╢рдХрддреЛ: Rollout, рдЬреЗ рд╡рд┐рд╡рд┐рдз рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдкрд░реНрдпрд╛рдпрд╛рдВрд╕рд╣ рдирд┐рд│реНрдпрд╛-рд╣рд┐рд░рд╡реНрдпрд╛ рдЖрдгрд┐ рдХреЕрдирд░реА рдЙрдкрдпреЛрдЬрдирд╛рдВрдЪреЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдХрд░рддреЗ.

рд╕рд╛рдиреБрдХреВрд▓ рд╕рдВрд╕рд╛рдзрдирд╛рджреНрд╡рд╛рд░реЗ рд╡рд╛рдкрд░рд▓реЗрд▓рд╛ Argo рд░реЛрд▓рдЖрдЙрдЯ рдХрдВрдЯреНрд░реЛрд▓рд░ Rollout, Kubernetes рд╕рд╛рдареА рдирд┐рд│рд╛-рд╣рд┐рд░рд╡рд╛ рдЖрдгрд┐ рдХреЕрдирд░реА рдпрд╛рд╕рд╛рд░рдЦреНрдпрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рдЙрдкрдпреЛрдЬрди рдзреЛрд░рдгрд╛рдВрдирд╛ рдЕрдиреБрдорддреА рджреЗрддреЗ. рд╕рдВрд╕рд╛рдзрди Rollout рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕рдорддреБрд▓реНрдп рдкреНрд░рджрд╛рди рдХрд░рддреЗ Deployment, рдлрдХреНрдд рдЕрддрд┐рд░рд┐рдХреНрдд рдЙрдкрдпреЛрдЬрди рдзреЛрд░рдгрд╛рдВрд╕рд╣.
рд╕рдВрд╕рд╛рдзрди Deployments рдЙрдкрдпреЛрдЬрдирд╛рд╕рд╛рдареА рджреЛрди рдзреЛрд░рдгреЗ рдЖрд╣реЗрдд: RollingUpdate ╨╕ Recreate. рдЬрд░реА рд╣реА рд░рдгрдиреАрддреА рдмрд░реНтАНрдпрд╛рдЪ рдкреНрд░рдХрд░рдгрд╛рдВрд╕рд╛рдареА рдпреЛрдЧреНрдп рдЕрд╕рд▓реА рддрд░реА, рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдореЛрдареНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд рддреИрдирд╛рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЕрддрд┐рд░рд┐рдХреНрдд рдзреЛрд░рдгреЗ рд╡рд╛рдкрд░рд▓реА рдЬрд╛рддрд╛рдд, рдЬрд╕реЗ рдХреА рдирд┐рд│рд╛-рд╣рд┐рд░рд╡рд╛ рдХрд┐рдВрд╡рд╛ рдХреЕрдирд░реА, рдЬреЗ рдЙрдкрдпреЛрдЬрди рдирд┐рдпрдВрддреНрд░рдХрд╛рдордзреНрдпреЗ рдЙрдкрд▓рдмреНрдз рдирд╛рд╣реАрдд. рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдордзреНрдпреЗ рдпрд╛ рдзреЛрд░рдгрд╛рдВрдЪрд╛ рд╡рд╛рдкрд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдирд╛ рддреНрдпрд╛рдВрдЪреНрдпрд╛ рдЙрдкрдпреЛрдЬрдирд╛рдВрдЪреНрдпрд╛ рд╢реАрд░реНрд╖рд╕реНрдерд╛рдиреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рд╣рд┐рдгреЗ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддреЗ. Argo Rollouts Controller рдпрд╛ рдзреЛрд░рдгрд╛рдВрдирд╛ рд╕реЛрдкреНрдпрд╛, рдШреЛрд╖рдгрд╛рддреНрдордХ, рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреНрдпрд╛рдпреЛрдЧреНрдп рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рдореНрд╣рдгреВрди рдЙрдШрдб рдХрд░рддреЛ.
https://argoproj.github.io/argo-rollouts

Argo CI рджреЗрдЦреАрд▓ рдЖрд╣реЗ, рдЬреЛ Rollouts рд╕рд╣ рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕реЛрдпреАрд╕реНрдХрд░ рд╡реЗрдм рдЗрдВрдЯрд░рдлреЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддреЛ, рдЖрдореНрд╣реА рдкреБрдвреАрд▓ рд▓реЗрдЦрд╛рдд рддреНрдпрд╛рд╡рд░ рдПрдХ рдирдЬрд░ рдЯрд╛рдХреВ.

рдЕрд░реНрдЧреЛ рд░реЛрд▓рдЖрдЙрдЯреНрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдд рдЖрд╣реЗ

рд╕рд░реНрд╡реНрд╣рд░ рдмрд╛рдЬреВрд▓рд╛

kubectl create namespace argo-rolloutskubectl apply -n argo-rollouts -f https://raw.githubusercontent.com/argoproj/argo-rollouts/stable/manifests/install.yaml

рдЖрдордЪреНрдпрд╛ рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдЯрд░реНрдирд┐рдкрдордзреНрдпреЗ (рдЦрд╛рд▓реА рдкрд╣рд╛) рдЖрдореНрд╣реА рдЖрдзреАрдЪ i/k8s/argo-rollouts/install.yaml рдореНрд╣рдгреВрди install.yaml рдЬреЛрдбрд▓реЗ рдЖрд╣реЗ. рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ GitlabCI рддреЗ рдХреНрд▓рд╕реНрдЯрд░рдордзреНрдпреЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрд▓.

рдХреНрд▓рд╛рдпрдВрдЯ рд╕рд╛рдЗрдб (kubectl рдкреНрд▓рдЧрдЗрди)

https://argoproj.github.io/argo-rollouts/features/kubectl-plugin

рдЙрджрд╛рд╣рд░рдг рдЕрд░реНрдЬ

рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЛрдб рдЖрдгрд┐ рдкрд╛рдпрд╛рднреВрдд рд╕реБрд╡рд┐рдзрд╛рдВрд╕рд╛рдареА рд╕реНрд╡рддрдВрддреНрд░ рднрд╛рдВрдбрд╛рд░ рдЕрд╕рдгреЗ рдЪрд╛рдВрдЧрд▓реЗ рдЖрд╣реЗ.

рдЕрд░реНрдЬрд╛рд╕рд╛рдареА рднрд╛рдВрдбрд╛рд░

Kim Wuestkamp/k8s-deployment-example-app

рд╣рд╛ рдПрдХ рдЕрддрд┐рд╢рдп рд╕реЛрдкрд╛ рдкрд╛рдпрдерди + рдлреНрд▓рд╛рд╕реНрдХ API рдЖрд╣реЗ рдЬреЛ JSON рдореНрд╣рдгреВрди рдкреНрд░рддрд┐рд╕рд╛рдж рджреЗрддреЛ. рдЖрдореНрд╣реА GitlabCI рд╡рд╛рдкрд░реВрди рдкреЕрдХреЗрдЬ рддрдпрд╛рд░ рдХрд░реВ рдЖрдгрд┐ рдирд┐рдХрд╛рд▓ Gitlab рд░рдЬрд┐рд╕реНрдЯреНрд░реАрдХрдбреЗ рдврдХрд▓реВ. рд░реЗрдЬрд┐рд╕реНрдЯреНрд░реАрдордзреНрдпреЗ рдЖрдордЪреНрдпрд╛рдХрдбреЗ рджреЛрди рднрд┐рдиреНрди рд░рд┐рд▓реАрдЭ рдЖрд╡реГрддреНрддреНрдпрд╛ рдЖрд╣реЗрдд:

  • wuestkamp/k8s-deployment-example-app:v1
  • wuestkamp/k8s-deployment-example-app:v2

рддреНрдпрд╛рдВрдЪреНрдпрд╛рддреАрд▓ рдлрд░рдХ рдлрдХреНрдд JSON рдлрд╛рдЗрд▓ рдкрд░рдд рдХреЗрд▓рд╛ рдЖрд╣реЗ. рдЖрдореНрд╣реА рдХреЛрдгрддреНрдпрд╛ рдЖрд╡реГрддреНрддреАрд╢реА рд╕рдВрд╡рд╛рдж рд╕рд╛рдзрдд рдЖрд╣реЛрдд рддреЗ рд╢рдХреНрдп рддрд┐рддрдХреНрдпрд╛ рд╕рд╣рдЬрддреЗрдиреЗ рджреГрд╢реНрдпрдорд╛рди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдореНрд╣реА рд╣рд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд╛рдкрд░рддреЛ.

рдкрд╛рдпрд╛рднреВрдд рд╕реБрд╡рд┐рдзрд╛рдВрдЪреЗ рднрд╛рдВрдбрд╛рд░

рдпрд╛ рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдордзреНрдпреЗ рдЖрдореНрд╣реА рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдЪреНрдпрд╛ рддреИрдирд╛рддреАрд╕рд╛рдареА GitlabCI рдЪрд╛ рд╡рд╛рдкрд░ рдХрд░реВ, .gitlab-ci.yml рдЕрд╕реЗ рджрд┐рд╕рддреЗ:

image: traherom/kustomize-dockerbefore_script:
   - printenv
   - kubectl versionstages:
 - deploydeploy test:
   stage: deploy
   before_script:
     - echo $KUBECONFIG
   script:
     - kubectl get all
     - kubectl apply -f i/k8s    only:
     - master

рддреЗ рд╕реНрд╡рддрдГ рдЪрд╛рд▓рд╡рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣рд╛рд▓рд╛ рдХреНрд▓рд╕реНрдЯрд░рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрд╕реЗрд▓, рддреБрдореНрд╣реА Gcloud рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛:

gcloud container clusters create canary --num-nodes 3 --zone europe-west3-b
gcloud compute firewall-rules create incoming-80 --allow tcp:80

рдЖрдкрдг рдХрд╛рдЯрд╛ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ https://gitlab.com/wuestkamp/k8s-deployment-example-canary-infrastructure рдЖрдгрд┐ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рддрдпрд╛рд░ рдХрд░рд╛ KUBECONFIG GitlabCI рдордзреНрдпреЗ, рдЬреНрдпрд╛рдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢рд╛рд╕рд╛рдареА рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдЕрд╕реЗрд▓ kubectl рддреБрдордЪреНрдпрд╛ рдХреНрд▓рд╕реНрдЯрд░рд▓рд╛.

рддреЛ рдЖрд╣реЗ рдХреНрд▓рд╕реНрдЯрд░ (Gcloud) рд╕рд╛рдареА рдХреНрд░реЗрдбреЗрдиреНрд╢рд┐рдпрд▓ рдХрд╕реЗ рдорд┐рд│рд╡рд╛рдпрдЪреЗ рдпрд╛рдмрджреНрджрд▓ рддреБрдореНрд╣реА рд╡рд╛рдЪреВ рд╢рдХрддрд╛.

рдкрд╛рдпрд╛рднреВрдд рд╕реБрд╡рд┐рдзрд╛ рдпрд╛рдорд▓

рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реАрдордзреНрдпреЗ рдЖрдордЪреНрдпрд╛рдХрдбреЗ рд╕реЗрд╡рд╛ рдЖрд╣реЗ:

apiVersion: v1
kind: Service
metadata:
 labels:
   id: rollout-canary
 name: app
spec:
 ports:
 - port: 80
   protocol: TCP
   targetPort: 5000
 selector:
   id: app
 type: LoadBalancer

рдЖрдгрд┐ rollout.yaml :

apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
 name: rollout-canary
spec:
 replicas: 10
 revisionHistoryLimit: 2
 selector:
   matchLabels:
     id: rollout-canary
 template:
   metadata:
     labels:
       id: rollout-canary
   spec:
     containers:
     - name: rollouts-demo
       image: registry.gitlab.com/wuestkamp/k8s-deployment-example-app:v1
       imagePullPolicy: Always
 strategy:
   canary:
     steps:
     - setWeight: 10
     # Rollouts can be manually resumed by running `kubectl argo rollouts promote ROLLOUT`
     - pause: {}
     - setWeight: 50
     - pause: { duration: 120 } # two minutes

Rollout рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯ рдкреНрд░рдорд╛рдгреЗрдЪ рдХрд╛рд░реНрдп рдХрд░рддреЗ. рдЬрд░ рдЖрдореНрд╣реА рдЕрдкрдбреЗрдЯ рдзреЛрд░рдг рд╕реЗрдЯ рдХреЗрд▓реЗ рдирд╛рд╣реА (рдЬрд╕реЗ рдпреЗрдереЗ рдХреЕрдирд░реА) рддреЗ рдбреАрдлреЙрд▓реНрдЯ рд░реЛрд▓рд┐рдВрдЧ-рдЕрдкрдбреЗрдЯ рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯрд╕рд╛рд░рдЦреЗ рд╡рд╛рдЧреЗрд▓.

рдХреЕрдирд░реА рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯрд╕рд╛рдареА рдЖрдореНрд╣реА рдпрд╛рдорд▓рдордзреНрдпреЗ рджреЛрди рдкрд╛рдпрд▒реНрдпрд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЛ:

  1. рдХреЕрдирд░реАрдХрдбреЗ 10% рд░рд╣рджрд╛рд░реА (рдореЕрдиреНрдпреБрдЕрд▓ рдУрдХреЗ рд╕рд╛рдареА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рд╛)
  2. рдХреЕрдирд░реАрдХрдбреЗ 50% рд░рд╣рджрд╛рд░реА (2 рдорд┐рдирд┐рдЯреЗ рдерд╛рдВрдмрд╛ рдирдВрддрд░ 100% рдкрд░реНрдпрдВрдд рд╕реБрд░реВ рдареЗрд╡рд╛)

рдкреНрд░рд╛рд░рдВрднрд┐рдХ рддреИрдирд╛рддреА рдХрд░рдд рдЖрд╣реЗ

рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЙрдкрдпреЛрдЬрдирд╛рдирдВрддрд░, рдЖрдордЪреА рд╕рдВрд╕рд╛рдзрдиреЗ рдпрд╛рд╕рд╛рд░рдЦреА рджрд┐рд╕рддреАрд▓:

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ #2 рдордзреНрдпреЗ рдХреЕрдирд░реА рддреИрдирд╛рддреА: рдЕрд░реНрдЧреЛ рд░реЛрд▓рдЖрдЙрдЯреНрд╕

рдЖрдгрд┐ рдЖрдореНрд╣рд╛рд▓рд╛ рдХреЗрд╡рд│ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдЪреНрдпрд╛ рдкрд╣рд┐рд▓реНрдпрд╛ рдЖрд╡реГрддреНрддреАрд╡рд░реВрди рдкреНрд░рддрд┐рд╕рд╛рдж рдорд┐рд│рддреЛ:

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ #2 рдордзреНрдпреЗ рдХреЕрдирд░реА рддреИрдирд╛рддреА: рдЕрд░реНрдЧреЛ рд░реЛрд▓рдЖрдЙрдЯреНрд╕

рдХреЕрдирд░реА рдЙрдкрдпреЛрдЬрди рдХрд░рдд рдЖрд╣реЗ

рдкрд╛рдпрд░реА 1: 10% рд░рд╣рджрд╛рд░реА

рдХреЕрдирд░реА рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯ рд╕реБрд░реВ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣рд╛рд▓рд╛ рдлрдХреНрдд рдЗрдореЗрдЬ рд╡реНрд╣рд░реНрдЬрди рдмрджрд▓рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдЬрд╕реЗ рдЖрдореНрд╣реА рд╕рд╛рдорд╛рдиреНрдпрддрдГ рдЙрдкрдпреЛрдЬрдирд╛рдВрд╕рд╣ рдХрд░рддреЛ:

apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
 name: rollout-canary
spec:
...
 template:
   metadata:
     labels:
       id: rollout-canary
   spec:
     containers:
     - name: rollouts-demo
       image: registry.gitlab.com/wuestkamp/k8s-deployment-example-app:v2
...

рдЖрдгрд┐ рдЖрдореНрд╣реА рдмрджрд▓рд╛рдВрдирд╛ рдзрдХреНрдХрд╛ рджреЗрддреЛ, рдореНрд╣рдгреВрди рдЧрд┐рдЯрд▓реЕрдм рд╕реАрдЖрдп рддреИрдирд╛рдд рдХрд░рддреЗ рдЖрдгрд┐ рдЖрдореНрд╣реА рдмрджрд▓ рдкрд╛рд╣рддреЛ:

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ #2 рдордзреНрдпреЗ рдХреЕрдирд░реА рддреИрдирд╛рддреА: рдЕрд░реНрдЧреЛ рд░реЛрд▓рдЖрдЙрдЯреНрд╕

рдЖрддрд╛ рдЖрдореНрд╣реА рд╕реЗрд╡реЗрдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдХреЗрд▓реНрдпрд╛рд╕:

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ #2 рдордзреНрдпреЗ рдХреЕрдирд░реА рддреИрдирд╛рддреА: рдЕрд░реНрдЧреЛ рд░реЛрд▓рдЖрдЙрдЯреНрд╕

рдЫрд╛рди! рдЖрдореНрд╣реА рдЖрдордЪреНрдпрд╛ рдХреЕрдирд░реА рддреИрдирд╛рддреАрдЪреНрдпрд╛ рдордзреНрдпрднрд╛рдЧреА рдЖрд╣реЛрдд. рдЖрдореНрд╣реА рдзрд╛рд╡реВрди рдкреНрд░рдЧрддреА рдкрд╛рд╣реВ рд╢рдХрддреЛ:

kubectl argo rollouts get rollout rollout-canary

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ #2 рдордзреНрдпреЗ рдХреЕрдирд░реА рддреИрдирд╛рддреА: рдЕрд░реНрдЧреЛ рд░реЛрд▓рдЖрдЙрдЯреНрд╕

рдкрд╛рдпрд░реА 2: 50% рд░рд╣рджрд╛рд░реА:

рдЖрддрд╛ рдкреБрдврдЪреНрдпрд╛ рдкрд╛рдпрд░реАрд╡рд░ рдЬрд╛рдК рдпрд╛: релреж% рд░рд╣рджрд╛рд░реА рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдгреЗ. рдЖрдореНрд╣реА рд╣реА рдкрд╛рдпрд░реА рд╡реНрдпрдХреНрддрд┐рдЪрд▓рд┐рддрдкрдгреЗ рдЪрд╛рд▓рд╡рдгреНрдпрд╛рд╕рд╛рдареА рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЗрд▓реА рдЖрд╣реЗ:

kubectl argo rollouts promote rollout-canary # continue to step 2

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ #2 рдордзреНрдпреЗ рдХреЕрдирд░реА рддреИрдирд╛рддреА: рдЕрд░реНрдЧреЛ рд░реЛрд▓рдЖрдЙрдЯреНрд╕

рдЖрдгрд┐ рдЖрдордЪреНрдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдиреЗ рдирд╡реАрди рдЖрд╡реГрддреНрддреНрдпрд╛рдВрдордзреВрди 50% рдкреНрд░рддрд┐рд╕рд╛рдж рдкрд░рдд рдХреЗрд▓реЗ:

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ #2 рдордзреНрдпреЗ рдХреЕрдирд░реА рддреИрдирд╛рддреА: рдЕрд░реНрдЧреЛ рд░реЛрд▓рдЖрдЙрдЯреНрд╕

рдЖрдгрд┐ рд░реЛрд▓рдЖрдЙрдЯ рдкреБрдирд░рд╛рд╡рд▓реЛрдХрди:

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ #2 рдордзреНрдпреЗ рдХреЕрдирд░реА рддреИрдирд╛рддреА: рдЕрд░реНрдЧреЛ рд░реЛрд▓рдЖрдЙрдЯреНрд╕

рдЕрдкреНрд░рддрд┐рдо.

рдкрд╛рдпрд░реА 3: 100% рд░рд╣рджрд╛рд░реА:

рдЖрдореНрд╣реА рддреЗ рд╕реЗрдЯ рдХреЗрд▓реЗ рдЬреЗрдгреЗрдХрд░реВрди 2 рдорд┐рдирд┐рдЯрд╛рдВрдирдВрддрд░ 50% рдЪрд░рдг рдЖрдкреЛрдЖрдк рд╕рдВрдкреЗрд▓ рдЖрдгрд┐ 100% рдЪрд░рдг рд╕реБрд░реВ рд╣реЛрдИрд▓:

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ #2 рдордзреНрдпреЗ рдХреЕрдирд░реА рддреИрдирд╛рддреА: рдЕрд░реНрдЧреЛ рд░реЛрд▓рдЖрдЙрдЯреНрд╕

рдЖрдгрд┐ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЖрдЙрдЯрдкреБрдЯ:

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ #2 рдордзреНрдпреЗ рдХреЕрдирд░реА рддреИрдирд╛рддреА: рдЕрд░реНрдЧреЛ рд░реЛрд▓рдЖрдЙрдЯреНрд╕

рдЖрдгрд┐ рд░реЛрд▓рдЖрдЙрдЯ рдкреБрдирд░рд╛рд╡рд▓реЛрдХрди:

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ #2 рдордзреНрдпреЗ рдХреЕрдирд░реА рддреИрдирд╛рддреА: рдЕрд░реНрдЧреЛ рд░реЛрд▓рдЖрдЙрдЯреНрд╕

рдХреЕрдирд░реА рддреИрдирд╛рддреА рдкреВрд░реНрдг рдЭрд╛рд▓реА рдЖрд╣реЗ.

Argo Rollouts рд╕рд╣ рдЕрдзрд┐рдХ рдЙрджрд╛рд╣рд░рдгреЗ

рдпреЗрдереЗ рдЖрдгрдЦреА рдЙрджрд╛рд╣рд░рдгреЗ рдЖрд╣реЗрдд, рдЬрд╕реЗ рдХреА рдкрд░реНрдпрд╛рд╡рд░рдг рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдХрд╕реЗ рд╕реЗрдЯ рдХрд░рд╛рдпрдЪреЗ рдЖрдгрд┐ рдХреЕрдирд░реАрд╡рд░ рдЖрдзрд╛рд░рд┐рдд рддреБрд▓рдирд╛:

https://github.com/argoproj/argo-rollouts/tree/master/examples

Argo Rollouts рдЖрдгрд┐ Argo CI рдмрджреНрджрд▓ рд╡реНрд╣рд┐рдбрд┐рдУ

рдореА рдЦрд░реЛрдЦрд░рдЪ рдпрд╛ рд╡реНрд╣рд┐рдбрд┐рдУрдЪреА рд╢рд┐рдлрд╛рд░рд╕ рдХрд░рддреЛ, рд╣реЗ рджрд░реНрд╢рд╡рд┐рддреЗ рдХреА Argo Rollouts рдЖрдгрд┐ Argo CI рдПрдХрддреНрд░ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛рдд:

рдкрд░рд┐рдгрд╛рдо

рдорд▓рд╛ CRDs рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдХрд▓реНрдкрдирд╛ рдЦрд░реЛрдЦрд░ рдЖрд╡рдбрддреЗ рдЬреА рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рдЙрдкрдпреЛрдЬрди рдХрд┐рдВрд╡рд╛ рдкреНрд░рддрд┐рдХреГрддреА, рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рд░рд╣рджрд╛рд░реА рдЗрддреНрдпрд╛рджреАрдВрдЪреНрдпрд╛ рдирд┐рд░реНрдорд┐рддреАрдЪреЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдХрд░рддрд╛рдд. рддреНрдпрд╛рдВрдЪреНрдпрд╛рд╕реЛрдмрдд рдХрд╛рдо рд╕реБрд░рд│реАрдд рдЪрд╛рд▓рддреЗ. рдкреБрдвреЗ рдореА Argo CI рд╕рд╣ рдПрдХрддреНрд░реАрдХрд░рдгрд╛рдЪреА рдЪрд╛рдЪрдгреА рдШреЗрдК рдЗрдЪреНрдЫрд┐рддреЛ.

рддрдерд╛рдкрд┐, рдЕрд░реНрдЧреЛ рд╕реАрдЖрдп рдЖрдгрд┐ рдлреНрд▓рдХреНрд╕ рд╕реАрдЖрдпрдЪреЗ рдПрдХ рдореЛрдареЗ рд╡рд┐рд▓реАрдиреАрдХрд░рдг рдпреЗрдд рдЕрд╕рд▓реНрдпрд╛рдЪреЗ рджрд┐рд╕рддреЗ, рдореНрд╣рдгреВрди рдореА рдирд╡реАрди рдкреНрд░рдХрд╛рд╢рди рдпреЗрдИрдкрд░реНрдпрдВрдд рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реВ рд╢рдХрддреЛ: рдЕрд░реНрдЧреЛ рдлреНрд▓рдХреНрд╕.

рддреБрдореНрд╣рд╛рд▓рд╛ Argo Rollouts рдХрд┐рдВрд╡рд╛ Argo CI рдЪрд╛ рдХрд╛рд╣реА рдЕрдиреБрднрд╡ рдЖрд╣реЗ рдХрд╛?

рдЖрдордЪреНрдпрд╛ рдмреНрд▓реЙрдЧрд╡рд░реАрд▓ рдЗрддрд░ рд▓реЗрдЦ рджреЗрдЦреАрд▓ рд╡рд╛рдЪрд╛:

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛