← 문제 라이브러리
CI/CD 중급 CICD-103 · 18분

카나리가 승인됐는데 새 버전이 500을 쏟아냄: 배포된 매니페스트에 readiness probe가 없음

API 카나리 배포가 Argo CD에서 Healthy로 표시되고 자동 승격까지 됐는데, 승격 직후 오류율이 급증해 긴급 롤백했습니다.

검수된 문제무료
시나리오

API 카나리 배포가 Argo CD에서 Healthy로 표시되고 자동 승격까지 됐는데, 승격 직후 오류율이 급증해 긴급 롤백했습니다. 새 버전은 기동 뒤 DB 연결 풀을 채우는 30초 동안 요청을 받으면 500을 냅니다. 차트에는 이를 막는 readinessProbe가 분명히 있습니다. 이 팀은 카나리용 라벨과 이미지를 바꾸려고 Helm post-renderer(kustomize 패치)를 씁니다. 개발자들은 앱 코드 버그라며 로그를 뒤지고 있습니다.

단서
렌더링 결과 비교
$ helm template api ./chart | grep -c readinessProbe
1

$ kubectl get deploy api-canary -o yaml | grep -c readinessProbe
0
post-renderer 패치 (canary.yaml)
- op: replace
  path: /spec/template/spec/containers/0
  value:
    name: api
    image: registry.acme.dev/api:5.2.0-canary
    env:
      - { name: CANARY, value: "true" }
새 파드 로그
00:00:01 INFO  starting api 5.2.0
00:00:02 ERROR GET /v1/orders 500 connection pool not ready
00:00:31 INFO  connection pool ready (40 connections)

과제 원인을 좁히고, 서비스를 되살리는 순서(검증 포함)와 재발 방지책을 적어 보세요.

먼저 볼 것
  • 템플릿 결과와 실제로 적용된 매니페스트는 다를 수 있다
  • Healthy 판정이 무엇을 근거로 하는지
점검 체크리스트
  1. helm template 결과와 클러스터의 실제 매니페스트 비교
  2. post-renderer 패치가 무엇을 바꾸는지(replace 범위)
  3. 파드가 Ready가 된 시점과 앱이 준비된 시점 비교