Kubernetes рд╡рд░ рдХреЕрдирд░реА рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯ рдЪрд╛рд▓рд╡рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдореНрд╣реА k8s-рдиреЗрдЯрд┐рд╡реНрд╣ Argo Rollouts deployment Controller рдЖрдгрд┐ GitlabCI рдЪрд╛ рд╡рд╛рдкрд░ рдХрд░реВ
рдпрд╛ рдорд╛рд▓рд┐рдХреЗрддреАрд▓ рд▓реЗрдЦ
рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ #1 рдордзреНрдпреЗ рдХреЕрдирд░реА рддреИрдирд╛рддреА: рдЧрд┐рдЯрд▓реЕрдм рд╕реАрдЖрдп - (рд╣рд╛ рд▓реЗрдЦ)
- Istio рд╡рд╛рдкрд░реВрди рдХреЕрдирд░реА рдЙрдкрдпреЛрдЬрди
- рдЬреЗрдирдХрд┐рдиреНрд╕-рдПрдХреНрд╕ рдЗрд╕реНрдЯрд┐рдУ рдлреНрд▓реЕрдЧрд░ рд╡рд╛рдкрд░реВрди рдХреЕрдирд░реА рдЙрдкрдпреЛрдЬрди
рдХреЕрдирд░реА рдЙрдкрдпреЛрдЬрди
рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрд╢рд╛ рдЖрд╣реЗ рдХреА рддреБрдореНрд╣реА рд╡рд╛рдЪрд╛рд▓
рдЕрд░реНрдЧреЛ рд░реЛрд▓рдЖрдЙрдЯреНрд╕
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 рдкреНрд▓рдЧрдЗрди)
рдЙрджрд╛рд╣рд░рдг рдЕрд░реНрдЬ
рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЛрдб рдЖрдгрд┐ рдкрд╛рдпрд╛рднреВрдд рд╕реБрд╡рд┐рдзрд╛рдВрд╕рд╛рдареА рд╕реНрд╡рддрдВрддреНрд░ рднрд╛рдВрдбрд╛рд░ рдЕрд╕рдгреЗ рдЪрд╛рдВрдЧрд▓реЗ рдЖрд╣реЗ.
рдЕрд░реНрдЬрд╛рд╕рд╛рдареА рднрд╛рдВрдбрд╛рд░
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
рдЖрдкрдг рдХрд╛рдЯрд╛ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ 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
рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯ рдкреНрд░рдорд╛рдгреЗрдЪ рдХрд╛рд░реНрдп рдХрд░рддреЗ. рдЬрд░ рдЖрдореНрд╣реА рдЕрдкрдбреЗрдЯ рдзреЛрд░рдг рд╕реЗрдЯ рдХреЗрд▓реЗ рдирд╛рд╣реА (рдЬрд╕реЗ рдпреЗрдереЗ рдХреЕрдирд░реА) рддреЗ рдбреАрдлреЙрд▓реНрдЯ рд░реЛрд▓рд┐рдВрдЧ-рдЕрдкрдбреЗрдЯ рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯрд╕рд╛рд░рдЦреЗ рд╡рд╛рдЧреЗрд▓.
рдХреЕрдирд░реА рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯрд╕рд╛рдареА рдЖрдореНрд╣реА рдпрд╛рдорд▓рдордзреНрдпреЗ рджреЛрди рдкрд╛рдпрд▒реНрдпрд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЛ:
- рдХреЕрдирд░реАрдХрдбреЗ 10% рд░рд╣рджрд╛рд░реА (рдореЕрдиреНрдпреБрдЕрд▓ рдУрдХреЗ рд╕рд╛рдареА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рд╛)
- рдХреЕрдирд░реАрдХрдбреЗ 50% рд░рд╣рджрд╛рд░реА (2 рдорд┐рдирд┐рдЯреЗ рдерд╛рдВрдмрд╛ рдирдВрддрд░ 100% рдкрд░реНрдпрдВрдд рд╕реБрд░реВ рдареЗрд╡рд╛)
рдкреНрд░рд╛рд░рдВрднрд┐рдХ рддреИрдирд╛рддреА рдХрд░рдд рдЖрд╣реЗ
рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЙрдкрдпреЛрдЬрдирд╛рдирдВрддрд░, рдЖрдордЪреА рд╕рдВрд╕рд╛рдзрдиреЗ рдпрд╛рд╕рд╛рд░рдЦреА рджрд┐рд╕рддреАрд▓:
рдЖрдгрд┐ рдЖрдореНрд╣рд╛рд▓рд╛ рдХреЗрд╡рд│ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдЪреНрдпрд╛ рдкрд╣рд┐рд▓реНрдпрд╛ рдЖрд╡реГрддреНрддреАрд╡рд░реВрди рдкреНрд░рддрд┐рд╕рд╛рдж рдорд┐рд│рддреЛ:
рдХреЕрдирд░реА рдЙрдкрдпреЛрдЬрди рдХрд░рдд рдЖрд╣реЗ
рдкрд╛рдпрд░реА 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
...
рдЖрдгрд┐ рдЖрдореНрд╣реА рдмрджрд▓рд╛рдВрдирд╛ рдзрдХреНрдХрд╛ рджреЗрддреЛ, рдореНрд╣рдгреВрди рдЧрд┐рдЯрд▓реЕрдм рд╕реАрдЖрдп рддреИрдирд╛рдд рдХрд░рддреЗ рдЖрдгрд┐ рдЖрдореНрд╣реА рдмрджрд▓ рдкрд╛рд╣рддреЛ:
рдЖрддрд╛ рдЖрдореНрд╣реА рд╕реЗрд╡реЗрдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдХреЗрд▓реНрдпрд╛рд╕:
рдЫрд╛рди! рдЖрдореНрд╣реА рдЖрдордЪреНрдпрд╛ рдХреЕрдирд░реА рддреИрдирд╛рддреАрдЪреНрдпрд╛ рдордзреНрдпрднрд╛рдЧреА рдЖрд╣реЛрдд. рдЖрдореНрд╣реА рдзрд╛рд╡реВрди рдкреНрд░рдЧрддреА рдкрд╛рд╣реВ рд╢рдХрддреЛ:
kubectl argo rollouts get rollout rollout-canary
рдкрд╛рдпрд░реА 2: 50% рд░рд╣рджрд╛рд░реА:
рдЖрддрд╛ рдкреБрдврдЪреНрдпрд╛ рдкрд╛рдпрд░реАрд╡рд░ рдЬрд╛рдК рдпрд╛: релреж% рд░рд╣рджрд╛рд░реА рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдгреЗ. рдЖрдореНрд╣реА рд╣реА рдкрд╛рдпрд░реА рд╡реНрдпрдХреНрддрд┐рдЪрд▓рд┐рддрдкрдгреЗ рдЪрд╛рд▓рд╡рдгреНрдпрд╛рд╕рд╛рдареА рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЗрд▓реА рдЖрд╣реЗ:
kubectl argo rollouts promote rollout-canary # continue to step 2
рдЖрдгрд┐ рдЖрдордЪреНрдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдиреЗ рдирд╡реАрди рдЖрд╡реГрддреНрддреНрдпрд╛рдВрдордзреВрди 50% рдкреНрд░рддрд┐рд╕рд╛рдж рдкрд░рдд рдХреЗрд▓реЗ:
рдЖрдгрд┐ рд░реЛрд▓рдЖрдЙрдЯ рдкреБрдирд░рд╛рд╡рд▓реЛрдХрди:
рдЕрдкреНрд░рддрд┐рдо.
рдкрд╛рдпрд░реА 3: 100% рд░рд╣рджрд╛рд░реА:
рдЖрдореНрд╣реА рддреЗ рд╕реЗрдЯ рдХреЗрд▓реЗ рдЬреЗрдгреЗрдХрд░реВрди 2 рдорд┐рдирд┐рдЯрд╛рдВрдирдВрддрд░ 50% рдЪрд░рдг рдЖрдкреЛрдЖрдк рд╕рдВрдкреЗрд▓ рдЖрдгрд┐ 100% рдЪрд░рдг рд╕реБрд░реВ рд╣реЛрдИрд▓:
рдЖрдгрд┐ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЖрдЙрдЯрдкреБрдЯ:
рдЖрдгрд┐ рд░реЛрд▓рдЖрдЙрдЯ рдкреБрдирд░рд╛рд╡рд▓реЛрдХрди:
рдХреЕрдирд░реА рддреИрдирд╛рддреА рдкреВрд░реНрдг рдЭрд╛рд▓реА рдЖрд╣реЗ.
Argo Rollouts рд╕рд╣ рдЕрдзрд┐рдХ рдЙрджрд╛рд╣рд░рдгреЗ
рдпреЗрдереЗ рдЖрдгрдЦреА рдЙрджрд╛рд╣рд░рдгреЗ рдЖрд╣реЗрдд, рдЬрд╕реЗ рдХреА рдкрд░реНрдпрд╛рд╡рд░рдг рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдХрд╕реЗ рд╕реЗрдЯ рдХрд░рд╛рдпрдЪреЗ рдЖрдгрд┐ рдХреЕрдирд░реАрд╡рд░ рдЖрдзрд╛рд░рд┐рдд рддреБрд▓рдирд╛:
Argo Rollouts рдЖрдгрд┐ Argo CI рдмрджреНрджрд▓ рд╡реНрд╣рд┐рдбрд┐рдУ
рдореА рдЦрд░реЛрдЦрд░рдЪ рдпрд╛ рд╡реНрд╣рд┐рдбрд┐рдУрдЪреА рд╢рд┐рдлрд╛рд░рд╕ рдХрд░рддреЛ, рд╣реЗ рджрд░реНрд╢рд╡рд┐рддреЗ рдХреА Argo Rollouts рдЖрдгрд┐ Argo CI рдПрдХрддреНрд░ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛рдд:
рдкрд░рд┐рдгрд╛рдо
рдорд▓рд╛ CRDs рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдХрд▓реНрдкрдирд╛ рдЦрд░реЛрдЦрд░ рдЖрд╡рдбрддреЗ рдЬреА рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рдЙрдкрдпреЛрдЬрди рдХрд┐рдВрд╡рд╛ рдкреНрд░рддрд┐рдХреГрддреА, рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рд░рд╣рджрд╛рд░реА рдЗрддреНрдпрд╛рджреАрдВрдЪреНрдпрд╛ рдирд┐рд░реНрдорд┐рддреАрдЪреЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдХрд░рддрд╛рдд. рддреНрдпрд╛рдВрдЪреНрдпрд╛рд╕реЛрдмрдд рдХрд╛рдо рд╕реБрд░рд│реАрдд рдЪрд╛рд▓рддреЗ. рдкреБрдвреЗ рдореА Argo CI рд╕рд╣ рдПрдХрддреНрд░реАрдХрд░рдгрд╛рдЪреА рдЪрд╛рдЪрдгреА рдШреЗрдК рдЗрдЪреНрдЫрд┐рддреЛ.
рддрдерд╛рдкрд┐, рдЕрд░реНрдЧреЛ рд╕реАрдЖрдп рдЖрдгрд┐ рдлреНрд▓рдХреНрд╕ рд╕реАрдЖрдпрдЪреЗ рдПрдХ рдореЛрдареЗ рд╡рд┐рд▓реАрдиреАрдХрд░рдг рдпреЗрдд рдЕрд╕рд▓реНрдпрд╛рдЪреЗ рджрд┐рд╕рддреЗ, рдореНрд╣рдгреВрди рдореА рдирд╡реАрди рдкреНрд░рдХрд╛рд╢рди рдпреЗрдИрдкрд░реНрдпрдВрдд рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реВ рд╢рдХрддреЛ:
рддреБрдореНрд╣рд╛рд▓рд╛ Argo Rollouts рдХрд┐рдВрд╡рд╛ Argo CI рдЪрд╛ рдХрд╛рд╣реА рдЕрдиреБрднрд╡ рдЖрд╣реЗ рдХрд╛?
рдЖрдордЪреНрдпрд╛ рдмреНрд▓реЙрдЧрд╡рд░реАрд▓ рдЗрддрд░ рд▓реЗрдЦ рджреЗрдЦреАрд▓ рд╡рд╛рдЪрд╛:
Nginx рд╡реЗрдм рд╕рд░реНрд╡реНрд╣рд░рд╕рд╣ рд╕реНрдкреНрд░рд┐рдВрдЧ рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕рдЪреА рдмреНрд▓реВ-рдЧреНрд░реАрди рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕: рд╕рд┐рд╕реНрдЯрдо рд╕рдВрд╕рд╛рдзрди рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреЗ рдЗрддрдХреЗ рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ рдХрд╛ рдЖрд╣реЗ? Hashicorp Consul рдЪреНрдпрд╛ Kubernetes Authorization рдЪрд╛ рдкрд░рд┐рдЪрдп рдЯреЗрдХрдЯрди рдкрд╛рдЗрдкрд▓рд╛рдЗрди - рдХреБрдмрд░реНрдиреЗрдЯреНрд╕-рдиреЗрдЯрд┐рд╡реНрд╣ рдкрд╛рдЗрдкрд▓рд╛рдЗрди Nginx рд╕рд╛рдареА рдбрд╛рдпрдиреЕрдорд┐рдХ рдореЙрдбреНрдпреВрд▓ рддрдпрд╛рд░ рдХрд░рдгреЗ рд░реЗрдбрдорд╛рдЗрдирд╕рд╛рдареА рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдмреЙрдЯ. рд╕реНрд╡рддрдГрд╕рд╛рдареА рдЖрдгрд┐ рдЗрддрд░рд╛рдВрд╕рд╛рдареА рдЬреАрд╡рди рдХрд╕реЗ рд╕реЛрдкреЗ рдХрд░рд╛рд╡реЗ
рд╕реНрддреНрд░реЛрдд: www.habr.com