
쿠버네티스 어나더 클래스 지상편: Sprint2 Day17 ArgoCD 3
Argo Rollouts
ArgoCD 없이도 Rollouts(Blue/Green, Canary) 배포가 가능하다.
ArgoCD와 독립적인 솔루션이며, ArgoCD와 함께 사용하면 ArgoCD 대시보드에서 Rollouts 버튼이 생긴다.
Blue/Green 배포
운영 환경에서만 테스트가 가능한 환경에서 주로 사용하는 배포 전략이다.
배포 시 롤백이 빠르다.
배포 중 V1 과 V2 간의 동시 호출이 발생하지 않는다.
Script를 사용해 자동 배포가 가능하다.
V2에 과도한 트래픽이 유입될 경우 문제가 발생할 수 있다.
Rollouts을 사용한 Blue/Green 배포 과정
Rollout 컨테이너 → Service 2개 지정: Active(서비스 사용자 접근), Preview(V2로만 접근)
V1(Blue) 배포
Rollout → Replica Set V1 → Pod V1 ← Active / Preview Service
배포 이전에는 2개 서비스 모두 Blue를 바라본다
V2(Green) 배포
Rollout → Replica Set V1 → Pod V1 ← Active Service
Rollout → Replica Set V2 → Pod V2 ←Preview Service ← QA담당자
배포 이후에 Preview Service만 Green을 바라본다.
Promote
Pod V1 삭제 ← Promote → Active / Preview Service → Pod V2
Promote를 진행하면 Blue는 제거한다
Canary 배포
특정 헤더 값에 한해 트래픽이 유입되도록 할 수 있다.
서서히 트래픽을 전환하므로 콜드 스타트를 방지할 수 있다.
업그레이드 목적 이외에도 두 버전을 비교하기 위한 A/B 테스트에도 사용된다.
Rollouts을 사용한 Canary 배포 과정
Blue/Green처럼 새 서비스를 만들지 않아도 트래픽을 조절할 수 있다.
V1 배포
Rollout → Replica Set V1 → Pod V1 ← Service
V2(Canary) 배포
Rollout → Replica Set V1 → Pod V1 ← Service
Rollout → Replica Set V2 → Canary Pod ← Service
Promote
순차적으로 Cananry Pod의 비중을 늘림
setWeight: 전체 Pod에서 Canary가 차지하는 비중
pause: {} : Promote가 올 때까지 무한정 대기
5. Argo Rollouts를 이용한 Blue-Green 배포 - 2233
5-2. App 생성 하기 - [+ NEW APP] 클릭
5-3. 배포하기 - [SYNC] 클릭 > [SYNCHRONIZE] 클릭
5-4. 배포 확인
배포 완료
5-5. 트래픽 보내기
5-6. ArgoCD UI에서 Blue/Green 배포 시작하기
rollout.yaml
spec:
replicas: 2
strategy:
blueGreen:
activeService: api-tester-2233-active
previewService: api-tester-2233-preview
autoPromotionEnabled: false
Rollout을 사용하기 위해 배워야할 부분은 spec - strategy - blueGreen 뿐
autoPromotionEnabled: false
true일 경우 Green 파드가 정상 작동하면 Promote가 자동으로 반영된다.
5-6-3. Git에서 image의 tag 변경
5-6-4. ArgoCD에서 Applications > api-tester-2233 > [SYNC] 클릭
Git의 수정 사항을 감지함
5-6-5. 트래픽 확인
rollouts-pod-template-hash 를 사용해 트래픽을 전환할 수 있다.
5-6-6. Promote 진행
Rollout 대시보드는 기본적으로 안만들어짐
Rollback: Green 파드 삭제
Restart: Blue/Green 파드 모두 재시작, 원하는 파드를 K8s에서 삭제하여 재시작하는 방법이 더 좋음
Promote: 다음 단계
PromoteFull: 배포 완료
Promote를 진행한다.
5-6-7. 트래픽 확인
5-7. Rollout CLI로 조회 해보기배포 상황을 모니터링해줌
6. Argo Rollouts를 이용한 Carary 배포 - 2234
6-1. Master에서 Kubectl로 Rollouts 배포하기
6-2. 배포 모니터링
6-3. 트래픽 보내기 (1.0.0 App 연결)
6-5. Argo Rollouts CLI로 Canary 배포 시작하기 (1.0.0 -> 2.0.0로 변경)Canary Pod가 만들어졌다.
6-7. 트래픽 확인 (1.0.0 App 연결, 2.0.0 App 연결)
트래픽이 Canary로 분산되고 있다.
Promote를 진행해 다음 단계로 넘어간다.
전체 Pod중 66%의 Canary Pod가 생성되었다.
6-8. 트래픽 확인 (2.0.0 App 연결)
배포가 모두 완료되었다!
6-9. 리소스 정리하기
댓글을 작성해보세요.