본문 바로가기
DevOps/Kubernetes

쿠버네티스 - Controller(Deployment)

by 재성스 2024. 10. 29.
반응형

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 일부 트래픽에만 새 버전을 제공하여 문제가 없음을 확인한 후 전체 배포로 확장 새 버전 테스트를 통해 위험을 최소화하려는 경우
반응형