рд╣рд╛рдореА k8s-рдиреЗрдЯрд┐рдн Argo Rollouts рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯ рдХрдиреНрдЯреНрд░реЛрд▓рд░ рд░ GitlabCI рдХреЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреМрдВ Kubernetes рдорд╛ рдХреНрдпрд╛рдирд░реА рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯрд╣рд░реВ рдЪрд▓рд╛рдЙрдиред
рдпрд╕ рд╢реНрд░реГрдВрдЦрд▓рд╛рдорд╛ рд▓реЗрдЦрд╣рд░реВ
Kubernetes #1 рдорд╛ рдХреНрдпрд╛рдирд░реА рддреИрдирд╛рддреА: Gitlab CI - (рдпреЛ рд▓реЗрдЦ)
- Istio рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдХреНрдпрд╛рдирд░реА рддреИрдирд╛рддреА
- Jenkins-X Istio Flagger рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдХреНрдпрд╛рдирд░реА рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯ
рдХреНрдпрд╛рдирд░реА рддреИрдирд╛рддреА
рд╣рд╛рдореА рдЖрд╢рд╛ рдЧрд░реНрдЫреМрдВ рддрдкрд╛рдИрдВрд▓реЗ рдкрдвреНрдиреБрднрдпреЛ
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 рдкреНрд▓рдЧрдЗрди)
рдЙрджрд╛рд╣рд░рдг рдЖрд╡реЗрджрди
рдПрдкреНрд▓рд┐рдХреЗрд╕рди рдХреЛрдб рд░ рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░рдХреЛ рд▓рд╛рдЧрд┐ рдЫреБрдЯреНрдЯреИ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реАрд╣рд░реВ рд╣реБрдиреБ рд░рд╛рдореНрд░реЛ рдЕрднреНрдпрд╛рд╕ рд╣реЛред
рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рднрдгреНрдбрд╛рд░
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
рддрдкрд╛рдИрдВрд▓реЗ рдлреЛрд░реНрдХ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ KUBECONFIG
GitlabCI рдорд╛, рдЬрд╕рд▓реЗ рдкрд╣реБрдБрдЪрдХреЛ рд▓рд╛рдЧрд┐ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ kubectl
рдЖрдлреНрдиреЛ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ред
рдкреВрд░реНрд╡рд╛рдзрд╛рд░ рдпрд╛рдорд▓
рдкреВрд░реНрд╡рд╛рдзрд╛рд░ рднрдгреНрдбрд╛рд░ рднрд┐рддреНрд░ рд╣рд╛рдореАрд╕рдБрдЧ рд╕реЗрд╡рд╛ рдЫ:
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: 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 рдбрд┐рдкреНрд▓реЛрдп рдЧрд░реНрдЫ рд░ рд╣рд╛рдореА рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рджреЗрдЦреНрдЫреМрдВ:
рдЕрдм рдпрджрд┐ рд╣рд╛рдореА рд╕реЗрд╡рд╛ рдкрд╣реБрдБрдЪ рдЧрд░реНрдЫреМрдВ:
рдорд╣рд╛рди! рд╣рд╛рдореА рд╣рд╛рдореНрд░реЛ рдХреНрдпрд╛рдирд░реА рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯрдХреЛ рдмреАрдЪрдорд╛ рдЫреМрдВред рд╣рд╛рдореА рдЪрд▓рд╛рдПрд░ рдкреНрд░рдЧрддрд┐ рджреЗрдЦреНрди рд╕рдХреНрдЫреМрдВ:
kubectl argo rollouts get rollout rollout-canary
рдЪрд░рдг реи: релреж% рдЯреНрд░рд╛рдлрд┐рдХ:
рдЕрдм рдЕрд░реНрдХреЛ рдЪрд░рдгрдорд╛ рдЬрд╛рдФрдВ: рдЯреНрд░рд╛рдлрд┐рдХрдХреЛ релреж% рд░рд┐рдбрд┐рд░реЗрдХреНрдЯ рдЧрд░реНрджреИред рд╣рд╛рдореАрд▓реЗ рдореНрдпрд╛рдиреБрдЕрд▓ рд░реВрдкрдорд╛ рдЪрд▓рд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рдпреЛ рдЪрд░рдг рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдпреМрдВ:
kubectl argo rollouts promote rollout-canary # continue to step 2
рд░ рд╣рд╛рдореНрд░реЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓реЗ рдирдпрд╛рдБ рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВрдмрд╛рдЯ 50% рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рдлрд░реНрдХрд╛рдПрдХреЛ рдЫ:
рд░ рд░реЛрд▓рдЖрдЙрдЯ рд╕рдореАрдХреНрд╖рд╛:
╨Я╤А╨╡╨║╤А╨░╤Б╨╜╨╛
рдЪрд░рдг реи: релреж% рдЯреНрд░рд╛рдлрд┐рдХ:
рд╣рд╛рдореАрд▓реЗ рдпрд╕рд▓рд╛рдИ рд╕реЗрдЯ рдЕрдк рдЧрд░реНрдпреМрдВ рддрд╛рдХрд┐ 2 рдорд┐рдиреЗрдЯ рдкрдЫрд┐ 50% рдЪрд░рдг рд╕реНрд╡рддрдГ рд╕рдорд╛рдкреНрдд рд╣реБрдиреНрдЫ рд░ 100% рдЪрд░рдг рд╕реБрд░реБ рд╣реБрдиреНрдЫ:
рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЖрдЙрдЯрдкреБрдЯ:
рд░ рд░реЛрд▓рдЖрдЙрдЯ рд╕рдореАрдХреНрд╖рд╛:
рдХреНрдпрд╛рдирд░реА рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯ рдкреВрд░рд╛ рднрдпреЛред
Argo Rollouts рдХреЛ рд╕рд╛рде рдердк рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ
рдпрд╣рд╛рдБ рдердк рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рдЫрдиреН, рдЬрд╕реНрддреИ рд╡рд╛рддрд╛рд╡рд░рдг рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рд░ рдХреНрдпрд╛рдирд░реАрдорд╛ рдЖрдзрд╛рд░рд┐рдд рддреБрд▓рдирд╛рд╣рд░реВ рдХрд╕рд░реА рд╕реЗрдЯ рдЕрдк рдЧрд░реНрдиреЗ:
Argo Rollouts рд░ Argo CI рдХреЛ рдмрд╛рд░реЗрдорд╛ рднрд┐рдбрд┐рдпреЛ
рдо рдпреЛ рднрд┐рдбрд┐рдпреЛрд▓рд╛рдИ рд╕рд╛рдБрдЪреНрдЪреИ рд╕рд┐рдлрд╛рд░рд┐рд╕ рдЧрд░реНрдЫреБ, рдпрд╕рд▓реЗ Argo Rollouts рд░ Argo CI рд╕рдБрдЧ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ рднрдиреЗрд░ рджреЗрдЦрд╛рдЙрдБрдЫ:
рдкрд░рд┐рдгрд╛рдо
рдорд▓рд╛рдИ CRDs рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рд╡рд┐рдЪрд╛рд░ рд╕рд╛рдБрдЪреНрдЪреИ рдордирдкрд░реНрдЫ рдЬрд╕рд▓реЗ рдердк рдкреНрд░рдХрд╛рд░рдХрд╛ рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯрд╣рд░реВ рд╡рд╛ рдкреНрд░рддрд┐рдХреГрддрд┐рд╣рд░реВ, рдЯреНрд░рд╛рдлрд┐рдХ рд░рд┐рдбрд┐рд░реЗрдХреНрдЯ, рдЗрддреНрдпрд╛рджрд┐рдХреЛ рд╕рд┐рд░реНрдЬрдирд╛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрджрдЫред рдЙрдиреАрд╣рд░реБрд╕рдБрдЧрдХреЛ рдХрд╛рдо рд╕рд╣рдЬреИ рдЪрд▓реНрдЫ ред рдЕрд░реНрдХреЛ рдо Argo CI рд╕рдВрдЧ рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреБред
рдЬреЗ рд╣реЛрд╕реН, рддреНрдпрд╣рд╛рдБ Argo CI рд░ Flux CI рдХреЛ рдареВрд▓реЛ рдорд░реНрдЬрд░ рднрдПрдХреЛ рджреЗрдЦрд┐рдиреНрдЫ, рддреНрдпрд╕реИрд▓реЗ рдо рдирдпрд╛рдБ рд░рд┐рд▓реАрдЬ рдмрд╛рд╣рд┐рд░ рдирдЖрдЙрдиреНрдЬреЗрд▓ рдкрд░реНрдЦрди рд╕рдХреНрдЫреБ:
рдХреЗ рддрдкрд╛рдЗрдБрд╕рдБрдЧ Argo Rollouts рд╡рд╛ Argo CI рд╕рдБрдЧ рдХреБрдиреИ рдЕрдиреБрднрд╡ рдЫ?
рд╣рд╛рдореНрд░реЛ рдмреНрд▓рдЧрдорд╛ рдЕрдиреНрдп рд▓реЗрдЦрд╣рд░реВ рдкрдирд┐ рдкрдвреНрдиреБрд╣реЛрд╕реН:
Nginx рд╡реЗрдм рд╕рд░реНрднрд░рдХреЛ рд╕рд╛рде рд╡рд╕рдиреНрдд рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдХреЛ рдирд┐рд▓реЛ-рд╣рд░рд┐рдпреЛ рддреИрдирд╛рддреА Kubernetes: рдХрд┐рди рдпреЛ рдкреНрд░рдгрд╛рд▓реА рд╕рдВрд╕рд╛рдзрди рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рд╕реЗрдЯ рдЕрдк рдЧрд░реНрди рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЫ? Hashicorp Consul рдХреЛ Kubernetes рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛ рдкрд░рд┐рдЪрдп Tekton рдкрд╛рдЗрдкрд▓рд╛рдЗрди - Kubernetes-рд╕реНрдерд╛рдиреАрдп рдкрд╛рдЗрдкрд▓рд╛рдЗрди Nginx рдХреЛ рд▓рд╛рдЧрд┐ рдЧрддрд┐рд╢реАрд▓ рдореЛрдбреНрдпреБрд▓рд╣рд░реВ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрджреИ Redmine рдХреЛ рд▓рд╛рдЧреА рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдмреЛрдЯред рдЖрдлреНрдиреЛ рд░ рдЕрд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЬреАрд╡рди рдХрд╕рд░реА рд╕рд░рд▓ рдмрдирд╛рдЙрдиреЗ
рд╕реНрд░реЛрдд: www.habr.com