EKS CI/CD 구성 프로젝트_5

duckiee·2023년 3월 29일
1

이번 포스트는 저번에 구성한 ArgoCD/Argo Rollout 환경의CI/CD 파이프라인을 사용하여 canary 배포를 수행하는 작업을 포스팅한다.

canary 배포의 가중치 설정은 helm 차트 내 rollout.yaml 파일에서 설정 했으며, 아래 GitHub 링크에서도 확인 가능하다.
GitHub 링크

  strategy:
    canary:
      maxSurge: "25%"
      maxUnavailable: 0
      steps:
      - setWeight: 25 (1단계 25% 배포)
      - pause: {duration: 30}
      - setWeight: 50 (2단계 50% 배포)
      - pause: {duration: 30}
      - setWeight: 75 (3단계 75% 배포)
      - pause: {duration: 30}
      - setWeight: 100(4단계 100% 배포)
      - pause: {duration: 30}

어플리케이션의 컨테이너 서비스 배포과정을 확인할 수 있도록 Argo Rollout 플러그인을 아래와 같이 설치한다.

#리눅스에서의 Argo Rollout 플러그인 설치 (Linux 환경)
$ curl -LO https://github.com/argoproj/argo-rollouts/releases/latest/download/kubectl-argo-rollouts-darwin-amd64
$ chmod +x ./kubectl-argo-rollouts-darwin-amd64
$ sudo mv ./kubectl-argo-rollouts-darwin-amd64 /usr/local/bin/kubectl-argo-rollouts

지난번에 사용하던 환경에서 어플리케이션 이미지 태그를 [green > red]로 업그레이드 하며, Canary 배포 기능 테스트를 구현한다.

Jenkinsfile 또한 아래와 같이 태그를 수정해야하며, GitHub 레포지토리에 배포해야 한다.

Argo Rollout 대시보드와 CLI 명령어를 실행하여 배포 과정을 모니터링 할 수 있으며
관련된 명령어는 아래와 같다.

#Argo Rollout 대시보드 기동
$ kubectl argo rollouts dashboard &

#CLI 명령어
$ kubectl argo rollouts get rollout <대시보드에 기재된 프로젝트명> -n <네임스페이스> -w

Jenkins 에서 배포를 실행하면 아래와 같이 대시보드와 CLI 환경에서 변동사항을 보여준다.

  • canary 배포 (setWeight: 50)

  • canary 배포 (setWeight: 75)

배포의 가중치가 100에 도달하면 완료되는 상때까지 확인 가능하다.

profile
DevOps로 진화하기

0개의 댓글