Search

EKS + ALB 환경에서 Argo Rollouts 503 에러 없는 카나리 배포 적용기

URL
생성 일시
2026/04/24 00:06
최종 편집 일시
2026/04/24 00:06
태그
여기어때
파일과 미디어
|| 1. 들어가며 안녕하세요. 숙박플랫폼개선TF팀 카이퍼입니다. 배포는 늘 긴장의 순간입니다. 특히 운영 환경에서 실시간 트래픽을 받고 있는 서비스의 새 버전을 내보낼 때, “이번에도 무사히 넘어가겠지” 라는 막연한 기대에 기대고 계시다면 이미 위험 신호일 수 있습니다. 저희 팀은 EKS + ALB 환경에서 운영되는 서비스를 개발하고 있으며, Kubernetes 인프라 자체는 SRE팀과 DevOps팀에서 구축·관리하고 있습니다. Argo Rollouts 역시 초기부터 SRE팀에서 구축해주신 환경을 활용하고 있습니다. 배경: Deployment 롤링 → Blue/Green → 그리고 다시 기존에는 Kubernetes 기본 Deployment의 롤링 업데이트를 사용하고 있었습니다. 간편하지만, 운영 관점에서 아쉬운 점이 있었습니다. 즉각 롤백의 어려움: 문제 발생 시 이전 버전으로 되돌리려면 다시 롤링 업데이트를 수행해야 합니다. 그 사이 장애가 지속됩니다. 배포 중간 개입 불가: 새 버전을 미리 띄워놓고 검증한 뒤 전환하는 것이 불가능합니다. 이러한 한계를 보완하기 위해 과거에 Argo Rollouts의 Blue/Green 전략을 적용했었습니다. Blue/Green은 새 버전(Green)을 미리 띄워 preview로 검증한 뒤 전환할 수 있고, 문제 시 즉각 롤백이 가능합니다. 하지만 Promote 시점에 약 30초간 503이 발생하는 문제가 확인되어, 결국 롤링 업데이트로 원복할 수밖에 없었습니다. 이후 카나리 배포가 필요한 요건이 생겼습니다. 카나리는 Blue/Green에서는 불가능했던 트래픽 비율을 단계적으로 제어(20% → 50% → 80% → 100%)할 수 있어, 신규 버전의 영향을 최소화하면서 점진적으로 전환할 수 있습니다. 다만 과거 Blue/Green에서 겪었던 503 문제가 카나리에서도 동일하게 발생할 수 있기에, 이를 근본적으로 해결하는 방법을 찾게 되었고, 그 답이 Canary PingPong 전략이었습니다. 이 글에서는 왜 503이 발생하는지 원인을 분석하고, PingPong으로 어떻게 해결했는지, 그리고 실제 적용 과정과 테스트 결과를 공유하겠습니다. 2. Argo Rollouts 배포 전략 톺아보기 Argo Rollouts가 제공하는 대표 배포 전략 중, Blue/Green과 기본 Canary가 어떤 흐름으로 동작하는지 4단계(Phase)로 살펴보겠습니다. Blue/Green 두 환경(Blue/Green)을 병렬로 유지하다가, Promote 시점에 active 서비스를 순간 절체하는 방식입니다. Phase 1 — 안정 상태: Blue(v1)가 100% 트래픽을 처리합니다. Phase 2 — 배포: Green(v2) RS가 생성되고, previewService로 내부 검증이 가능합니다. Phase 3 — Promote: activeService의 selector를 v1→v2로 교체합니다. Phase 4 — 안정화: Green(v2)이 새로운 stable이 되고, v1 RS가 제거됩니다. Canary ALB ForwardConfig의 weight를 단계적으로 증가시키며 점진적으로 트래픽을 전환하는 방식입니다. Phase 1 — 안정 상태: v1이 단일 Target Group에서 100% 트래픽을 처리합니다. Phase 2 — 배포: canary Pod 생성 후 weight를 10% → 30% → … 단계적으로 증가시킵니다. Phase 3 — Promote: weight 100% 도달 후, stableService의 selector를 v2로 교체합니다. Phase 4 — 안정화: v2가 새로운 stable이 되고, canary RS가 정리됩니다. 두 전략 모두 Phase 1, 2, 4는 크게 다르지 않습니다. 핵심 차이는 Phase 3(Promote) 에서 발생하며, 이 부분이 503 문제의 원인이 됩니다. 다음 장에서 자세히 살펴보겠습니다. 3. EKS + ALB에서의 503 문제 저희가 직접 겪은 내용입니다. Blue/Green과 기본 Canary 전략을 차례