Kubernetes #2 рдорд╛ рдХреНрдпрд╛рдирд░реА рддреИрдирд╛рддреА: Argo рд░реЛрд▓рдЖрдЙрдЯрд╣рд░реВ

рд╣рд╛рдореА k8s-рдиреЗрдЯрд┐рдн Argo Rollouts рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯ рдХрдиреНрдЯреНрд░реЛрд▓рд░ рд░ GitlabCI рдХреЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреМрдВ Kubernetes рдорд╛ рдХреНрдпрд╛рдирд░реА рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯрд╣рд░реВ рдЪрд▓рд╛рдЙрдиред

Kubernetes #2 рдорд╛ рдХреНрдпрд╛рдирд░реА рддреИрдирд╛рддреА: Argo рд░реЛрд▓рдЖрдЙрдЯрд╣рд░реВ

https://unsplash.com/photos/V41PulGL1z0

рдпрд╕ рд╢реНрд░реГрдВрдЦрд▓рд╛рдорд╛ рд▓реЗрдЦрд╣рд░реВ

рдХреНрдпрд╛рдирд░реА рддреИрдирд╛рддреА

рд╣рд╛рдореА рдЖрд╢рд╛ рдЧрд░реНрдЫреМрдВ рддрдкрд╛рдИрдВрд▓реЗ рдкрдвреНрдиреБрднрдпреЛ рдкрд╣рд┐рд▓реЛ рднрд╛рдЧ, рдЬрд╣рд╛рдБ рд╣рд╛рдореАрд▓реЗ рдХреНрдпрд╛рдирд░реА рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯрд╣рд░реВ рдХреЗ рд╣реЛ рднрдиреЗрд░ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░реВрдкрдорд╛ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЧрд░реЗрдХрд╛ рдерд┐рдпреМрдВред рд╣рд╛рдореАрд▓реЗ рдорд╛рдирдХ Kubernetes рд╕реНрд░реЛрддрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдпрд╕рд▓рд╛рдИ рдХрд╕рд░реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрдиреЗ рднрдиреЗрд░ рдкрдирд┐ рджреЗрдЦрд╛рдпреМрдВред

Argo рд░реЛрд▓рдЖрдЙрдЯреНрд╕

Argo Rollouts рдПрдХ Kubernetes рджреЗрд╢реА рддреИрдирд╛рддреА рдирд┐рдпрдиреНрддреНрд░рдХ рд╣реЛред рдпрд╕рд▓реЗ Kubernetes рдХреЛ рд▓рд╛рдЧрд┐ CRD (рдХрд╕реНрдЯрдо рд░рд┐рд╕реЛрд░реНрд╕ рдбреЗрдлрд┐рдирд┐рд╢рди) рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдзрдиреНрдпрд╡рд╛рдж, рд╣рд╛рдореА рдирдпрд╛рдБ рдЗрдХрд╛рдИ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ: Rollout, рдЬрд╕рд▓реЗ рд╡рд┐рднрд┐рдиреНрди рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рд╡рд┐рдХрд▓реНрдкрд╣рд░реВрд╕рдБрдЧ рдиреАрд▓реЛ-рд╣рд░рд┐рдпреЛ рд░ рдХреНрдпрд╛рдирд░реА рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯрд╣рд░реВ рдкреНрд░рдмрдиреНрдз рдЧрд░реНрджрдЫред

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

рддреНрдпрд╣рд╛рдБ Argo CI рдкрдирд┐ рдЫ, рдЬрд╕рд▓реЗ рд░реЛрд▓рдЖрдЙрдЯрд╣рд░реВрд╕рдБрдЧ рдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╡реЗрдм рдЗрдиреНрдЯрд░рдлреЗрд╕ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ, рд╣рд╛рдореА рдЕрд░реНрдХреЛ рд▓реЗрдЦрдорд╛ рддреНрдпрд╕рд▓рд╛рдИ рд╣реЗрд░реНрдиреЗрдЫреМрдВред

Argo рд░реЛрд▓рдЖрдЙрдЯрд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрджреИ

рд╕рд░реНрднрд░ рд╕рд╛рдЗрдб

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 рдлрд╛рдЗрд▓ рдлрд┐рд░реНрддрд╛ рдЧрд░рд┐рдПрдХреЛ рдЫред рд╣рд╛рдореАрд▓реЗ рдпреЛ рдПрдкрд▓рд╛рдИ рд╕рдХреЗрд╕рдореНрдо рд╕рдЬрд┐рд▓реИрд╕рдБрдЧ рднрд┐рдЬреБрдЕрд▓рд╛рдЗрдЬ рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫреМрдВ рдЬреБрди рд╕рдВрд╕реНрдХрд░рдг рд╣рд╛рдореАрд▓реЗ рд╕рдЮреНрдЪрд╛рд░ рдЧрд░рд┐рд░рд╣реЗрдХрд╛ рдЫреМрдВред

рдкреВрд░реНрд╡рд╛рдзрд╛рд░ рднрдгреНрдбрд╛рд░

рдпрд╕ рднрдгреНрдбрд╛рд░рдорд╛ рд╣рд╛рдореА Kubernetes рдорд╛ рддреИрдирд╛рддреА рдЧрд░реНрди 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 Deployment рдЬрд╕реНрддреИ рдХрд╛рдо рдЧрд░реНрджрдЫред рдпрджрд┐ рд╣рд╛рдореАрд▓реЗ рдЕрдкрдбреЗрдЯ рд░рдгрдиреАрддрд┐ рд╕реЗрдЯ рдЧрд░реЗрдиреМрдВ (рдЬрд╕реНрддреИ рдпрд╣рд╛рдБ рдХреНрдпрд╛рдирд░реА) рдпрд╕рд▓реЗ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реЛрд▓рд┐рдЩ-рдЕрдкрдбреЗрдЯ рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯ рдЬрд╕реНрддреИ рд╡реНрдпрд╡рд╣рд╛рд░ рдЧрд░реНрдиреЗрдЫред

рд╣рд╛рдореА рдХреНрдпрд╛рдирд░реА рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯрдХреЛ рд▓рд╛рдЧрд┐ yaml рдорд╛ рджреБрдИ рдЪрд░рдгрд╣рд░реВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрдЫреМрдВ:

  1. рдХреНрдпрд╛рдирд░реАрдорд╛ рдЯреНрд░рд╛рдлрд┐рдХрдХреЛ резреж% (рдореНрдпрд╛рдиреБрдЕрд▓ рдареАрдХрдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реНрдЦрдиреБрд╣реЛрд╕реН)
  2. рдХреНрдпрд╛рдирд░реАрдорд╛ релреж% рдЯреНрд░рд╛рдлрд┐рдХ (реи рдорд┐рдиреЗрдЯ рдкрд░реНрдЦрдиреБрд╣реЛрд╕реН рддреНрдпрд╕рдкрдЫрд┐ резрежреж% рд╕рдореНрдо рдЬрд╛рд░реА рд░рд╛рдЦреНрдиреБрд╣реЛрд╕реН)

рдкреНрд░рд╛рд░рдореНрднрд┐рдХ рддреИрдирд╛рддреА рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрджреИ

рдкреНрд░рд╛рд░рдореНрднрд┐рдХ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдкрдЫрд┐, рд╣рд╛рдореНрд░рд╛ рд╕реНрд░реЛрддрд╣рд░реВ рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреЗрдЫрдиреН:

Kubernetes #2 рдорд╛ рдХреНрдпрд╛рдирд░реА рддреИрдирд╛рддреА: Argo рд░реЛрд▓рдЖрдЙрдЯрд╣рд░реВ

рд░ рд╣рд╛рдореАрд▓реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рдкрд╣рд┐рд▓реЛ рд╕рдВрд╕реНрдХрд░рдгрдмрд╛рдЯ рдорд╛рддреНрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкрд╛рдЙрдБрдЫреМрдВ:

Kubernetes #2 рдорд╛ рдХреНрдпрд╛рдирд░реА рддреИрдирд╛рддреА: Argo рд░реЛрд▓рдЖрдЙрдЯрд╣рд░реВ

рдХреНрдпрд╛рдирд░реА рддреИрдирд╛рддреА рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрджреИ

рдЪрд░рдг 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
...

рд░ рд╣рд╛рдореА рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рдкреБрд╢ рдЧрд░реНрдЫреМрдВ, рддреНрдпрд╕реИрд▓реЗ Gitlab CI рдбрд┐рдкреНрд▓реЛрдп рдЧрд░реНрдЫ рд░ рд╣рд╛рдореА рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рджреЗрдЦреНрдЫреМрдВ:

Kubernetes #2 рдорд╛ рдХреНрдпрд╛рдирд░реА рддреИрдирд╛рддреА: Argo рд░реЛрд▓рдЖрдЙрдЯрд╣рд░реВ

рдЕрдм рдпрджрд┐ рд╣рд╛рдореА рд╕реЗрд╡рд╛ рдкрд╣реБрдБрдЪ рдЧрд░реНрдЫреМрдВ:

Kubernetes #2 рдорд╛ рдХреНрдпрд╛рдирд░реА рддреИрдирд╛рддреА: Argo рд░реЛрд▓рдЖрдЙрдЯрд╣рд░реВ

рдорд╣рд╛рди! рд╣рд╛рдореА рд╣рд╛рдореНрд░реЛ рдХреНрдпрд╛рдирд░реА рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯрдХреЛ рдмреАрдЪрдорд╛ рдЫреМрдВред рд╣рд╛рдореА рдЪрд▓рд╛рдПрд░ рдкреНрд░рдЧрддрд┐ рджреЗрдЦреНрди рд╕рдХреНрдЫреМрдВ:

kubectl argo rollouts get rollout rollout-canary

Kubernetes #2 рдорд╛ рдХреНрдпрд╛рдирд░реА рддреИрдирд╛рддреА: Argo рд░реЛрд▓рдЖрдЙрдЯрд╣рд░реВ

рдЪрд░рдг реи: релреж% рдЯреНрд░рд╛рдлрд┐рдХ:

рдЕрдм рдЕрд░реНрдХреЛ рдЪрд░рдгрдорд╛ рдЬрд╛рдФрдВ: рдЯреНрд░рд╛рдлрд┐рдХрдХреЛ релреж% рд░рд┐рдбрд┐рд░реЗрдХреНрдЯ рдЧрд░реНрджреИред рд╣рд╛рдореАрд▓реЗ рдореНрдпрд╛рдиреБрдЕрд▓ рд░реВрдкрдорд╛ рдЪрд▓рд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рдпреЛ рдЪрд░рдг рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдпреМрдВ:

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

Kubernetes #2 рдорд╛ рдХреНрдпрд╛рдирд░реА рддреИрдирд╛рддреА: Argo рд░реЛрд▓рдЖрдЙрдЯрд╣рд░реВ

рд░ рд╣рд╛рдореНрд░реЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓реЗ рдирдпрд╛рдБ рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВрдмрд╛рдЯ 50% рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рдлрд░реНрдХрд╛рдПрдХреЛ рдЫ:

Kubernetes #2 рдорд╛ рдХреНрдпрд╛рдирд░реА рддреИрдирд╛рддреА: Argo рд░реЛрд▓рдЖрдЙрдЯрд╣рд░реВ

рд░ рд░реЛрд▓рдЖрдЙрдЯ рд╕рдореАрдХреНрд╖рд╛:

Kubernetes #2 рдорд╛ рдХреНрдпрд╛рдирд░реА рддреИрдирд╛рддреА: Argo рд░реЛрд▓рдЖрдЙрдЯрд╣рд░реВ

╨Я╤А╨╡╨║╤А╨░╤Б╨╜╨╛

рдЪрд░рдг реи: релреж% рдЯреНрд░рд╛рдлрд┐рдХ:

рд╣рд╛рдореАрд▓реЗ рдпрд╕рд▓рд╛рдИ рд╕реЗрдЯ рдЕрдк рдЧрд░реНрдпреМрдВ рддрд╛рдХрд┐ 2 рдорд┐рдиреЗрдЯ рдкрдЫрд┐ 50% рдЪрд░рдг рд╕реНрд╡рддрдГ рд╕рдорд╛рдкреНрдд рд╣реБрдиреНрдЫ рд░ 100% рдЪрд░рдг рд╕реБрд░реБ рд╣реБрдиреНрдЫ:

Kubernetes #2 рдорд╛ рдХреНрдпрд╛рдирд░реА рддреИрдирд╛рддреА: Argo рд░реЛрд▓рдЖрдЙрдЯрд╣рд░реВ

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

Kubernetes #2 рдорд╛ рдХреНрдпрд╛рдирд░реА рддреИрдирд╛рддреА: Argo рд░реЛрд▓рдЖрдЙрдЯрд╣рд░реВ

рд░ рд░реЛрд▓рдЖрдЙрдЯ рд╕рдореАрдХреНрд╖рд╛:

Kubernetes #2 рдорд╛ рдХреНрдпрд╛рдирд░реА рддреИрдирд╛рддреА: Argo рд░реЛрд▓рдЖрдЙрдЯрд╣рд░реВ

рдХреНрдпрд╛рдирд░реА рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯ рдкреВрд░рд╛ рднрдпреЛред

Argo Rollouts рдХреЛ рд╕рд╛рде рдердк рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ

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

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

Argo Rollouts рд░ Argo CI рдХреЛ рдмрд╛рд░реЗрдорд╛ рднрд┐рдбрд┐рдпреЛ

рдо рдпреЛ рднрд┐рдбрд┐рдпреЛрд▓рд╛рдИ рд╕рд╛рдБрдЪреНрдЪреИ рд╕рд┐рдлрд╛рд░рд┐рд╕ рдЧрд░реНрдЫреБ, рдпрд╕рд▓реЗ Argo Rollouts рд░ Argo CI рд╕рдБрдЧ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ рднрдиреЗрд░ рджреЗрдЦрд╛рдЙрдБрдЫ:

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

рдорд▓рд╛рдИ CRDs рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рд╡рд┐рдЪрд╛рд░ рд╕рд╛рдБрдЪреНрдЪреИ рдордирдкрд░реНрдЫ рдЬрд╕рд▓реЗ рдердк рдкреНрд░рдХрд╛рд░рдХрд╛ рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯрд╣рд░реВ рд╡рд╛ рдкреНрд░рддрд┐рдХреГрддрд┐рд╣рд░реВ, рдЯреНрд░рд╛рдлрд┐рдХ рд░рд┐рдбрд┐рд░реЗрдХреНрдЯ, рдЗрддреНрдпрд╛рджрд┐рдХреЛ рд╕рд┐рд░реНрдЬрдирд╛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрджрдЫред рдЙрдиреАрд╣рд░реБрд╕рдБрдЧрдХреЛ рдХрд╛рдо рд╕рд╣рдЬреИ рдЪрд▓реНрдЫ ред рдЕрд░реНрдХреЛ рдо Argo CI рд╕рдВрдЧ рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреБред

рдЬреЗ рд╣реЛрд╕реН, рддреНрдпрд╣рд╛рдБ Argo CI рд░ Flux CI рдХреЛ рдареВрд▓реЛ рдорд░реНрдЬрд░ рднрдПрдХреЛ рджреЗрдЦрд┐рдиреНрдЫ, рддреНрдпрд╕реИрд▓реЗ рдо рдирдпрд╛рдБ рд░рд┐рд▓реАрдЬ рдмрд╛рд╣рд┐рд░ рдирдЖрдЙрдиреНрдЬреЗрд▓ рдкрд░реНрдЦрди рд╕рдХреНрдЫреБ: рдЕрд░реНрдЧреЛ рдлреНрд▓рдХреНрд╕.

рдХреЗ рддрдкрд╛рдЗрдБрд╕рдБрдЧ Argo Rollouts рд╡рд╛ Argo CI рд╕рдБрдЧ рдХреБрдиреИ рдЕрдиреБрднрд╡ рдЫ?

рд╣рд╛рдореНрд░реЛ рдмреНрд▓рдЧрдорд╛ рдЕрдиреНрдп рд▓реЗрдЦрд╣рд░реВ рдкрдирд┐ рдкрдвреНрдиреБрд╣реЛрд╕реН:

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди