Java/Spring 개발자를 위한 Kubernetes 기반 자동 배포 구조
현대적인 백엔드 시스템에서는 코드 변경부터 서비스 배포까지 자동화된 파이프라인이 중요합니다.
특히 Spring Boot 애플리케이션을 Kubernetes 환경에서 운영할 때는 CI/CD 파이프라인을 통해 배포를 자동화할 수 있습니다.
이번 글에서는 Spring Boot 애플리케이션을 Kubernetes에 배포하는 CI/CD 구조를 개발자 관점에서 정리해 보겠습니다.
1. CI/CD란 무엇인가
CI/CD는 애플리케이션 개발과 배포를 자동화하는 개발 방식입니다.
CI (Continuous Integration)
코드 변경이 발생할 때마다 자동으로
- 빌드
- 테스트
- 검증
을 수행합니다.
예
↓
Build
↓
Test
CD (Continuous Deployment)
빌드된 애플리케이션을 자동으로 배포합니다.
↓
Docker Image 생성
↓
Kubernetes 배포
이 과정을 통해 개발자가 직접 서버에 접속하지 않아도 배포가 가능합니다.
2. Spring Boot + Kubernetes CI/CD 전체 구조
Spring Boot 애플리케이션의 CI/CD 파이프라인은 보통 다음과 같은 구조를 가집니다.
↓
Git Repository
↓
CI Pipeline
↓
Docker Image Build
↓
Container Registry
↓
CD Pipeline
↓
Kubernetes Deploy
구체적인 흐름
↓
Git Push
↓
빌드 & 테스트
↓
Docker 이미지 생성
↓
이미지 저장
↓
Kubernetes 배포
3. Spring Boot 애플리케이션 빌드
Spring Boot 애플리케이션은 보통 Gradle 또는 Maven을 사용합니다.
Gradle 예
빌드 결과
Spring Boot 애플리케이션은 Fat Jar 형태로 패키징됩니다.
4. Docker 이미지 생성
빌드된 Spring Boot 애플리케이션을 Docker 이미지로 생성합니다.
예시 Dockerfile
WORKDIR /app
COPY build/libs/app.jar app.jar
ENTRYPOINT ["java", "-jar", "app.jar"]
이미지 빌드
이 이미지는 Kubernetes에서 실행됩니다.
5. Container Registry 저장
Docker 이미지는 Container Registry에 저장합니다.
대표적인 Registry
- Docker Hub
- AWS ECR
- Google Artifact Registry
- GitHub Container Registry
이미지 업로드
이렇게 저장된 이미지를 Kubernetes에서 가져옵니다.
6. Kubernetes Deployment 배포
Kubernetes에서는 Deployment를 통해 애플리케이션을 실행합니다.
예시
kind: Deployment
metadata:
name: spring-app
spec:
replicas: 3
selector:
matchLabels:
app: spring-app
template:
metadata:
labels:
app: spring-app
spec:
containers:
- name: spring-app
image: myrepo/spring-app:1.0
ports:
- containerPort: 8080
이 설정은 다음을 의미합니다.
- Spring Boot 애플리케이션 Pod 3개 실행
- Docker 이미지 실행
- 포트 8080 사용
7. GitHub Actions 기반 CI/CD 예시
Spring Boot 프로젝트에서 GitHub Actions를 사용할 수도 있습니다.
예시
on:
push:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: JDK 설정
uses: actions/setup-java@v3
with:
distribution: temurin
java-version: 17
- name: Gradle Build
run: ./gradlew build
- name: Docker Build
run: docker build -t myrepo/spring-app:latest .
- name: Docker Push
run: docker push myrepo/spring-app:latest
이 파이프라인은
↓
Gradle build
↓
Docker build
↓
Docker push
과정을 자동으로 수행합니다.
8. CD 단계 (Kubernetes 배포)
CD 단계에서는 Kubernetes에 새로운 이미지를 배포합니다.
대표적인 방법
- kubectl apply
- Helm
- ArgoCD
- GitOps
예
이 명령으로 Kubernetes에 새로운 애플리케이션이 배포됩니다.
9. GitOps 기반 배포 구조
최근 Kubernetes에서는 GitOps 방식이 많이 사용됩니다.
구조
↓
ArgoCD
↓
Kubernetes Cluster
배포 흐름
↓
Docker 이미지 생성
↓
GitOps Repository 업데이트
↓
ArgoCD 자동 배포
이 방식은 Kubernetes 상태를 Git으로 관리합니다.
10. 전체 CI/CD 아키텍처
Spring Boot + Kubernetes CI/CD 전체 구조
↓
Git Repository
↓
CI Pipeline
↓
Build & Test
↓
Docker Image
↓
Container Registry
↓
CD Pipeline
↓
Kubernetes Deployment
이 구조를 통해 자동화된 배포 시스템을 구축할 수 있습니다.
결론
Spring Boot 애플리케이션을 Kubernetes에서 운영할 때 CI/CD 파이프라인은 매우 중요한 역할을 합니다.
CI/CD 파이프라인을 구성하면
- 자동 빌드
- 자동 테스트
- 자동 배포
가 가능해집니다.
이를 통해 개발자는 코드 개발에 집중하고 운영 부담을 줄일 수 있습니다.
Spring Boot + Docker + Kubernetes + CI/CD 구조는 현대적인 클라우드 네이티브 백엔드 시스템의 기본 아키텍처라고 할 수 있습니다.
'Platform > Infra(DevOps)' 카테고리의 다른 글
| Java Spring 개발자가 Kubernetes를 공부해야 하는 이유 (0) | 2026.03.05 |
|---|---|
| Spring Boot + Kubernetes 운영 아키텍처 정리 (0) | 2026.03.05 |
| Kubernetes에서 Spring Boot 무중단 배포 (Rolling Update) (0) | 2026.03.05 |
| Kubernetes에서 Spring Boot 로그와 모니터링 구성 (0) | 2026.03.05 |
| 레거시 자바 생태계에서 Kubernetes의 의미 (0) | 2026.03.05 |
