EKS + ALB 환경에서 Argo Rollouts 503 에러 없는 카나리 배포 적용기
데브옵스
EKS + ALB 환경에서 Argo Rollouts 503 에러 없는 카나리 배포 적용기
두줄요약
EKS + ALB 환경에서 Blue/Green과 기본 Canary의 Promote 시 503이 발생하는 원인을 분석했습니다. Argo Rollouts Canary PingPong으로 selector 변경 없이 weight만 교대해 문제를 해결했습니다.
문제 상황
- EKS + ALB 환경에서 Blue/Green과 기본 Canary 모두 Promote 시 약 30초간 503 발생
- Service selector 변경으로 EndpointSlice와 ALB Target Group 재등록이 일어나며 헬스체크 전 공백 발생
- Pod 생성 시점에만 readiness gate가 주입되어 Promote 시점의 기존 Pod는 보호받지 못함
원인 분석
- Promote 단계에서 Service selector가 바뀌며 ALB target 재등록이 발생하는 구조
- 새 target이 healthy 상태가 되기 전 initial 상태로 남아 503 응답 유발
- ALB Pod Readiness Gate가 Service 매칭 시점에만 주입되는 구조적 한계
해결 방법
- Argo Rollouts Canary PingPong 전략 적용
- 두 Target Group을 고정하고 배포마다 stable/canary 역할만 교대
- Promote 시 selector 변경 없이 ALB ForwardConfig weight만 swap하여 503 제거
적용해볼 점
- pingService, pongService, rootService의 3개 Service 구성
- Ingress backend port를 use-annotation으로 설정해 ForwardConfig 활성화
- maxUnavailable 0, maxSurge 1, 단계적 setWeight와 pause로 점진 배포 운영
