DevOps, Infra

[ArgoCD] 블루그린 배포(Blue Green Deployment)

seulseul 2022. 12. 30. 00:15

 

    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 플러그인 설치가 필요하다.

     

    참고 : ArgoCD Rollouts

    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/