본문 바로가기

⭐ Kubernetes & EKS/롤링 업데이트 와 롤백 (Rolling update and Rollb)

연습문제 애플리케이션 롤링 업데이트와 롤백

# 연습문제 애플리케이션 롤링 업데이트와 롤백

# 모든 서비스 삭제

kubectl delete all --all

# 서비스 생성하기

--dry-run=client : 작성된 문법이 정상적으로 작성이 됐는지 확인해주는 역할, 실제로 명령어가 실행 되지는 않음

kubectl create deploy --image apline:3.4 apline-deploy --dry-run=client

yaml 파일 형태로 출력 : kubectl create deploy --image apline:3.4 apline-deploy --dry-run=client -o yaml

- yaml 파일로 출력하면 바로 yaml 파일로 생성이 가능하다.

kubectl create deploy --image apline:3.4 apline-deploy --dry-run=client -o yaml > alpine-deploy.yaml

vim alpine-deploy.yaml

# 소스코드 부분 수정

strategy 추가, replicas 10개로 수정

apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    run: alpine-deploy
  name: alpine-deploy
spec:
  replicas: 10
  selector:
    matchLabels:
      run: alpine-deploy
  strategy: 
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 50%
      maxUnavailable: 50%
  template:
    metadata:
      creationTimestamp: null
      labels:
        run: alpine-deploy
    spec:
      containers:
      - image: alpine:3.4
        name: alpine-deploy
        resources: {}
status: {}

# 작성한 yaml 파일 실행

kubectl create -f alpine-deploy.yaml

# 방금 생성한 서비스 삭제하기

kubectl delete -f alpine-deploy.yaml

- pod 까지 같이 삭제가 된다.

# record=true 옵션을 부여히스토리를 확인하자.

kubectl create -f alpine-deploy.yaml --record=true

# 히스토리 기록되는지 확인하기

kubectl rollout history deploy alpine-deploy

# edit를 통한 이미지 업데이트

kubectl edit deploy alpine-deploy --record=true

컨테이너 항목의 이미지 버전을 3.5로 변경 후 저장하기

kubectl get pod

- 확인을 해보면 이전 3.4버전의 컨테이너들을 삭제되고 있고, 3.5 버전이 신규로 생성이 되고 있는 모습을 확인 할 수 있다.

# Replica set 내용을 확인하기

kubectl get rs

# 다시 히스토리 확인하기

kubectl rollout history deploy alpine-deploy

-  확인해보면 3번째 줄에 새로운 버전의 업데이트 내용이 기록된것을 확인 할 수 있다.

# 롤백하기 > 리비전1로

kubectl rollout undo deploy alpine-deploy --to-revision=1

- 히스토리 다시 확인하기

- 첫번째 버전이 마지막으로 내려와 저장된것을 확인할 수있다.

- 가장 첫번째 컨테이너 수가 10개로 늘어난것을 확인 할 수 있다.

- 버전1의 컨테이너 수를 10개로 늘린것이다.

- 이로써 다운타임 없이 업데이트가 가능한 롤링업데이트에 대해서 알아보았습니다.