1. 롤링 배포 (Rolling Update Deployment)
- 클러스터 가동 중지 시간 없이 새 버전을 배포하면서, 새 버전 파드를 하나씩 늘려가고 기존 버전의 파드를 하나씩 줄여나가는 방식이다.
- Kubernetes의 기본 배포 전략으로 spec.strategy.type으로 RollingUpdate, Recreate을 지정할 수 있다.
- RollingUpdate 옵션
- maxSurge : 업데이트 중 원래 Pod 수 이상으로 예약할 수 있는 최대 Pod 수 (기본값: 25%)
- maxUnavailable : 업데이트 중 사용할 수 없는 최대 Pod 수 (기본값: 25%)
- 장점
- 많은 서버 자원을 확보하지 않아도 무중단 배포가 가능함으로 서버 수의 제약이 있을 경우 유용하다.
- 서비스의 지속적인 가용성을 제공하면서 업데이트를 진행합니다.
- 단점
- 서버를 하나씩 업데이트하므로 전체 배포 시간이 상대적으로 오래 걸릴 수 있다.
- 다음 이미지와 같이 이전 버전과 새로운 버전이 동시에 존재하므로 호환성 문제가 발생할 수 있다.
2. 블루/그린 배포 (Blue/Green Deployment)
- 트래픽을 한번에 구버전(Blue)에서 신버전(Green)으로 옮기는 방법이다.
- Blue와 Green의 서버가 동시에 구성되어 있는 상태에서 로드 밸런서가 트래픽을 Blue에서 Green으로 일제히 전환시킨다.
- 장점
- 서비스 중단 없이 전체 트래픽을 새로운 환경으로 빠르게 전환할 수 있다.
- 빠른 롤백이 가능하고, 운영환경에 영향을 주지 않고 실제 서비스 환경으로 신 버전 테스트가 가능하다.
- 단점
- Blue Green 구성 시 두 배의 리소스가 필요하므로 비용이 더 많이 발생한다.
3. 카나리 배포 (Canary Deployment)
- 가동 중인 서버들의 일부에만 새로운 앱을 배포하여, 일부 트래픽을 새 버전의 환경으로 분산하는 방법이다.
- 랜덤 또는 사용자 프로필 등을 기반으로 트래픽을 분산할 수 있다.
- 장점
- A/B 테스트가 가능하고, 오류율 및 성능 모니터링에 유용하게 사용할 수 있다.
- 사전 테스트를 통해 새로운 버전으로 인한 위험을 최소화 할 수 있다.
- 단점
- 롤링 배포와 같이 이전 버전과 새로운 버전이 동시에 존재하므로 호환성 문제가 발생할 수 있다.
※ Argo Rollout
1) Argo Rollout 이란?
- Argo rollout은 Progressive Delivery를 지원하는 툴이다.
- 쿠버네티스에서 롤아웃 관리를 위한 오픈소스 도구 중 하나로, Kubernetes에서 Blue/Green, Canary 등 배포를 지원한다.
2) Argo Rollout을 사용하는 이유
- Kubernetes의 기본 배포 전략은 RollingUpdate이나, RollingUpdate는 여러 가지 제약 사항이 있다. 이를 해결하기 위해 Blue/Green 또는 Canary 배포 방식을 사용한다.
- 하지만, Blue/Green 또는 Canary 배포 방식을 직접 구성하려면 많은 절차가 있어 번거롭다. 이때, Argo Rollout을 활용하여 자동으로 쉽게 구현할 수 있다.
참고
Deployment Strategies In Kubernetes
Learn what are the different deployment strategies available in Kubernetes and how to use them.
auth0.com
Argo Rollouts - Kubernetes Progressive Delivery Controller
Argo Rollouts - Kubernetes Progressive Delivery Controller What is Argo Rollouts? Argo Rollouts is a Kubernetes controller and set of CRDs which provide advanced deployment capabilities such as blue-green, canary, canary analysis, experimentation, and prog
argoproj.github.io
'Container > Devops' 카테고리의 다른 글
[Devops] Argo Rollouts를 이용한 Canary 배포 (0) | 2024.03.18 |
---|---|
[Devops] Argo Rollouts를 이용한 Blue/Green 배포 (0) | 2024.03.15 |
[Devops] Jenkins, ArgoCD를 통한 CI/CD 구성 - (2) ArgoCD 구성 (1) | 2024.03.07 |
[Devops] Jenkins, ArgoCD를 통한 CI/CD 구성 - (1) Jenkins 구성 (1) | 2024.03.07 |
[Devops] Jenkins에서 Plugin 및 Credential 설정 (0) | 2024.03.04 |