본문 바로가기
서버인프라/kubernetes

[제 6강] Updating a Deployment

by techwold ted 2022. 12. 27.

지난 시간에 만들었던 nginx-deployment.yaml 파일을 활용할 계획 입니다.

우선 삭제를 하고 다시 만들어 보겠습니다. nginx-deployment.yaml 파일이 있는 가정하에 작업을 진행하겠습니다.

kubectl delete deployments.apps nginx-deployment

위와 같이하여 삭제를 한 후 아래와 같이 신규로 생성해 줍니다.

kubectl create -f nginx-deployment.yaml

위와 같이 다들 생성  되셨나요? 그럼 현재의 nginx 버전을 확인해 보겠습니다.

kubectl exec nginx-deployment-85996f8dbd-xxqpb -it -- nginx -v
nginx version: nginx/1.14.2

현재 우리가 설치한 nginx버전dms 1.14.2 입니다. 해당 버전은 describe 에서도 Containers.nginx.Image 에서도 확인 하실수 있습니다.

그럼 이제 새로운 버전으로 업데이트 진행을 해보겠습니다. 아래와 같이 명령어를 입력하면 진행 하실 수 있습니다. kubectl set 을 활용하여 image 버전을 변경해 보겠습니다.

kubectl set image deployment/nginx-deployment nginx=nginx:1.15 --record

아래와 같이 우선 배포 롤아웃 기록을 확인해 줍니다.

kubectl rollout history deployment nginx-deployment

아래와 같이 exec를 확인하여 nginx 버전을 확인합니다. 마이너 버전을 지정하지 않고 우린 1.15버전을 했는데 마이너 마지막 버전으로 생성이 되었을 것이며 아래와 같이 확인 되신 것을 확인 할 수 있습니다.

kubectl exec nginx-deployment-788b6d85f-hwlnl -it -- nginx -v
nginx version: nginx/1.15.12

그럼 다들 몇번 더 연습으로 1.16, 1.17, 1.18 까지 단계별로 올려보도록 하겠습니다.

다들 아래와 같이 기록 되셨나요? 다음과 같이 기록 되었다면 잘 진행 한 것입니다. 사실 이렇게 업데이트를 진행 한 이유는 우리가 몇가지 더 테스트를 하기 위함입니다.

kubectl rollout history deployment nginx-deployment
deployment.apps/nginx-deployment
REVISION  CHANGE-CAUSE
1         kubectl create --filename=nginx-deployment.yaml --record=true
2         kubectl set image deployment/nginx-deployment nginx=nginx:1.15 --record=true
3         kubectl set image deployment/nginx-deployment nginx=nginx:1.16 --record=true
4         kubectl set image deployment/nginx-deployment nginx=nginx:1.17 --record=true
5         kubectl set image deployment/nginx-deployment nginx=nginx:1.18 --record=true

그럼 이제 undo를 활용하여 이전 그러니까 지금은 현재 1.18 버전 일 것이고 1.17 버전으로 이동해 보겠습니다.

kubectl rollout history deployment nginx-deployment
deployment.apps/nginx-deployment
REVISION  CHANGE-CAUSE
1         kubectl create --filename=nginx-deployment.yaml --record=true
2         kubectl set image deployment/nginx-deployment nginx=nginx:1.15 --record=true
3         kubectl set image deployment/nginx-deployment nginx=nginx:1.16 --record=true
5         kubectl set image deployment/nginx-deployment nginx=nginx:1.18 --record=true
6         kubectl set image deployment/nginx-deployment nginx=nginx:1.17 --record=true

자 다음과 같이 이동 되신 것을 확인 하셨나요?하지만 우리가 여기서 1.16을 가기위해서 다시 undo를 해봤자 되지 않았을 것입니다. 1.17현재 1.17이며, 여기서 undo를 하면 1.18이 될 것입니다. 그러니까 undo를 하면 1.17과 1.18만 왔다 갔다 할거에요, 그럼 1.16을 가기 위해서는 어떻게 해야 할까요? 다음과 같은 명령어로 해당 원하는 버전으로 변경이 가능 합니다.

아래와 같이 REVISION을 추가하면 내가 원하는 해당 위치에 갈 수 있습니다.

kubectl rollout undo deployment/nginx-deployment --to-revision=2

이전에 봤던 revison number가 사라지고 1.15가 맨 마지막 history로 간것을 확인 할 수 있습니다.

내가 원하는 버전으로 갈때는 --to-revison을 사용함을 꼭 기억 하시길 바랍니다.

kubectl rollout history deployment nginx-deployment
deployment.apps/nginx-deployment
REVISION  CHANGE-CAUSE
1         kubectl create --filename=nginx-deployment.yaml --record=true
3         kubectl set image deployment/nginx-deployment nginx=nginx:1.16 --record=true
5         kubectl set image deployment/nginx-deployment nginx=nginx:1.18 --record=true
6         kubectl set image deployment/nginx-deployment nginx=nginx:1.17 --record=true
7         kubectl set image deployment/nginx-deployment nginx=nginx:1.15 --record=true

이제 다음과 같이 업데이트를 하는 방법을 확인 하실 수 있습니다.

잘 활용 하실 수 있으리라 믿습니다.

'서버인프라 > kubernetes' 카테고리의 다른 글

[제 8강] Service  (2) 2023.01.04
[제 7강] NameSapace  (4) 2022.12.29
[제 5강] Deployments  (0) 2022.12.25
[제 4강] ReplicaSet  (0) 2022.12.21
[제 3강] Resource Management  (0) 2022.12.19

댓글