다음은 무중단 배포 (롤링 업데이트)를 추가할 것이다.
엄청 간단하다 그냥 deployment.yml 파일에서 strategy: 부분만 추가하면된다
기존코드에서 이렇게 추가만 하면 롤링업데이트 기능을 추가 시킬수 있다.
maxUnavailable:1 -> 은 업데이트 중에 한번에 중단될 수 있는 파드 수를 설정한다. 이 설정을 통해 항상 최소한 한 개 이상의 파드는 실행중임을 보장해준다.
maxSurge:1 -> 은 업데이트 중에 추가로 생성될 수 있는 파드 수를 설정한다. 즉 새로운 버전의 파드를 먼저 실행 시키고, 그 후에 기존 파드를 하나씩 종료 한다.
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1 # 업데이트 중에 동시에 중단 가능한 파드 수
maxSurge: 1 # 동시에 추가로 생성 가능한 파드 수
추가하여 완성된 코드는 밑에
apiVersion: apps/v1
kind: Deployment
metadata:
name: cloudserver-web
spec:
replicas: 3
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1 # 업데이트 중에 동시에 중단 가능한 파드 수
maxSurge: 1 # 동시에 추가로 생성 가능한 파드 수
selector:
matchLabels:
app: cloudserver-web
template:
metadata:
labels:
app: cloudserver-web
spec:
containers:
- name: cloudserver-container
image: khm0930:cloudserver:v2 # 새로운 버전의 이미지
ports:
- containerPort: 80
그리고 다시 배포 명령어 입력
kubectl apply -f cloudstorge-deployment.yml
CLI 에서 배포 상태 확인 명령어
kubectl rollout status deployment cloudstorge-deployment.yml
배포 후 문제 발생시 롤백
만약 배포 중 문제가 발생했을 경우, 롤백 명령어를 사용하여 이전 버전으로 쉽게 되돌릴 수 있따.
kubectl rollout undo deployment <deployment-name>
밑에 사진은 배포 명령이 실행됬을 때 기존 이미지 khm0930/cloud_storge_web:v1.0 이미지가 바로 종료되지 않고 새로운 이미지가 실행되기 전까지 계속 실행되는 모습이다.

새로운 이미지가 생성 완료 되면 기존의 이미지로 실행되는 파드는 종료되고 새로운 이미지로 실행되는 파드로 존재하게 된다 . 이렇게 해서 애플리케이션을 업데이트하더라도 서버가 종료되지 않고 계속 켜져있는 상태로 업데이트를 진행할수 있게 된다는 장점이 있다.
