롤링 업데이트 실습1

날아올라돼지야·2024년 9월 5일

쿠버네티스 마스터

목록 보기
24/27

롤링 업데이트는 Kubernetes에서 새로운 버전의 애플리케이션을 배포할 때 기존 파드를 점진적으로 교체하는 방법입니다. 이를 통해 다운타임 없이 애플리케이션을 업데이트할 수 있습니다. 이제 롤링 업데이트 시나리오를 만들어서 실습 강의 형식으로 설명드리겠습니다.

1. 시나리오 소개

가상의 웹 애플리케이션을 운영하고 있다고 가정해보겠습니다. 현재는 v1 버전의 웹 애플리케이션을 배포하여 사용 중인데, 새로운 기능을 추가한 v2 버전을 배포하려고 합니다. 우리는 롤링 업데이트를 사용하여 다운타임 없이 v1에서 v2로 점진적으로 업데이트하려고 합니다.

2. 실습 환경 준비

이 실습에서는 Kubernetes의 Deployment 리소스를 사용하여 애플리케이션을 배포하고 롤링 업데이트를 수행합니다.

2.1 기존 v1 애플리케이션 배포

먼저, 기존 버전(v1)의 애플리케이션을 배포합니다.

# deployment-v1.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app-container
        image: nginx:1.14  # v1 버전 (nginx 1.14 이미지)
        ports:
        - containerPort: 80

배포 파일을 작성한 후, Kubernetes에 적용합니다:

kubectl apply -f deployment-v1.yaml

현재 배포된 v1 애플리케이션은 3개의 파드로 실행됩니다.

2.2 상태 확인

현재 실행 중인 파드와 Deployment 상태를 확인합니다:

kubectl get deployments
kubectl get pods

여기에서 my-app이라는 이름의 Deployment와 3개의 파드가 정상적으로 실행되고 있는 것을 확인할 수 있습니다.

3. 롤링 업데이트

이제 v1 버전에서 v2 버전(nginx 1.16)으로 애플리케이션을 롤링 업데이트할 차례입니다. 이를 위해 Deployment 파일을 수정하고, 다시 적용합니다.

3.1 v2 버전으로 업데이트

# deployment-v2.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app-container
        image: nginx:1.16  # v2 버전 (nginx 1.16 이미지)
        ports:
        - containerPort: 80

Deployment 파일에서 imagenginx:1.16으로 변경한 후, 다시 Kubernetes에 적용합니다:

kubectl apply -f deployment-v2.yaml

3.2 롤링 업데이트 진행 상태 확인

업데이트가 진행 중인 동안, 파드의 상태를 확인하여 점진적으로 v1에서 v2로 변경되는 것을 확인할 수 있습니다:

kubectl rollout status deployment my-app

이 명령어를 사용하면 롤링 업데이트가 어떻게 진행되는지 실시간으로 확인할 수 있습니다.

3.3 파드 상태 확인

또한, 파드 상태를 확인하여 점진적으로 새로운 파드가 생성되고, 오래된 파드가 삭제되는 것을 볼 수 있습니다:

kubectl get pods -w

여기서 -w 옵션을 사용하면 파드 상태가 실시간으로 업데이트되는 것을 모니터링할 수 있습니다.

4. 롤백 (Rollback)

만약 업데이트된 버전에서 문제가 발생한다면, 롤백을 통해 이전 버전으로 복구할 수 있습니다.

4.1 롤백 명령

kubectl rollout undo deployment my-app

이 명령어를 사용하면 v2에서 다시 v1으로 롤백됩니다.

4.2 롤백 상태 확인

롤백이 성공적으로 이루어졌는지 확인합니다:

kubectl rollout status deployment my-app

5. 실습 요약

  • v1 애플리케이션을 배포하고 3개의 파드가 실행되도록 했습니다.
  • v2 버전으로 롤링 업데이트를 통해 다운타임 없이 애플리케이션을 업데이트했습니다.
  • 롤링 업데이트는 파드를 순차적으로 교체하여 안정적인 업데이트를 보장했습니다.
  • 문제가 생겼을 경우, 롤백 기능을 통해 이전 버전으로 쉽게 복구할 수 있었습니다.

이 실습을 통해 Kubernetes에서 Deployment를 사용한 롤링 업데이트의 개념과 실습을 학습할 수 있었습니다.

profile
무슨 생각하며 사니

0개의 댓글