[테스트] Argo CD Blue-Green 배포 테스트

푸르둥개·2025년 11월 17일

팀원들과 진행한 세미나

직접 Blue-Green 배포를 직접 할 수 있도록 작성 한 가이드 페이지중간에
QUIZ 문제도 있으니 간단하게 작성 코멘트, 추후 세미나 일정 때 궁금 한 내용 말씀해주시면 될 거 같습니다.
과제설명

  • 하단의 코드는 기본 예제 코드 이며
  • NodePort 2개 가지고 스위칭 하는 개념 입니다.
  • actview, preview 각 2개 서비스의 해당 이미지가 다르게 배포가 되어야 합니다.
    • 결과적으로 해당 각 nodePort로 접속 했을 경우 각각의 이미지가 다르게 배포가 되어야 합니다.
  • 해당 테스트가 완료 되면 하단의 이미지 처럼 화면이 출력이 되어야 합니다.

1. 서비스 패키지 생성

service.yaml

kind: Service
apiVersion: v1
metadata:
 name: rollout-bluegreen-active
spec:
 selector:
   app: rollout-bluegreen
 ports:
   - protocol: TCP
     port: 80
     targetPort: 8080
     nodePort: 30081
 type: NodePort

Chart.yaml

apiVersion: v2
type: application
name: blue-green
version: 0.1.0
description: Basic application using blue-green deployment method
dependencies:
  - name: common
    version: 1.x.x
    repository: https://charts.bitnami.com/bitnami

values.yaml

image:
  registry: docker.io
  repository: jakuboskera/blue-green
  tag: blue
  • 위 3개의 파일 생성 후, ArgoCD에서 새로운 App을 만든다.
  • 새로운 APP 을 생성 하기 전에 namespace 생성
  • 제대로 생성 되었는지 대시보드에서 확인 → 미생성이 되거나 어떠한 오류가 발생 할 경우에는 yaml 파일 확인

결과

  • 이상이 없을 경우에는 해당 nodePort를 통하여 들어 갈 경우 아래 이미지로 App이 생성

  • Quiz
    아래 이미지의 App이 생성 후에 해당 Port를 들어 갈 경우에 어떠한 이미지가 동작이 안되는 이유가 무엇일까요? (helm차트와 연관)

2. Rollout 배포 생성


  • 공통
    • 위 사항 까지 완료 되었을 경우 → templates > rollout.yaml 파일 생성
    • templates > rollout.yaml
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
 name: rollout-bluegreen
spec:
 replicas: 2
 revisionHistoryLimit: 2
 selector:
   matchLabels:
     app: rollout-bluegreen
 template:
   metadata:
     labels:
       app: rollout-bluegreen
   spec:
     containers:
       - name: rollouts-demo
         image: argoproj/rollouts-demo:green
         #image: argoproj/rollouts-demo:blue
         imagePullPolicy: Always
         ports:
           - containerPort: 8080
 strategy:
   blueGreen:
     activeService: rollout-bluegreen-active
     previewService: rollout-bluegreen-preview
     autoPromotionEnabled: true
  • Green(preview) 서비스를 배포할 service-preview.yaml 파일 생성
  • templates > service-preview.yaml
kind: Service
apiVersion: v1
metadata:
  name: rollout-bluegreen-preview
spec:
  selector:
    app: rollout-bluegreen
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
      nodePort: 30082
  type: NodePort

결과


  • 이상이 없을 경우 아래의 이미지 처럼 rollout 생성 확인
  • Quiz
    각 service.yaml 파일에서 작성한 nodePort로 들어가게 되면 어떻게 이미지가 나타나는 이유가 무엇일까요?

3. Argo Rollout을 통하여 스위칭 하는 방법


  • 2번째 Step까지 이상 없이 완료가 되었을 경우에 Argo Rollouts으로 들어가서 rollout 방식으로 배포가 되었는지 확인

  • 이제 전에 만들었던 rollout.yaml 파일에서 preview service로 배포 할 이미지 수정 하여 commit

  • QUIZ
    위 rollout.yaml 만들 경우에 자동으로 업데이트가 진행 될 것이며, 그러한 상황이 발생 하는 이유를 작성 해주세요.

해당 테스트를 진행 후 결과 이미지


Argo CD

Argo Rollout

actview & preview 서비스 화면(nodePort)

profile
DevOps, 개발팀과 운영팀이 알아두면 좋은 정보를 공유합니다.

0개의 댓글