LabHub

CAPA — Argo 프로젝트 인증 어소시에이트 · Argo Rollouts 점진적 배포 · 실습

카나리·블루그린과 되돌리기

LabHub 에서 이어서 보기

목표

카나리와 블루그린 Rollout 매니페스트, 그리고 지표 기반 자동 롤백을 담당하는 AnalysisTemplate 을 작성하고, 대응되는 Service 와 Deployment 를 실제로 올려 롤아웃과 되돌리기를 손으로 수행합니다.

왜 중요한가

점진적 배포의 핵심은 "새 버전을 얼마나 노출할지" 와 "무엇을 보고 계속할지 결정할지" 두 가지입니다. setWeight 는 앞의 답이고 analysis 는 뒤의 답입니다. duration 없는 pause 는 그 판단을 사람에게 넘기는 자리이고, AnalysisTemplate 은 같은 판단을 지표에 맡기는 자리입니다. 한편 되돌리기 자체는 Argo Rollouts 의 발명이 아니라 쿠버네티스가 ReplicaSet 을 리비전으로 남겨 두기 때문에 가능한 일입니다. 이 실습에서 두 층을 모두 만져 보면 Rollout 이 어디까지 새로운 것인지 구분이 섭니다.

단계

1. /root/capa-rollout/ 디렉터리를 만들고 rollout.yaml 에 apiVersion argoproj.io/v1alpha1, kind Rollout, metadata.name capa-web, metadata.namespace capa-rollout, spec.replicas 4, spec.selector.matchLabels.app capa-web, 컨테이너 이미지 nginx:1.27 을 쓰세요.
2. 같은 파일의 spec.strategy.canary.steps 를 다섯 개 이상으로 만들되, 첫 스텝은 setWeight: 20, 두 번째는 pause: {duration: 30s}, 세 번째는 setWeight: 50, 마지막 스텝은 setWeight: 100 이 되게 하세요.
3. /root/capa-rollout/analysistemplate.yaml 에 kind AnalysisTemplate, metadata.name capa-success-rate 를 쓰고 spec.metrics[0] 에 name success-rate, interval 30s, failureLimit 3, 0.95 이상을 요구하는 successCondition, 그리고 provider.prometheus.address 를 채우세요.
4. rollout.yaml 의 카나리 스텝 중 하나를 analysis 스텝으로 만들어 templates[0].templateNamecapa-success-rate 를 가리키게 하고, spec.strategy.canary.canaryServicecapa-web-canary, stableServicecapa-web-stable, trafficRouting.nginx.stableIngresscapa-web-stable 로 지정하세요.
5. /root/capa-rollout/rollout-bluegreen.yaml 에 kind Rollout, metadata.name capa-api 를 쓰고 spec.strategy.blueGreen 아래에 activeService capa-api-active, previewService capa-api-preview, autoPromotionEnabled false, scaleDownDelaySeconds 60 을 넣으세요. 이 파일에는 canary 를 함께 쓰지 마세요.
6. 클러스터에 네임스페이스 capa-rollout 을 만들고 그 안에 Service capa-web-stablecapa-web-canary 를 실제로 만드세요. 둘 다 type ClusterIP, spec.selector.app capa-web, 포트 80 입니다.
7. 같은 네임스페이스에 Deployment capa-web 을 실제로 만드세요. replicas4, spec.selector.matchLabels.appcapa-web, 컨테이너 이미지는 nginx:1.27 입니다.
8. capa-web 의 이미지를 nginx:1.28 로 한 번 바꿔 새 리비전을 만든 뒤 되돌리세요. 최종 상태는 이미지가 다시 nginx:1.27 이고 리비전 번호가 3 이상이어야 합니다.

참고

단계 8개

  1. Rollout 골격
  2. 가중치와 멈춤 스텝
  3. AnalysisTemplate 작성
  4. 분석 스텝과 트래픽 라우팅 연결
  5. 블루그린 전략
  6. 안정·카나리 서비스 두 개 만들기
  7. 대응되는 Deployment 올리기
  8. 올렸다가 되돌리기