Kubernetes

Kubernetes Blue·Green / Canary 배포 방법

2023. 3. 16. 00:26
목차
  1. 1. 개념
  2. 2. Blue·Green 배포
  3. 3. Canary 배포
반응형

1. 개념

  • Blue·Green 및 Canary 배포 전략에 대한 개념은 앞서 작성한 글 참고
  • Blue·Green 배포 : Blue 리소스를 구성하고 Selector로 서비스와 맵핑한 상태에서 Green 리소스를 구성하고 서비스의 Selector를 Green으로 변경
  • Canary 배포 : v1과 v2 리소스를 구성하고 두 리소스를 Selector로 서비스와 맵핑한 상태에서 v2의 레플리카 개수를 점진적으로 증가시킴과 동시에 v1의 개수를 감소시키다 마지막에는 v1 리소스 삭제

2. Blue·Green 배포

  • Blue에 해당하는 nginx 웹서버 리소스 구성
apiVersion: apps/v1
kind: Deployment
metadata:
  name: resource-blue
  namespace: default
spec:
  replicas: 5
  selector:
    matchLabels:
      app: resource-blue
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: resource-blue
    spec:
      containers:
      - image: nginx
        name: nginx
      restartPolicy: Always
  • 서비스 생성 및 selector를 통해 Blue 리소스와 맵핑
apiVersion: v1
kind: Service
metadata:
  name: blue-green
spec:
  ports:
  - name: "80"
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: resource-blue
  type: NodePort
  • Blue 리소스 서비스 접근 테스트

  • Green에 해당하는 아파치 웹서버 리소스 구성
apiVersion: apps/v1
kind: Deployment
metadata:
  name: resource-green
  namespace: default
spec:
  replicas: 5
  selector:
    matchLabels:
      app: resource-green
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: resource-green
    spec:
      containers:
      - image: httpd
        name: httpd
      restartPolicy: Always
  • 서비스의 selector를 Green 리소스와 맵핑
  • Green 리소스 서비스 접근 테스트


3. Canary 배포

  • v1 리소스 생성
apiVersion: apps/v1
kind: Deployment
metadata:
  name: canary-v1
  namespace: default
spec:
  replicas: 5
  selector:
    matchLabels:
      app: canary
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: canary
    spec:
      containers:
      - image: nginx
        name: nginx
      restartPolicy: Always
  • v2 리소스 생성
apiVersion: apps/v1
kind: Deployment
metadata:
  name: canary-v2
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: canary
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: canary
    spec:
      containers:
      - image: httpd
        name: httpd
      restartPolicy: Always
  • 서비스 생성 및 selector를 통해 v1과 v2 리소스를 서비스에 맵핑
apiVersion: v1
kind: Service
metadata:
  name: svc-canary
spec:
  ports:
  - name: "80"
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: canary
  type: NodePort
  • 서비스 접근 테스트(현재 5:1 비율)

  • v2 레플리카 증가 및 v1 레플리카 감소 및 서비스 접근 테스트(현재 1:5 비율)

  • v1 리소스 삭제
반응형

'Kubernetes' 카테고리의 다른 글

Kubernetes 네트워크 정책(NetworkPolicy) 개념 및 설정2  (0) 2024.02.29
Kubernetes 보안 기초  (0) 2024.02.28
Kubernetes Custom Resource 개념 및 설정  (0) 2023.03.16
Kubernetes Admission Controller(Mutating / Validating) 개념 및 설정  (0) 2023.03.16
Kubernetes Statefulset 개념 및 설정  (0) 2023.03.16
  1. 1. 개념
  2. 2. Blue·Green 배포
  3. 3. Canary 배포
'Kubernetes' 카테고리의 다른 글
  • Kubernetes 네트워크 정책(NetworkPolicy) 개념 및 설정2
  • Kubernetes 보안 기초
  • Kubernetes Custom Resource 개념 및 설정
  • Kubernetes Admission Controller(Mutating / Validating) 개념 및 설정
MR. ZERO
MR. ZERO
DevOps Security Specialist를 목표하는 Security Compliance Engineer의 블로그
반응형
MR. ZERO
Security & DevOps
MR. ZERO
전체
오늘
어제
  • 전체보기 (453)
    • Kubernetes (59)
    • AWS (56)
    • Compliance (1)
    • etc (16)
    • Private (5)
      • 개인 (1)
      • MOVIE (4)
    • old (315)
      • News (8)
      • Web (28)
      • Server (35)
      • Python (6)
      • System (5)
      • Network (36)
      • Forensic (32)
      • Wargame (72)
      • Reversing (9)
      • Pentest (1)
      • 관리적 보안 (76)
hELLO · Designed By 정상우.
MR. ZERO
Kubernetes Blue·Green / Canary 배포 방법
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.