본문 바로가기
[DevOps]/Kubernetes

쿠버네티스 배포 전략 간단히 알아보기

by 팡펑퐁 2023. 12. 15.
728x90

📌 쿠버네티스 배포 전략 관련 용어 정리

롤링 업데이트(Rolling Update)

  • 롤링 업데이트는 가장 일반적으로 사용되는 배포 전략 중 하나이다.
    • 다른 배포 전략인 블루/그린 배포이나 카나리아 배포도 구현 가능하다.
  • 이전 버전의 애플리케이션을 점진적으로 제거하고 새로운 버전을 추가함으로써 업데이트를 수행한다.
  • 롤링 업데이트를 통해 애플리케이션의 가용성을 유지하면서 안정적인 업데이트를 진행할 수 있다.
  • 쿠버네티스에서는 ReplicaSet 또는 Deployment 리소스를 사용하여 롤링 업데이트를 구현할 수 있다.
  • yaml 파일에 직접 적용하는 방법은 아래 설명에 있다.

롤아웃(Rollout)

  • 애플리케이션의 업데이트나 변경 사항을 수행하는 과정을 말한다.
  • 롤아웃을 통해 애플리케이션의 배포를 관리하고, 이전 버전과 새로운 버전 간의 전환을 원활하게 수행할 수 있다.

 

📜 디플로이먼트 예시 yaml 파일

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    tier: backend 
  name: my-deployment
spec:
  replicas: 4
  selector:
    matchLabels:
      tier: backend
  strategy: # 아래 설명
    type: RollingUpdate # 아래 설명
    rollingUpdate: # 아래 설명
      maxUnavailiable: 1 # 아래 설명
      maxSurge: 2 # 아래 설명
  template:
    metadata:
      labels:
        tier: backend
    spec:
      containers:
        - image: my-springboot:0.1
          name: my-springboot
          ports:
           - containerPort: 8080

strategy

  •  strategy 속성을 사용하여 Deployment의 배포 전략을 지정할 수 있다.

type

  • 배포 전략의 종류를 지정한다.
  • 주로 "Recreate"와 "RollingUpdate" 두 가지 유형이 사용된다.
  • Recreate
    • 새로운 버전의 애플리케이션을 배포하기 위해 이전 버전의 애플리케이션을 모두 삭제하고 새로운 버전을 생성한다.
  • RollingUpdate
    • 롤링 업데이트 전략을 사용하여 새로운 버전의 애플리케이션을 점진적으로 배포한다.
    • 이전 버전의 애플리케이션을 제거하고 새로운 버전을 추가하는 과정을 반복하여 업데이트를 수행한다.

rollingUpdate

  • "RollingUpdate" 전략을 선택한 경우 이 속성을 사용하여 롤링 업데이트의 세부 사항을 지정할 수 있다.

maxUnavailable

  • 업데이트 중 제거할 Pod의 최대 수를 지정한다.
  • %로 적용 가능하다.

maxSurge

  • 업데이트 중 추가로 생성할 수 있는 Pod의 최대 수를 지정한다.
  • %로 적용 가능하다.

 

🛠️ 명령어로 업데이트하기

디플로이먼트 최초 생성

kubectl create -f <yaml 파일명>.yml
  • 디플로이먼트를 최초로 생성한다.

 

명령형 접근으로 이미지 업데이트

kubectl set image deployment <deployment name> <containder name>=<image name>:<version>
  • 이미 띄워져 있는 deployment 이미지를 교체한다. 
  • 최초 실행할 때 사용한 yml 파일에는 어떠한 변화도 주지 않는다.

 

선언형 접근으로 이미지 업데이트

kubectl apply -f <yaml 파일명>.yml
  • 직접 yml 파일에서 변경된 이미지의 버전 태그로 수정 후 업데이트하는 방식이다.

 

 

업데이트 여부 확인하기

kubectl rollout status deployment/<yaml 파일에 명시한 Deployment Name>
kubectl rollout status deployment/my-deployment # example 아래 명령어도 동일
  • 해당 디플로이먼트 객체의 상태를 확인하여 업데이트가 정상적으로 진행되었는지 체크할 수 있다.

 

kubectl rollout history deployment/my-deployment
  • 해당 디플로이먼트 객체의 히스토리를 보는 것이다.

 

업데이트 롤백하기

kubectl rollout undo deployment/my-deployment --to-revision=2
  • 이전 버전으로 롤백된다.
  • --to-revision을 사용하면 특정 버전으로 롤백할 수 있다.

 

 

 

참고

뤼튼

Udemy - Certified Kubernetes Administrator (CKA) with Practice Tests

https://velog.io/@_zero_/쿠버네티스-배포-전략RollingUpdate-BlueGreen-Canary-및-롤백Rollback-개념과-설정

728x90