쿠버네티스(Kubernetes)를 활용한 안정적이고 효율적인 운영 환경 구성하기
두줄요약
GitHub Actions와 ECR, EKS를 연결한 지속적 배포 흐름을 구성했습니다. Pod 동기화, TensorFlow Serving, 로그 스트리밍 운영 방식도 소개합니다.
구조와 흐름
- GitHub Flow 기반 브랜치 작업, CI 테스트·커버리지 검사, 스테이징 검수, 리뷰 승인 후 릴리스
- GitHub Actions에서 릴리스 태그 기반 Docker 이미지 빌드·태깅 후 AWS ECR 푸시
- Kubernetes YAML의 이미지 태그 변경과
kubectl apply를 통한 프로덕션 배포
선택 이유
- 작은 단위의 지속적·자동화된 배포로 수동 업데이트의 위험 축소
- AWS EKS 기반 CPU 서비스와 GPU 모델 서비스의 분리 운영
- Service, Deployment, HPA, Ingress 조합을 통한 서비스 구성
성능/운영 포인트
- readinessProbe·livenessProbe, nodeSelector, HPA 기반 상태 확인과 CPU/GPU 노드 배치
- 사이드카의 kubectl 프록시와 Endpoints API를 통한 ReplicaSet 내 Pod 직접 요청 전파
- TensorFlow Serving의 S3 모델·설정 로딩, BigQuery 스트리밍 로그와 Slack 알림 연계
주의할 점
- Pod에서 Kubernetes API 접근 시 적절한 ServiceAccount 권한 설정 필요
- TensorFlow Serving 이미지 래핑 시 의도치 않은 의존성 발생 가능성
- Deployment 정책에서 Blue/Green·Rolling Update 선택 및 rollout 상태 확인

