1. Rollout 플러그인 설치
# argo-rollouts namespace 생성
kubectl create namespace argo-rollouts
# argo-rollouts latest 버전 설치
kubectl apply -n argo-rollouts -f https://github.com/argoproj/argo-rollouts/releases/latest/download/install.yaml
Blue Green 배포를 하려면 ArgoCD Rollout 플러그인 설치가 필요하다.
2. GitOps
2.1. Rollout.yml
- apiVersion : apps/v1 대신 argoproj.io/v1alpha1를 사용한다.
- kind : Deployment 대신 Rollout을 사용한다.
- spec.minReadySeconds은 pod의 status가 ready가 될 때까지의 최소대기시간
- pod가 실행되고나서 .spec.minReadySeconds에 설정된 시간동안은 트래픽을 받지 않음
- autoPromotionEnabled 옵션은 승격 직전에 롤아웃을 일시 중지하여 새 스택의 승격을 자동으로 비활성화한다.
이 옵션을 생략하면 기본 동작은 ReplicaSet이 완전히 준비/사용 가능한 즉시 새 스택을 승격시킨다.
이 옵션을 true로 설정 한다면, Blue/Green 배포를 자동으로 진행된다.
- preview service 와 actice service 가 이전 버전과 현재 버전 테스트 가능하다.
- previewReplicaCount : Blue Green 배포를 할 때, Pod 를 먼저 몇 개를 띄워 테스트를 해볼 것인지 정하는 개수이다.리소스를 절약하기 위한 설정이다.
- 위 yaml 대로 previewReplicaCount 을 1로 설정한다면 , 새로운 버전의 Pod가 먼저 1개가 뜬 후 하나의 Pod 가 이상이 없을 경우, 관리자가 Resume 처리를 하게된다. 이때 기존 Pod 개수 전체가 뜬다.
- scaleDownDelaySeconds : 새 Pod 들로 트래픽이 이전된 후 몇 초 후 기존 Pod 들을 종료시킬 것인지 정하는 대기 시간이다.
(+) Blue Green Option More
https://argoproj.github.io/argo-rollouts/features/bluegreen/
'DevOps, Infra' 카테고리의 다른 글
[Keycloak] MSA 인증/인가 Open Source Solution Keycloak ? (0) | 2023.01.05 |
---|---|
[ArgoCD]카나리 배포 (Canary Deployment) (0) | 2022.12.30 |
[ArgoCD] 롤링 배포 (Rolling Deployment) (0) | 2022.12.30 |
[skaffold] window 에 설치한 skaffold Trouble Shooting (0) | 2022.12.29 |
[ArgoCD] 무중단 배포 전략 (0) | 2022.12.29 |