Kubernetes에서 애플리케이션을 배포할 때 다양한 배포 전략(Deployment Strategies) 을 사용할 수 있다.
배포 전략은 무중단 배포(Zero-Downtime Deployment) 을 목표로 하거나, 특정 상황에서 빠른 롤백(Rollback) 이 가능하도록 설계된다.
이번 글에서는 Kubernetes에서 대표적으로 사용되는 Rolling Update, Recreate, Blue-Green, Canary 배포 전략에 대해 살펴본다.
1. Rolling Update (롤링 업데이트)
개요
- 기존 애플리케이션을 점진적으로 새로운 버전으로 교체하는 방식
- 한 번에 전체 애플리케이션을 업데이트하지 않고, 일부 Pod 를 새로운 버전으로 교체하면서 점진적으로 배포
Deployment
에서 기본적으로 제공하는 배포 방식
특징
- 무중단 배포 가능
- 문제가 발생하면 바로 이전 버전으로 롤백 가능
- 새 버전과 기존 버전이 공존하므로, 데이터베이스 변경 시 주의 필요
적용 방법
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
maxSurge: 1
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: my-app:v2
2. Recreate (재생성 배포)
개요
- 기존 애플리케이션을 모두 삭제한 후, 새로운 버전을 배포하는 방식
- 서비스 중단이 발생하지만, 특정 상황에서는 적합할 수 있음
특징
- 버전 충돌 없이 깔끔하게 배포 가능
- 모든 Pod가 동일한 상태에서 실행되므로 예측 가능
- 서비스 중단이 발생하므로 주의 필요
적용 방법
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
strategy:
type: Recreate
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: my-app:v2
3. Blue-Green Deployment (블루-그린 배포)
개요
- 기존 버전(Blue)과 새로운 버전(Green)을 동시에 운영하면서,
새로운 버전이 준비되면 트래픽을 변경하여 배포하는 방식
특징
- 기존 버전을 유지하면서 새 버전을 테스트 가능
- 빠른 롤백 가능
- 두 개의 환경을 운영해야 하므로 리소스 사용량 증가
적용 방법
apiVersion: v1
kind: Service
metadata:
name: my-app
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 8080
- 트래픽을 Blue 환경에서 Green 환경으로 변경하면 배포 완료
4. Canary Deployment (카나리아 배포)
개요
- 전체 사용자에게 새 버전을 배포하기 전에, 일부 트래픽만 새 버전으로 보내는 방식
- 점진적으로 트래픽을 조정하면서 안정성을 확인하고 전체 배포 진행
특징
- 위험성을 최소화하며 점진적으로 배포 가능
- 특정 사용자 그룹만 대상으로 새로운 기능 테스트 가능
- 트래픽을 조절할 수 있는 로드 밸런서 나 Ingress 설정 필요
적용 방법
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-app
spec:
rules:
- host: my-app.example.com
http:
paths:
- path: /
backend:
service:
name: my-app-v1
port:
number: 80
- path: /new
backend:
service:
name: my-app-v2
port:
number: 80
5. 배포 전략 비교
배포 전략 | 무중단 배포 | 롤백 용이성 | 배포 속도 | 리소스 사용량 |
---|---|---|---|---|
Rolling Update | ✅ 가능 | ✅ 가능 | ⏳ 느림 | ⚡ 적음 |
Recreate | ❌ 중단됨 | ✅ 가능 | 🚀 빠름 | ⚡ 적음 |
Blue-Green | ✅ 가능 | ✅ 매우 빠름 | ⏳ 느림 | 🔥 높음 |
Canary | ✅ 가능 | ✅ 가능 | ⏳ 점진적 | 🔥 높음 |
6. 정리 및 결론
- Rolling Update → 기본 배포 방식, 무중단 배포 가능, 안정적
- Recreate → 서비스 중단 가능하지만 단순한 배포 방식
- Blue-Green → 빠른 롤백 가능하지만, 리소스 사용량이 많음
- Canary → 점진적 배포 가능, 실험적 배포에 적합
배포 전략은 애플리케이션 특성 및 요구사항에 따라 적절하게 선택하는 것이 중요하다.
특히 무중단 배포(Zero-Downtime Deployment) 가 중요한 경우, Rolling Update, Blue-Green, Canary 전략을 적극 고려하는 것이 좋다. 🚀