-
쿠버네티스 배포 실습Cloud/Kubernetes 2023. 2. 12. 23:56
이번 실습에서는 이전에 만들었던 my-web-app 이미지를 기반으로 쿠버네티스에 애플리케이션을 배포하고, 애플리케이션을 노출하고, 접속을 테스트하며, v1 버전에서 v2 버전으로 롤링 업데이트를 통해 버전 변경 배포를 하는 과정을 실습해보겠습니다.
my-web-app 이미지가 없다면 도커 실습 (https://dennis.k8s.kr/3) 을 먼저 진행하고 오시길 바라겠습니다.
사전 준비 사항
- 쿠버네티스 클러스터
- kubectl CLI
단계 1: 쿠버네티스 디플로이먼트 만들기
다음과 같이 kubectl 명령어를 사용하여 쿠버네티스 디플로이먼트를 만듭니다.
kubectl create deployment my-web-app --image=my-web-app:v1
위 명령어는 my-web-app 디플로이먼트를 만들고, my-web-app:v1 이미지를 사용하여 컨테이너를 실행합니다.
단계 2: 서비스 만들기
다음과 같이 kubectl 명령어를 사용하여 쿠버네티스 서비스를 만듭니다.
kubectl expose deployment my-web-app --type=LoadBalancer --port=80 --target-port=80
위 명령어는 my-web-app 디플로이먼트에서 실행 중인 컨테이너에 접근하기 위한 로드 밸런서 타입의 서비스를 만듭니다.
단계 3: 서비스 접속 정보 확인하기
다음과 같이 kubectl 명령어를 사용하여 서비스의 접속 정보를 확인합니다.
kubectl get services
위 명령어는 모든 서비스의 목록을 출력합니다. my-web-app 서비스의 EXTERNAL-IP를 찾아서 브라우저에서 해당 IP로 접속하면, "This is version 1 of my web app." 메시지가 표시됩니다.
단계 4: 버전 업그레이드
이제 my-web-app 이미지의 v2 버전으로 롤링 업데이트를 진행해보겠습니다.
다음과 같이 kubectl 명령어를 사용하여 디플로이먼트에 새로운 이미지를 배포합니다.
kubectl set image deployment/my-web-app my-web-app=my-web-app:v2
위 명령어는 my-web-app 디플로이먼트의 my-web-app 컨테이너 이미지를 my-web-app:v2 이미지로 변경합니다.
단계 5: 롤링 업데이트 모니터링
다음과같이 kubectl 명령어를 사용하여 롤링 업데이트를 모니터링합니다.
kubectl rollout status deployment/my-web-app
위 명령어는 디플로이먼트의 롤링 업데이트 상태를 모니터링합니다. 모든 파드가 Running 상태이면, 업데이트가 완료된 것입니다.
단계 6: 버전 업그레이드 확인
다시 my-web-app 서비스의 EXTERNAL-IP로 접속하여, "This is version 2 of my web app." 메시지가 표시되는지 확인합니다. 버전 업그레이드가 정상적으로 이루어졌습니다.
단계 7: 컨테이너 삭제
다음과 같이 kubectl 명령어를 사용하여 디플로이먼트와 서비스를 삭제합니다.
kubectl delete deployment my-web-app kubectl delete service my-web-app
위 명령어는 my-web-app 디플로이먼트와 서비스를 삭제합니다.
이제, my-web-app 이미지를 기반으로 쿠버네티스에 애플리케이션을 배포하고, 애플리케이션을 노출하고, 접속을 테스트하며, v1 버전에서 v2 버전으로 롤링 업데이트를 통해 버전 변경 배포를 해보았습니다. 이를 통해 쿠버네티스에 대한 이해도를 높일 수 있습니다.
'Cloud > Kubernetes' 카테고리의 다른 글
Amazon EKS로 웹 애플리케이션 구축하기 (0) 2024.08.08 Cloud Native CI/CD 구축하기 실습 (0) 2023.02.13 쉽고 간단한 kubectl plugin 개발 하기 (1) - 기초 구현 (0) 2019.01.20