CI/CD2분 읽기· 연습 문제 3개

GitHub Actions는 성공했는데 배포만 실패할 때 점검 순서

workflow는 green인데 rollout, promotion, health check 단계에서만 실패하는 상황에서 먼저 볼 신호, CLI 확인 순서, 흔한 오진, 안전한 복구 방향을 정리한 InfraTree 가이드입니다.

목차
  1. CI/CD 배포 문제의 출발점은 “초록불이 어디까지를 보장하나”다
  2. 1) 어느 단계에서 어긋났나
  3. 2) 아티팩트가 불변인가
  4. 3) 환경 드리프트
  5. 4) 되돌릴 수 있는가
  6. 정리
  7. 빠른 진단 체크리스트

CI/CD 배포 문제의 출발점은 “초록불이 어디까지를 보장하나”다

파이프라인이 성공했다는 건 스텝이 0으로 끝났다는 뜻일 뿐, 새 버전이 실제로 떠서 트래픽을 받는다는 보장이 아니다. 배포 트러블슈팅은 어느 단계까지가 실제로 검증됐는지를 가르는 데서 시작한다.

1) 어느 단계에서 어긋났나

빌드 → 테스트 → 이미지 푸시 → 배포 → 검증(rollout). 흔한 사각지대는 마지막 두 단계다. 배포 스텝이 apply만 하고 결과를 안 기다리면, 새 버전이 기동에 실패해도 파이프라인은 성공으로 끝난다.

kubectl rollout status deploy/<name> --timeout=120s   # 이 게이트가 없으면 초록불이 거짓말을 한다

2) 아티팩트가 불변인가

같은 태그(:latest)를 재사용하면 “무엇이 배포됐는지”가 모호해지고, 노드가 옛 이미지를 캐시해 반영이 안 된다. 이미지는 커밋 SHA나 digest로 고정해 “이 커밋 = 이 이미지 = 이 배포”가 1:1로 추적되게 한다.

3) 환경 드리프트

러너의 kubeconfig context, 대상 namespace, 주입되는 secret이 의도와 다르면 “성공했는데 엉뚱한 곳에 반영”된다. 배포 전에 context와 namespace를 명시적으로 출력·고정한다.

4) 되돌릴 수 있는가

배포가 나빠졌을 때 kubectl rollout undo 한 번으로 이전 리비전으로 돌아갈 수 있어야 한다. 롤백 경로가 없으면 장애 시간이 길어진다.

정리

단계 구분 → rollout status 게이트 → 불변 아티팩트 → context/namespace 고정 → 롤백 경로. “왜 CI는 성공했는데 반영이 안 됐지”의 답은 대부분 검증 게이트의 부재다.

빠른 진단 체크리스트

  • 빌드→테스트→푸시→배포→검증 중 어디까지 검증됐는지 가른다
  • 초록불이 실제 rollout 성공을 보장하는지 확인한다
  • 배포 스텝에 rollout status --timeout 게이트를 둔다
  • 이미지를 커밋 SHA·digest로 불변 고정한다
  • 가변 태그 재사용으로 반영이 안 되는지 본다
  • kubeconfig context·namespace를 명시적으로 고정한다
  • 주입되는 secret이 대상 환경과 맞는지 본다
  • rollout undo 롤백 경로가 있는지 확인한다

이 가이드로 연습하기

같은 장애를 다룬 검수된 문제입니다. 원인·복구·재발 방지를 직접 적어 보고 모범 풀이와 비교해 보세요.

다음에 읽을 가이드