Exercise 5.4: Rolling Updates and Rollbacks

  1. Deployment 생성

    kubectl create deployment simpleapp --image=$repo/simpleapp --replicas=6
  2. 생성된 Deployment 및 Pod 확인

    kubectl get deploy,pod -l app=simpleapp
  3. 데모 애플리케이션 업데이트

    cd ~/app1
    echo '  print("done")' >> simple.py
  4. 로컬호스트에 저장된 데모 애플리케이션 컨테이너 이미지 확인

    sudo podman images
  5. 컨테이너 이미지 생성

    sudo podman build -t simpleapp .
  6. 컨테이너 이미지가 업데이트 됐는지 확인

    sudo podman images
  7. 위에서 생성한 컨테이너 이미지를 새로운 태그를 부여하고 로컬 레지스트리에 업로드

    {
        sudo podman tag simpleapp $repo/simpleapp:v2
        sudo podman push $repo/simpleapp:v2
    }
  8. 컨테이너 이미지가 업데이트 됐는지 확인

    sudo podman images
  9. Worker 노드에 연결된 터미널로 이동

  10. 데모 애플리케이션 컨테이너 이미지 다운로드

    sudo podman pull $repo/simpleapp
  11. v2 태그를 가진 데모 애플리케이션 컨테이너 이미지 다운로드

    sudo podman pull $repo/simpleapp:v2
  12. CP 노드에 연결된 터미널로 이동

  13. Deployment 이미지를 변경

    kubectl set image deployment simpleapp simpleapp=$repo/simpleapp:v2
  14. 클러스터에 발생한 이벤트 확인

    kubectl get events  --sort-by='.metadata.creationTimestamp'
  15. Pod의 컨테이너 이미지 변경됐는지 확인

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

    kubectl rollout history deploy simpleapp
  17. Revision 1과 Revision 2를 비교

    diff <(kubectl rollout history deploy simpleapp --revision=1) <(kubectl rollout history deploy simpleapp --revision=2) -y
  18. 이전 버전으로 롤백을 시뮬레이션

    kubectl rollout undo deploy simpleapp --dry-run=client
  19. Revision 1으로 롤백

    kubectl rollout undo deploy simpleapp --to-revision=1
  20. Pod의 컨테이너 이미지 변경됐는지 확인

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

    kubectl delete deploy simpleapp

Last updated