
EKS와 ALB의 구조적 한계를 넘어선 무중단 카나리 배포 실전 가이드
서비스 배포의 안정성은 기술적 성취의 척도이지만, 인프라 환경에 따라 예기치 못한 에러가 발생하곤 합니다. 이 아티클은 EKS 환경에서 ALB와 Argo Rollouts를 연동할 때 발생하는 고질적인 503 에러의 원인을 심층 분석하고, 가중치 기반 스왑 전략인 'PingPong'을 통해 진정한 제로 다운타임을 달성한 생생한 여정을 담고 있습니다.
EKS 환경에서 ALB를 로드밸런서로 활용하며 Argo Rollouts 도입을 검토 중인 엔지니어에게 이 아티클은 가장 확실한 실전 답안지가 될 것입니다.
EKS와 ALB 환경에서 Argo Rollouts의 Blue/Green이나 기본 Canary 전략을 사용할 경우, 배포 전환(Promote) 단계에서 약 30초간 503 에러가 발생하는 구조적 문제가 있었습니다. 이는 서비스 셀렉터가 변경될 때 ALB 타겟 그룹이 타겟을 재등록하고 헬스체크를 수행하는 과정에서 발생하는 지연 때문이며, 기존의 Pod Readiness Gate로는 이 문제를 해결할 수 없었습니다.
Argo Rollouts v1.2에서 도입된 'Canary PingPong' 전략을 적용하여 서비스 셀렉터를 변경하지 않고 고정된 두 개의 서비스(Ping/Pong) 간에 ALB ForwardConfig의 가중치(Weight)만 스왑하도록 구성했습니다. 또한 Ingress 백엔드 설정을 'use-annotation'으로 변경하여 ALB 컨트롤러가 가중치 기반 라우팅을 정상적으로 수행하도록 조치했습니다.
실제 시나리오 테스트 결과, 정상적인 배포 및 롤백 상황에서 503 에러가 0건으로 관찰되며 무중단 배포를 성공적으로 구현했습니다. 다만, 카나리 진행 도중에 새로운 버전을 중첩 배포하는 특정 엣지 케이스에서는 약 6초간의 503 에러가 관찰되었으나 이는 배포 파이프라인의 가드 설정을 통해 관리가 가능한 수준으로 판단됩니다.
Trade-off
Ping/Pong 및 Root 서비스를 포함하여 총 3개의 Kubernetes 서비스 리소스를 관리해야 하므로 설정의 복잡성이 증가합니다. 또한 배포 중간에 새로운 배포를 트리거할 경우 일시적인 트래픽 유실이 발생할 수 있으므로 순차적인 배포 프로세스 준수가 강제됩니다.
두 개의 고정된 타겟 그룹을 유지하며 배포 시마다 서비스 셀렉터를 바꾸지 않고 ALB 가중치 값만 스왑하여 트래픽을 전환하는 전략입니다.
AWS 로드밸런서가 Pod의 준비 상태를 직접 확인하여 트래픽 투입 시점을 결정하는 기능입니다.
ALB Ingress Controller가 가중치 기반 라우팅(Weighted Routing)을 수행할 수 있도록 설정하는 세부 명세입니다.




