CoudNet@ 팀의 가시다님께서 리딩하시는 CI/CD Study 5주차 스터디 내용 정리
이번 주차도 마찬가지로 '예제로 배우는 ArgoCD 책' 기반으로 학습했습니다. 이번 글에서는 Argo Rollout에 대해서 학습한 내용을 서술하겠습니다.
1. Argo Rollout
1.1. 소개
Argo Rollouts 는 Kubernetes 컨트롤러 이자 CRD 세트로,
Kubernetes에 블루-그린, 카나리아, 카나리아 분석, 실험, 점진적 전달 기능 등의 고급 배포 기능을 제공합니다.
Argo Rollouts 는 인그레스 컨트롤러 및 서비스 메시와 통합되어 트래픽 셰이핑 기능을 활용하여 업데이트 중에 트래픽을 점진적으로 새 버전으로 전환합니다. Rollouts 은 다양한 제공업체의 지표를 쿼리하고 해석하여 주요 KPI를 확인하고 업데이트 중에 자동 프로모션 또는 롤백을 실행할 수 있습니다.
네이티브 쿠버네티스 deployment 객체의 RollingUpdate 제약 사항
- 롤아웃 속도에 대한 제어가 거의 없음 - 새 버전으로의 트래픽 흐름을 제어할 수 없음 - 준비 프로브는 심층 검사, 스트레스 검사 또는 일회성 검사에는 적합하지 않음 - 업데이트를 확인하기 위해 외부 메트릭을 쿼리할 수 있는 기능이 없음 - 진행을 중지할 수 있지만 업데이트를 자동으로 중단하고 롤백할 수 없음
확장 프로그램이 배포가 되었다면, ArgoCD Server 가동 중 Init Container 가 동작하여 Rollout 을 설치하는 것을 확인할 수 있습니다.
1.4. Rollout 테스트
다음 주소에서 Rollout 테스트를 위한 파일을 다운 받아 ArgoCD 와 연동할 Git 저장소에 Push 합니다.
# Rollout 테스트 파일
wget https://raw.githubusercontent.com/argoproj/argo-rollouts/master/docs/getting-started/basic/rollout.yaml
wget https://raw.githubusercontent.com/argoproj/argo-rollouts/master/docs/getting-started/basic/service.yaml
그 후 ArgoCD 와 Git 저장소를 연동합니다.
마지막으로 Application 을 배포해봅니다.
마지막으로 이미지 태그를 변경해서 Rollout 배포가 동작하는 지 확인해봅니다.
# rollout 직접 수정
kubectl edit rollouts rollouts-demo -n test
# Blue 에서 Yellow 로 변경
- image: argoproj/rollouts-demo:yellow