쿠버네티스 어나더 클래스 지상편: Sprint2 Day17 ArgoCD 3

쿠버네티스 어나더 클래스 지상편: Sprint2 Day17 ArgoCD 3

Argo Rollouts

ArgoCD 없이도 Rollouts(Blue/Green, Canary) 배포가 가능하다.

ArgoCD와 독립적인 솔루션이며, ArgoCD와 함께 사용하면 ArgoCD 대시보드에서 Rollouts 버튼이 생긴다.

 

Blue/Green 배포

운영 환경에서만 테스트가 가능한 환경에서 주로 사용하는 배포 전략이다.

배포 시 롤백이 빠르다.

배포 중 V1 과 V2 간의 동시 호출이 발생하지 않는다.

Script를 사용해 자동 배포가 가능하다.

V2에 과도한 트래픽이 유입될 경우 문제가 발생할 수 있다.

 

Rollouts을 사용한 Blue/Green 배포 과정

Rollout 컨테이너 → Service 2개 지정: Active(서비스 사용자 접근), Preview(V2로만 접근)

 

  • V1(Blue) 배포

Rollout → Replica Set V1 → Pod V1 ← Active / Preview Service

배포 이전에는 2개 서비스 모두 Blue를 바라본다

 

  • V2(Green) 배포

Rollout → Replica Set V1 → Pod V1 ← Active Service

Rollout → Replica Set V2 → Pod V2 ←Preview Service ← QA담당자

배포 이후에 Preview Service만 Green을 바라본다.

 

  • Promote

Pod V1 삭제 ← Promote → Active / Preview Service → Pod V2

Promote를 진행하면 Blue는 제거한다

 

Canary 배포

특정 헤더 값에 한해 트래픽이 유입되도록 할 수 있다.

서서히 트래픽을 전환하므로 콜드 스타트를 방지할 수 있다.

업그레이드 목적 이외에도 두 버전을 비교하기 위한 A/B 테스트에도 사용된다.

 

Rollouts을 사용한 Canary 배포 과정

Blue/Green처럼 새 서비스를 만들지 않아도 트래픽을 조절할 수 있다.

 

  • V1 배포

Rollout → Replica Set V1 → Pod V1 ← Service

 

  • V2(Canary) 배포

Rollout → Replica Set V1 → Pod V1 ← Service

Rollout → Replica Set V2 → Canary Pod ← Service

 

  • Promote

순차적으로 Cananry Pod의 비중을 늘림

setWeight: 전체 Pod에서 Canary가 차지하는 비중

pause: {} : Promote가 올 때까지 무한정 대기

 

5. Argo Rollouts를 이용한 Blue-Green 배포 - 2233

image

image

5-2. App 생성 하기 - [+ NEW APP] 클릭

image

5-3. 배포하기 - [SYNC] 클릭 > [SYNCHRONIZE] 클릭

5-4. 배포 확인

image배포 완료

 

5-5. 트래픽 보내기

imageimage

 5-6. ArgoCD UI에서 Blue/Green 배포 시작하기

rollout.yaml
spec:
  replicas: 2
  strategy:
    blueGreen:
      activeService: api-tester-2233-active
      previewService: api-tester-2233-preview
      autoPromotionEnabled: false

Rollout을 사용하기 위해 배워야할 부분은 spec - strategy - blueGreen 뿐

 

autoPromotionEnabled: false

true일 경우 Green 파드가 정상 작동하면 Promote가 자동으로 반영된다.

 

5-6-3. Git에서 image의 tag 변경

image

5-6-4. ArgoCD에서 Applications > api-tester-2233 > [SYNC] 클릭

imageGit의 수정 사항을 감지함

 

image

image

5-6-5. 트래픽 확인

image

image

imagerollouts-pod-template-hash 를 사용해 트래픽을 전환할 수 있다.

 

5-6-6. Promote 진행

Rollout 대시보드는 기본적으로 안만들어짐

image

image

Rollback: Green 파드 삭제

Restart: Blue/Green 파드 모두 재시작, 원하는 파드를 K8s에서 삭제하여 재시작하는 방법이 더 좋음

Promote: 다음 단계

PromoteFull: 배포 완료

 

imagePromote를 진행한다.

 

5-6-7. 트래픽 확인

image

 5-7. Rollout CLI로 조회 해보기
imageimage배포 상황을 모니터링해줌

 

6. Argo Rollouts를 이용한 Carary 배포 - 2234

6-1. Master에서 Kubectl로 Rollouts 배포하기

 image

6-2. 배포 모니터링
image

6-3. 트래픽 보내기 (1.0.0 App 연결)
image

 6-5. Argo Rollouts CLI로 Canary 배포 시작하기 (1.0.0 -> 2.0.0로 변경)
imageimageimageCanary Pod가 만들어졌다.

 

6-7. 트래픽 확인 (1.0.0 App 연결, 2.0.0 App 연결)

image트래픽이 Canary로 분산되고 있다.

 

imagePromote를 진행해 다음 단계로 넘어간다.

 

imageimageimage전체 Pod중 66%의 Canary Pod가 생성되었다.

 

6-8. 트래픽 확인 (2.0.0 App 연결)

 imageimageimage배포가 모두 완료되었다!

 

 6-9. 리소스 정리하기
image

 

 

 

 

 

댓글을 작성해보세요.

채널톡 아이콘