블루그린 배포

carlkim·2023년 10월 19일
0

argo-rollouts의 namespace 생성

kubectl create namespace argo-rollouts

manifest 파일 이용하여 argo-rollouts 설치

kubectl apply -n argo-rollouts -f https://github.com/argoproj/argo-rollouts/releases/latest/download/install.yaml

kubectl용 plugin 설치를 진행한다.

다운로드

curl -LO https://github.com/argoproj/argo-rollouts/releases/latest/download/kubectl-argo-rollouts-linux-amd64

권한 변경

chmod +x ./kubectl-argo-rollouts-linux-amd64

파일이동

sudo mv ./kubectl-argo-rollouts-linux-amd64 /usr/local/bin/kubectl-argo-rollouts

설치 확인

kubectl argo rollouts version

Blue/Green 이미지 준비

Blue/Green 배포하기

아래 예제를 사용하여 Blue/Green 배포할 Rollout과 Service를 생성합니다.
다음과 같이 Manifest 파일을 사용 할 repository에 push한다.

apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
  name: board-front-bluegreen
  namespace: front
spec:
  replicas: 1
  revisionHistoryLimit: 1
  selector:
    matchLabels:
      app: board-front-bluegreen
  template:
    metadata:
      labels:
        app: board-front-bluegreen
    spec:
      containers:
        - name: board-api-bluegreen
#          image: mirrorkyh/osc-board-front-java:blue
          image: mirrorkyh/osc-board-front-java:green
          ports:
            - name: http
              containerPort: 8080
  strategy:
    blueGreen:
      # blue 버전 서비스
      activeService: rollout-bluegreen-active
      # Green 버전 서비스
      previewService: rollout-bluegreen-preview
      #autoPromotioEnabled 옵션은 Blue/Green 배포를 자동으로 진행할 것인지 여부. false 옵션을 사용해 수동으로 지정
      autoPromotionEnabled: false
---
# active가 blue 버전
kind: Service
apiVersion: v1
metadata:
  name: rollout-bluegreen-active
spec:
  selector:
    app: board-front-bluegreen
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
---
# preview가 green 버전
kind: Service
apiVersion: v1
metadata:
  name: rollout-bluegreen-preview
spec:
  selector:
    app: board-front-bluegreen
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080

아르고씨디 내부 모습

블루 버전 파드와 그린 버전 파드가 모두 성공적으로 실행되고 있습니다.

블루/그린 교체 선언

롤아웃 리스트 확인

kubectl argo rollouts list rollout -n front

롤아웃 승인

kubectl argo rollouts promote board-front-bluegreen -n front

리스트 확인
상태가 Healthy로 바뀐 것을 확인 가능합니다.

kubectl argo rollouts list rollout -n front

아르고cd 내부에서 확인 한 모습입니다.

profile
기본부터 가면 됩니다.

0개의 댓글