Mildang Production 환경 배포 트러블슈팅 보고
작업 요약
예상 Story Point: 2
실제 Story Point: 4
증가 원인: 예상치 못한 인프라 구성 불일치 및 연쇄적 트러블슈팅 발생
1. 계획된 배포 태스크 (예상 SP: 2)
•
AWS ECR Repository 생성
•
ArgoCD 애플리케이션 생성
•
Mildang Hub API 서버 Production 환경 배포
•
AWS Secret Manager 추가
2. Mildang Hub API 서버 트러블슈팅 (추가 SP: 1)
2.1 이미지 업데이트 실패
문제: AWS ECR 주소와 Argo Image Updater의 imagelist 불일치
•
Argo Image Updater가 배포된 이미지를 인식하지 못함
•
철자 오류로 인한 문제
해결: ECR 주소와 imagelist 철자 일치하도록 수정
2.2 Database 연결 실패
문제: AWS Secret Manager의 MySQL Read/Write DB 패스워드가 dev 환경값으로 설정
•
Pod가 지속적으로 재시작되는 현상 발생
해결: AWS Secret Manager의 MySQL Read/Write DB credential을 production 값으로 변경
3. Mildang Hub Gateway 트러블슈팅 (추가 SP: 1)
3.1 초기 상황 파악
•
Ingress 미적용 상태
•
Deployment와 Service는 정상 생성
•
Repository 구조:
◦
mildang-backend-gateway-api는 mildang-backend-study-activity 하위 리포지토리에 속해있는 상황
◦
mildang-be-workspace 리포지토리와 분리되어있음
•
Dev/Stage 환경은 이전에 배포 완료
•
Kustomize로 모든 리소스(Ingress, Service, Deployment) 정의
3.2 Pod 무한 재시작 문제
문제: 로그 없이 지속적인 Pod 재시작
•
study-activity-gateway와 동일 이미지 사용
•
Volume mount 누락 확인
해결:
•
Container exec으로 원인 분석
•
Live manifest에 누락된 volume mount 추가
3.3 Gateway 실행 오류
문제: Subgraph 연결 실패
•
Error: "Tried to load services from remote endpoints but none provided"
•
AWS Secret Manager의 잘못된 설정
해결: Production 환경에 맞는 subgraph server URL 설정
3.4 Ingress 및 Service 연결 문제
문제 1: Ingress path 미설정
해결 1: Ingress에 적절한 path 설정
문제 2: Service와 Deployment selector 불일치
해결 2: Deployment selector를 "prod-mildang-backend-hub-gateway-app"으로 수정
4. 결론 및 개선점
•
Production 환경의 live manifest와 실제 코드 간 불일치가 주요 원인
•
최종적으로 코드 수정 없이 manifest 설정 조정으로 해결
•
배포 전 체크리스트 보완 필요:
1.
Live manifest와 코드 일치 여부 확인
2.
환경별 Secret 값 검증
3.
Selector 및 Label 일관성 검증
4.
Ingress 설정 완전성 검증