Spring Boot Kubernetes 배포 초보자 가이드

초보자도 쉽게 배우는 Spring Boot 애플리케이션의 Kubernetes 배포

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

DevOps

대상자

- Spring Boot 애플리케이션 개발자Kubernetes 배포 초보자

- 난이도 : 중급 (Kubernetes 기초 지식 필요)

핵심 요약

  • Namespace를 사용하여 리소스 분리 및 격리
  • DeploymentService를 통해 애플리케이션 배포 및 서비스 노출
  • HorizontalPodAutoscaler(HPA)로 CPU와 메모리 기반 자동 확장 구현
  • Jib Maven Plugin을 활용한 이미지 빌드 최적화

섹션별 세부 요약

1. Namespace 생성

- spring-boot 네임스페이스 생성으로 리소스 격리

- apiVersion: v1 사용

- metadata.name: spring-boot 설정

2. Deployment 설정

- TTSTTS Analytics 마이크로서비스 배포

- Resource 요청/제한 설정:

- CPU 요청: 100m / 제한: 300m

- 메모리 요청: 100Mi / 제한: 300Mi

- imagePullSecrets로 프라이빗 레지스트리 인증 처리

3. Service 구성

- TTS 서비스: NodePort 타입으로 외부 접근 허용 (포트: 30234)

- TTS Analytics 서비스: ClusterIP 타입으로 클러스터 내부 통신

- spec.type: NodePortspec.type: ClusterIP 설정

4. HorizontalPodAutoscaler(HPA) 설정

- CPUMemory 기반 자동 확장

- CPU: 60% 평균 사용률 타겟

- Memory: 500Mi 평균 값 타겟

- scaleTargetReftts Deployment 지정

5. 배포 및 검증

- kubectl apply 명령어로 리소스 생성

- kubectl get pod,deploy,svc,hpa로 배포 상태 확인

- curl 명령어로 TTS 기능 테스트

결론

- Kubernetes 배포Namespace, Deployment, Service, HPA 리소스를 체계적으로 활용

- Jib Maven Plugin으로 이미지 빌드 최적화

- Resource 요청/제한 설정으로 리소스 과부하 방지

- HPA를 통해 자동 확장 기능 구현하여 트래픽 변화 대응

- kubectl 명령어로 배포 상태 실시간 모니터링 및 검증 필수