초보자도 쉽게 배우는 Spring Boot 애플리케이션의 Kubernetes 배포
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
DevOps
대상자
- Spring Boot 애플리케이션 개발자 및 Kubernetes 배포 초보자
- 난이도 : 중급 (Kubernetes 기초 지식 필요)
핵심 요약
- Namespace를 사용하여 리소스 분리 및 격리
- Deployment와 Service를 통해 애플리케이션 배포 및 서비스 노출
- HorizontalPodAutoscaler(HPA)로 CPU와 메모리 기반 자동 확장 구현
- Jib Maven Plugin을 활용한 이미지 빌드 최적화
섹션별 세부 요약
1. Namespace 생성
- spring-boot
네임스페이스 생성으로 리소스 격리
- apiVersion: v1
사용
- metadata.name: spring-boot
설정
2. Deployment 설정
- TTS 및 TTS Analytics 마이크로서비스 배포
- Resource 요청/제한 설정:
- CPU 요청: 100m
/ 제한: 300m
- 메모리 요청: 100Mi
/ 제한: 300Mi
- imagePullSecrets로 프라이빗 레지스트리 인증 처리
3. Service 구성
- TTS 서비스: NodePort
타입으로 외부 접근 허용 (포트: 30234
)
- TTS Analytics 서비스: ClusterIP
타입으로 클러스터 내부 통신
- spec.type: NodePort
및 spec.type: ClusterIP
설정
4. HorizontalPodAutoscaler(HPA) 설정
- CPU 및 Memory 기반 자동 확장
- CPU: 60%
평균 사용률 타겟
- Memory: 500Mi
평균 값 타겟
- scaleTargetRef로 tts
Deployment 지정
5. 배포 및 검증
- kubectl apply
명령어로 리소스 생성
- kubectl get pod,deploy,svc,hpa
로 배포 상태 확인
- curl
명령어로 TTS 기능 테스트
결론
- Kubernetes 배포 시 Namespace
, Deployment
, Service
, HPA
리소스를 체계적으로 활용
- Jib Maven Plugin으로 이미지 빌드 최적화
- Resource 요청/제한 설정으로 리소스 과부하 방지
- HPA를 통해 자동 확장 기능 구현하여 트래픽 변화 대응
- kubectl
명령어로 배포 상태 실시간 모니터링 및 검증 필수