Deployment는 Pod를 설정한 대로 배포하고, 변경 사항이 있으면 자동으로 새 버전을 적용하면서도 중단 없는 서비스를 유지할 수 있도록 돕는 역할을 한다.
동작 원리
- Deployment는 ReplicaSet을 생성하여 파드 수를 유지하고, 사용자가 배포한 설정(배포 전략, 버전 등)에 따라 파드를 관리한다.
ReplicaSet
2024.10.29 - [DevOps] - 쿠버네티스 - Controller(Replication Controller, ReplicaSet)
쿠버네티스 - Controller(Replication Controller, ReplicaSet)
Replication Controller와 ReplicaSet은 클러스터 내 특정 수의 파드를 유지하는 데 사용되는 Controller다. 쉽게 말해, Pod를 관리하는 관리자 역할을 하며, 설정된 수의 Pod가 항상 실행되도록 감시하고 관리
pjs-world.tistory.com
Deployment 배포 전략
A. Recreate
Recreate는 현재 버전의 파드를 모두 삭제한 뒤, 새로운 버전의 파드를 생성하는 방식이다.
동작흐름
- 현재 실행 중인 파드를 모두 종료한다.
- 새 버전의 파드를 생성하여 배포한다.
- 이 전략의 특징은 Pod가 일시적으로 중단될 수 있으므로, 일반적으로 중단되도 문제 없는 애플리케이션이나 배포 초기 단계에서 사용된다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: deployment-1
spec:
replicas: 2
strategy:
type: Recreate
template:
metadata:
labels:
type: app
spec:
containers:
- name: container
image: kubetm/app:v1
terminationGracePeriodSeconds: 10
B. RollingUpdate
RollingUpdate현재 파드를 조금씩 교체해가며, 새로운 버전을 적용하는 전략이다. 즉, 새로운 파드를 하나씩 생성하고, 기존 파드를 하나씩 종료하는 방식으로 진행된다.
동작 흐름
- 새로운 버전의 파드를 하나씩 추가하여 기존 파드와 병행해서 실행한다.
- 새 파드가 준비되면 기존 파드를 하나씩 종료한다.
- 이 전략은 서비스 중단 없이 원활하게 새로운 버전을 적용할 수 있어 무중단 배포가 가능하다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: deployment-2
spec:
replicas: 2
strategy:
type: RollingUpdate
minReadySeconds: 10 # 새 파드가 준비 상태인지 확인하는 최소 시간
template:
metadata:
labels:
type: app2
spec:
containers:
- name: container
image: kubetm/app:v1
terminationGracePeriodSeconds: 0
C. Blue/Green
Blue/Green 배포 전략은 새로운 버전을 독립적으로 배포한 후, 특정 시점에서 트래픽을 이전 버전에서 새로운 버전으로 전환하는 방식이다. Rolling Update와의 차이점은, Blue/Green 전략은 이전 버전의 Pod를 종료된 상태에서 삭제하지 않고 남겨둔다는 것이 특징이다.
동작 흐름
- 새로운 버전의 파드를 별도의 환경에서 실행한다.
- 준비가 완료되면 서비스 트래픽을 기존 버전(Blue)에서 새로운 버전(Green)으로 전환한다.
- 문제가 발생할 경우, 기존 버전(Blue)의 Pod가 삭제되지 않고 유지되어 있기 때문에 트래픽을 다시 기존 버전으로 돌려 쉽게 롤백할 수 있다.
D. Canary
Canary는 일부 트래픽에만 새로운 버전을 제공하면서, 서비스가 안정적인지 테스트하는 방법이다. 새 버전을 전체적으로 배포하기 전에, 소수의 사용자에게만 제공하여 문제 발생 여부를 모니터링한다.
동작 흐름
- 새 버전의 파드를 일부 트래픽에만 제공하여 테스트한다.
- 특정 시간 동안 모니터링하며, 오류가 발생하지 않는지 확인한다.
- 문제가 없다면 새 버전을 전체 트래픽에 확장하여 배포한다.
- 만약 문제가 발생하면, 쉽게 기존 버전으로 롤백할 수 있다.
배포 전략 요약
배포 전략 | 설명 | 사용 시기 |
Recreate | 기존 파드를 모두 종료한 후 새 파드 생성 | 서비스 중단이 허용되는 초기 배포 |
RollingUpdate | 기존 파드를 하나씩 대체하며 새 파드 생성 | 무중단 배포가 필요한 경우 |
Blue/Green | 기존 버전과 새 버전을 동시에 유지하며 트래픽을 전환 | 안전한 배포와 손쉬운 롤백이 필요한 경우 |
Canary | 일부 트래픽에만 새 버전을 제공하여 문제가 없음을 확인한 후 전체 배포로 확장 | 새 버전 테스트를 통해 위험을 최소화하려는 경우 |
'DevOps > Kubernetes' 카테고리의 다른 글
쿠버네티스 - (ReadinessProbe, LivenessProbe) (0) | 2024.10.30 |
---|---|
쿠버네티스 - Controller(DaemonSet, Job, CronJob) (0) | 2024.10.29 |
쿠버네티스 - Controller(Replication Controller, ReplicaSet) (0) | 2024.10.29 |
쿠버네티스 - 환경변수 활용(ConfigMap, Secret) (0) | 2024.10.10 |
쿠버네티스 - Volume (0) | 2024.10.08 |