Exercise 7.3: Rolling Updates and Rollbacks using Deployment

  1. CP 노드에 연결된 터미널로 이동

  2. 이전 실습에서 생성된 Deployment의 배포 전략 확인

    kubectl get deploy webserver -o jsonpath='{.spec.strategy}' | jq
  3. 아래의 명령어로 텍스트 에디터를 실행해서 생성된 Deployment의 Manifest를 수동으로 수정

    kubectl edit deploy webserver
  4. 25번 라인의 strategy을 아래와 같이 변경하고 저장

    .... 
      strategy:
        type: Recreate
      template:
    ....
  5. 3, 4번 단계를 수행하지 않고 아래의 명령어로 대체 가능

    kubectl patch deploy webserver --type strategic \
    --patch '{"spec":{"strategy":{"$retainKeys":["type"],"type":"Recreate"}}}'
  6. Deployment의 배포 전략이 변경되었는지 확인

    kubectl get deploy webserver -o jsonpath='{.spec.strategy}' | jq
  7. Deployment의 이미지를 변경

    kubectl set image deploy webserver nginx=nginx:1.23.1-alpine
  8. 새로운 Pod가 생성되었는지 확인

    kubectl get pod -l app=webserver
  9. Pod의 컨테이너 이미지가 변경되었는지 확인

    kubectl get pod -l app=webserver \
    -o=custom-columns=NAME:.metadata.name,IMAGE:.spec.containers[*].image
  10. Deployment의 변경 기록 확인

    kubectl rollout history deploy webserver
  11. Revision 1과 Revision 2를 비교

    diff <(kubectl rollout history deploy webserver --revision=1) \
    <(kubectl rollout history deploy webserver --revision=2) -y
  12. 이전 버전으로 롤백

    kubectl rollout undo deploy webserver
  13. 새로운 Pod가 생성되었는지 확인

    kubectl get pod -l app=webserver
  14. Pod의 컨테이너 이미지가 변경되었는지 확인

    kubectl get pod -l app=webserver \
    -o=custom-columns=NAME:.metadata.name,IMAGE:.spec.containers[*].image
  15. Deployment 삭제

    kubectl delete deploy webserver

Last updated