Kubernetes-เดฒเตเดเตเดเต เดเดพเดจเดฑเดฟ เดตเดฟเดจเตเดฏเดพเดธเดเตเดเตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดเดเตเดเตพ k8s-native Argo Rollouts เดตเดฟเดจเตเดฏเดพเดธ เดเตบเดเตเดฐเตเดณเดฑเตเด GitlabCI เดเด เดเดชเดฏเตเดเดฟเดเตเดเตเด.
เด เดชเดฐเดฎเตเดชเดฐเดฏเดฟเดฒเต เดฒเตเดเดจเดเตเดเตพ
เดเตเดฌเตผเดจเตเดฑเตเดฑเดธเดฟเดฒเต เดเดพเดจเดฑเดฟ เดตเดฟเดจเตเดฏเดพเดธเด #1: Gitlab CI - (เด เดฒเตเดเดจเด)
- เดเดธเตเดคเดฟเดฏเต เดเดชเดฏเตเดเดฟเดเตเดเต เดเดพเดจเดฑเดฟ เดตเดฟเดจเตเดฏเดพเดธเด
- Jenkins-X Istio Flagger เดเดชเดฏเตเดเดฟเดเตเดเตเดณเตเดณ เดเดพเดจเดฑเดฟ เดตเดฟเดจเตเดฏเดพเดธเด
เดเดพเดจเดฑเดฟ เดตเดฟเดจเตเดฏเดพเดธเด
เดจเดฟเดเตเดเตพ เดตเดพเดฏเดฟเดเตเดเตเดฎเตเดจเตเดจเต เดเดเตเดเตพ เดชเตเดฐเดคเตเดเตเดทเดฟเดเตเดเตเดจเตเดจเต
เดเตผเดเต เดฑเตเตพเดเดเตเดเตเดเตพ
เดเดฐเต เดเตเดฌเตผเดจเตเดฑเตเดฑเดธเต เดจเตเดฑเตเดฑเตเดตเต เดกเดฟเดชเตเดฒเตเดฏเตโเดฎเตเดจเตเดฑเต เดเตบเดเตเดฐเตเดณเดฑเดพเดฃเต เดเตผเดเต เดฑเตเตพเดเดเตเดเตเดธเต. เดเดคเต เดเตเดฌเตผเดจเตเดฑเตเดฑเตเดเตพเดเตเดเต เดเดฐเต CRD (เดเดธเตเดฑเตเดฑเด เดฑเดฟเดธเตเดดเตเดธเต เดกเตเดซเดจเดฟเดทเตป) เดจเตฝเดเตเดจเตเดจเต. เดเดคเดฟเดจเต เดจเดจเตเดฆเดฟ, เดเดเตเดเตพเดเตเดเต เดเดฐเต เดชเตเดคเดฟเดฏ เดเดจเตเดฑเดฟเดฑเตเดฑเดฟ เดเดชเดฏเตเดเดฟเดเตเดเดพเด: Rollout
, เดตเดฟเดตเดฟเดง เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดเดชเตเดทเดจเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเต เดจเตเดฒ-เดชเดเตเด, เดเดพเดจเดฑเดฟ เดตเดฟเดจเตเดฏเดพเดธเดเตเดเตพ เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเดเตเดเตเดจเตเดจเต.
เดเดฐเต เดเดทเตโเดเดพเดจเตเดธเตเดค เดเดฑเดตเดฟเดเด เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจ Argo Rollouts เดเตบเดเตเดฐเตเดณเตผ
Rollout,
เดเตเดฌเตเตผเดจเตเดฑเตเดฑเดธเดฟเดจเดพเดฏเดฟ เดฌเตเดฒเต-เดเตเดฐเตเตป, เดเดพเดจเดฑเดฟ เดคเตเดเดเตเดเดฟเดฏ เด เดงเดฟเด เดตเดฟเดจเตเดฏเดพเดธ เดคเดจเตเดคเตเดฐเดเตเดเตพ เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต. เดตเดฟเดญเดตเดRollout
เดคเตเดฒเตเดฏเดฎเดพเดฏ เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดทเดฎเดค เดจเตฝเดเตเดจเตเดจเตDeployment
, เด เดงเดฟเด เดตเดฟเดจเตเดฏเดพเดธ เดคเดจเตเดคเตเดฐเดเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเต เดฎเดพเดคเตเดฐเด.
เดตเดฟเดญเดตเดDeployments
เดตเดฟเดจเตเดฏเดพเดธเดคเตเดคเดฟเดจเต เดฐเดฃเตเดเต เดคเดจเตเดคเตเดฐเดเตเดเดณเตเดฃเตเดเต:RollingUpdate
ะธRecreate
. เด เดคเดจเตเดคเตเดฐเดเตเดเตพ เดฎเดฟเดเตเด เดเตเดธเตเดเดณเดฟเดฒเตเด เด เดจเตเดฏเตเดเตเดฏเดฎเดพเดฃเตเดเตเดเดฟเดฒเตเด, เดธเตเตผเดตเดฑเตเดเดณเดฟเดฒเตเดเตเดเตเดณเตเดณ เดตเดฟเดจเตเดฏเดพเดธเด เดตเดฒเดฟเดฏ เดคเตเดคเดฟเตฝ เดตเดฟเดจเดฟเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต, เดฌเตเดฒเต-เดเตเดฐเตเตป เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดเดพเดจเดฑเดฟ เดชเตเดฒเตเดณเตเดณ เด เดงเดฟเด เดคเดจเตเดคเตเดฐเดเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต, เด เดต เดตเดฟเดจเตเดฏเดพเดธ เดเตบเดเตเดฐเตเดณเดฑเดฟเตฝ เดฒเดญเตเดฏเดฎเดฒเตเดฒ. เดเตเดฌเตผเดจเตเดฑเตเดฑเดธเดฟเตฝ เด เดคเดจเตเดคเตเดฐเดเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต, เดเดชเดฏเตเดเตเดคเดพเดเตเดเตพ เด เดตเดฐเตเดเต เดตเดฟเดจเตเดฏเดพเดธเดเตเดเตพเดเตเดเต เดฎเตเดเดณเดฟเตฝ เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเตเดเตพ เดเดดเตเดคเตเดฃเตเดเดคเตเดฃเตเดเต. Argo Rollouts เดเตบเดเตเดฐเตเดณเตผ เด เดคเดจเตเดคเตเดฐเดเตเดเดณเต เดฒเดณเดฟเดคเดตเตเด เดกเดฟเดเตเดฒเดฑเตเดฑเตเดฑเตเดตเต, เดเตเตบเดซเดฟเดเตผ เดเตเดฏเตเดฏเดพเดตเตเดจเตเดจเดคเตเดฎเดพเดฏ เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเดณเดพเดฏเดฟ เดคเตเดฑเดจเตเดจเตเดเดพเดเตเดเตเดจเตเดจเต.
https://argoproj.github.io/argo-rollouts
เดฑเตเตพเดเดเตเดเตเดเตพเดเตเดเตเดชเตเดชเด เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดธเตเดเดฐเตเดฏเดชเตเดฐเดฆเดฎเดพเดฏ เดเดฐเต เดตเตเดฌเต เดเดจเตเดฑเตผเดซเตเดธเต เดจเตฝเดเตเดจเตเดจ เดเตผเดเต เดธเดฟเดเดฏเตเด เดเดฃเตเดเต, เด เดเตเดคเตเดค เดฒเตเดเดจเดคเตเดคเดฟเตฝ เดเดเตเดเตพ เด เดคเต เดจเตเดเตเดเดพเด.
Argo 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
เดเดคเต JSON เดเดฏเดฟ เดเดฐเต เดชเตเดฐเดคเดฟเดเดฐเดฃเด เดจเตฝเดเตเดจเตเดจ เดตเดณเดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดเดฐเต Python+Flask API เดเดฃเต. เดเดเตเดเตพ 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
เดจเดฟเดเตเดเดณเตเดเต เดเตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดฒเตเดเตเดเต.
เดเตปเดซเตเดฐเดพเดธเตเดเตเดฐเดเตเดเตผ Yaml
เดเตปเดซเตเดฐเดพเดธเตเดเตเดฐเดเตเดเตผ เดฑเดฟเดชเตเดชเตเดธเดฟเดฑเตเดฑเดฑเดฟเดเตเดเตเดณเตเดณเดฟเตฝ เดเดเตเดเตพเดเตเดเต เดธเตเดตเดจเดฎเตเดฃเตเดเต:
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
เดตเดฟเดจเตเดฏเดพเดธเด เดชเตเดฒเต เดคเดจเตเดจเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเต. เดเดเตเดเตพ เดเดฐเต เด
เดชเตโเดกเตเดฑเตเดฑเต เดธเตเดเตเดฐเดพเดฑเตเดฑเดเดฟ เดธเดเตเดเตเดเดฐเดฟเดเตเดเดฟเดฒเตเดฒเตเดเตเดเดฟเตฝ (เดเดตเดฟเดเต เดเดพเดจเดฑเดฟ เดชเตเดฒเต) เด
เดคเต เดกเดฟเดซเตเตพเดเตเดเต เดฑเตเดณเดฟเดเดเต-เด
เดชเตโเดกเตเดฑเตเดฑเต เดตเดฟเดจเตเดฏเดพเดธเด เดชเตเดฒเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเด.
เดเดพเดจเดฑเดฟ เดตเดฟเดจเตเดฏเดพเดธเดคเตเดคเดฟเดจเดพเดฏเดฟ เดเดเตเดเตพ yaml-เตฝ เดฐเดฃเตเดเต เดเดเตเดเดเตเดเตพ เดจเดฟเตผเดตเตเดตเดเดฟเดเตเดเตเดจเตเดจเต:
- เดเดพเดจเดฑเดฟเดฏเดฟเดฒเตเดเตเดเตเดณเตเดณ เดเตเดฐเดพเดซเดฟเดเตเดเดฟเดจเตเดฑเต 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
...
เดเดเตเดเตพ เดฎเดพเดฑเตเดฑเดเตเดเตพ เดตเดฐเตเดคเตเดคเตเดจเตเดจเต, เด เดคเดฟเดจเดพเตฝ Gitlab CI เดตเดฟเดจเตเดฏเดธเดฟเดเตเดเตเดจเตเดจเต, เดเดเตเดเตพ เดฎเดพเดฑเตเดฑเดเตเดเตพ เดเดพเดฃเตเดจเตเดจเต:
เดเดชเตเดชเตเตพ เดเดเตเดเตพ เดธเตเดตเดจเด เดเดเตเดธเดธเต เดเตเดฏเตเดฏเตเดเดฏเดพเดฃเตเดเตเดเดฟเตฝ:
เดเตเดณเตเดณเดพเด! เดเดเตเดเดณเตเดเต เดเดพเดจเดฑเดฟ เดตเดฟเดจเตเดฏเดพเดธเดคเตเดคเดฟเดจเตเดฑเต เดฎเดงเตเดฏเดคเตเดคเดฟเดฒเดพเดฃเต เดเดเตเดเตพ. เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเดฟเดฒเตเดเต เดจเดฎเตเดเตเดเต เดชเตเดฐเตเดเดคเดฟ เดเดพเดฃเดพเตป เดเดดเดฟเดฏเตเด:
kubectl argo rollouts get rollout rollout-canary
เดเดเตเดเด 2: 50% เดเตเดฐเดพเดซเดฟเดเต:
เดเดจเดฟ เดจเดฎเตเดเตเดเต เด เดเตเดคเตเดค เดเดเตเดเดคเตเดคเดฟเดฒเตเดเตเดเต เดชเตเดเดพเด: เดเตเดฐเดพเดซเดฟเดเตเดเดฟเดจเตเดฑเต 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 เดเด เดเดเตเดเดจเต เดเดฐเตเดฎเดฟเดเตเดเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเตเดตเตเดจเตเดจเต เดเดคเต เดเดพเดฃเดฟเดเตเดเตเดจเตเดจเต:
เดซเดฒเด
เด เดงเดฟเด เดคเดฐเด เดตเดฟเดจเตเดฏเดพเดธเดเตเดเตพ เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดชเดเตผเดชเตเดชเตเดเตพ, เดฑเตเดกเดฏเดฑเดเตโเดเต เดเตเดฐเดพเดซเดฟเดเต เดฎเตเดคเดฒเดพเดฏเดต เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเดคเต เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเดเตเดเตเดจเตเดจ เดธเดฟเดเตผเดกเดฟเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจ เดเดถเดฏเด เดเดพเตป เดถเดฐเดฟเดเตเดเตเด เดเดทเตเดเดชเตเดชเตเดเตเดจเตเดจเต. เด เดตเดฐเตเดเตเดชเตเดชเด เดเตเดฒเดฟ เดธเตเดเดฎเดฎเดพเดฏเดฟ เดจเดเดเตเดเตเดจเตเดจเต. เด เดเตเดคเตเดคเดคเดพเดฏเดฟ เดเดพเตป Argo CI-เดฏเตเดฎเดพเดฏเตเดณเตเดณ เดธเดเดฏเตเดเดจเด เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดพเตป เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจเต.
เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, Argo CI, Flux CI เดเดจเตเดจเดฟเดตเดฏเตเดเต เดเดฐเต เดตเดฒเดฟเดฏ เดฒเดฏเดจเด เดตเดฐเตเดจเตเดจเดคเดพเดฏเดฟ เดคเตเดจเตเดจเตเดจเตเดจเต, เด
เดคเดฟเดจเดพเตฝ เดชเตเดคเดฟเดฏ เดฑเดฟเดฒเตเดธเต เดตเดฐเตเดจเตเดจเดคเตเดตเดฐเต เดเดพเตป เดเดพเดคเตเดคเดฟเดฐเดฟเดเตเดเดพเด:
Argo Rollouts เด เดฒเตเดฒเตเดเตเดเดฟเตฝ Argo CI เดเดจเตเดจเดฟเดตเดฏเดฟเตฝ เดจเดฟเดเตเดเตพเดเตเดเต เดเดจเตเดคเตเดเตเดเดฟเดฒเตเด เด เดจเตเดญเดตเด เดเดฃเตเดเต?
เดเดเตเดเดณเตเดเต เดฌเตเดฒเตเดเดฟเดฒเต เดฎเดฑเตเดฑเต เดฒเตเดเดจเดเตเดเดณเตเด เดตเดพเดฏเดฟเดเตเดเตเด:
Nginx เดตเตเดฌเต เดธเตเตผเดตเดฑเดฟเดจเตเดชเตเดชเด เดธเตเดชเตเดฐเดฟเดเดเต เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเดณเตเดเต เดฌเตเดฒเต-เดเตเดฐเตเตป เดตเดฟเดจเตเดฏเดพเดธเด เดเตเดฌเตเตผเดจเตเดฑเตเดฑเดธเต: เดธเดฟเดธเตเดฑเตเดฑเด เดฑเดฟเดธเตเดดเตโเดธเต เดฎเดพเดจเตเดเตโเดฎเตเดจเตเดฑเต เดเตเตบเดซเดฟเดเตผ เดเตเดฏเตเดฏเตเดฃเตเดเดคเต เดเดจเตเดคเตเดเตเดฃเตเดเต? เดนเดพเดทเดฟเดเตเตผเดชเตเดชเต เดเตเตบเดธเดฒเดฟเดจเตเดฑเต เดเตเดฌเตผเดจเตเดฑเตเดฑเดธเต เดเดคเดฑเตเดธเตเดทเดจเตเดฑเต เดเดฎเตเดเด เดเตเดเตเดเตบ เดชเตเดชเตเดชเตเดฒเตเตป - เดเตเดฌเตผเดจเตเดฑเตเดฑเดธเต-เดจเตเดฑเตเดฑเตเดตเต เดชเตเดชเตเดชเตเดฒเตเดจเตเดเตพ Nginx-เดจเดพเดฏเดฟ เดกเตเดจเดพเดฎเดฟเดเต เดฎเตเดกเตเดฏเตเดณเตเดเตพ เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเดจเตเดจเต Redmine-เดจเตเดณเตเดณ เดเตเดฒเดฟเดเตเดฐเดพเด เดฌเตเดเตเดเต. เดจเดฟเดเตเดเตพเดเตเดเตเด เดฎเดฑเตเดฑเตเดณเตเดณเดตเตผเดเตเดเตเดฎเดพเดฏเดฟ เดเตเดตเดฟเดคเด เดเดเตเดเดจเต เดฒเดณเดฟเดคเดฎเดพเดเตเดเดพเด
เด เดตเดฒเดเดฌเด: www.habr.com