[Kubernetes] Pod Label 을 활용한 가동 중지 시간 없이 간단하게 배포하는 방법

2023. 6. 26. 17:57기술 창고/Kubernetes

728x90
SMALL

minikube 가상 환경에서 배포하고 가동하는 작업은 어느 정도의 시간 소요가 걸립니다.

이유인즉슨 쿠버네티스는 실행할 때마다 기존의 Pod를 중지한 다음 새로운 Pod를 시작하고 그 속에 새로운 image를 불러옵니다.

이 시간 소요를 Label 활용해서 줄이거나 소요 없이 배포하는 방법에 대해서 알아보겠습니다.

 

우선 Pod에 Label을 추가해야합니다.
이 Label은 하나만 존재하는 것이 아니라 여러 개 존재할 수 있습니다.

 

 

Pod yml 편집기로 들어가서 새로운 버전의 image 를 포함한 Pod를 추가해줍니다.
--- 기호로 구분하여 추가하고 한 번에 관리할 수 있습니다.
첫 번째 Pod는 label 을 하나 추가하여 release: 0 을 추가해주었습니다.
두 번째 Pod는 이름을 webapp-release-0-5 로 변경하고 label 에도 release: 0-5 라고 명시해주었습니다.
중요한 부분은 spec의 image 부분인데 이 곳에 새로운 버전의 image를 넣습니다.

 

 

이제 Service 의 selector 도 같이 추가해기 위해 nano {service 파일 명} 명령어를 입력하여 편집기로 들어가줍시다.

 

 

Service에 selector를 release: 0 을 추가해줍니다.

 

 

kubectl apply -f {Pod yml 명 혹은 Service yml 명} 명령어를 실행하여 수정된 사항을 반영시키고 실행하게 되면 오류가 발생합니다.
이것은 yml 파일 내부에 0 이라는 숫자가 존재하는데, 이것이 정수로 간주됩니다.
따라서 이것을 문자열로 바꿔주어야 합니다.
만약 정수가 존재하지 않는다면 해당 오류는 발생되지 않을 것입니다.

 

 

Pod와 Service에 0 정수 부분에 "" 기호를 붙여 문자열로 바꿔줍니다.
0-5는 중간에 - 기호가 있기 때문에 굳이 붙이지 않아도 됩니다.

 

 

이제 다시 kubectl apply 명령어를 사용하여 Pod 와 Service 모두 적용시켜줍니다.

 

 

kubectl describe service 명령어를 통해 현재 어떤 Service 가 어떤 Pod 에 연결되어있는지 알 수 있습니다.

 

 

지금은 처음 그대로 0버전에 연결되어있습니다.
이제 추가한 신 버전 0-5 버전으로 변경해보겠습니다.
Service에 들어가서 selector 부분에 release 를 0-5로 지정합니다.

 

 

다시 apply 명령어를 통해 반영시키고 실행해줍니다.

 

 

minikube ip와 nodePort 를 합쳐서 다시 요청해보고 ctrl + F5 를 눌러 새로고침해보면 정상적으로 0.5버전으로 release 된 것을 확인할 수 있습니다.

 

 

지금처럼 Pod 에 label을 추가한 새로운 버전의 Pod 를 추가해주고 Service의 selector 부분만 변경할 pod 의 label 에 맞추어 apply 해준다면 그때그때 마다 바로 버전을 변경하며 배포할 수 있습니다.

시간 소요가 거의 없죠.

728x90
반응형
LIST