지난 실습에서 Container Registry에 이미지를 push 했다.
Container Registry에 저장함으로써 Docker Hub와 같은 Public Registry가 아닌
Private Registry를 구축해 보았다.
이제 GKE로 본격 실습을 시작하자
1. 클러스터 생성
우선 클러스터를 생성하자.
GKE에서 만든 클러스터로 컨테이너화된 웹 애플리케이션을 배포하고 관리할 수 있다.
지난 GKE 시작하기 포스팅에서는 console을 이용했지만 CLI를 사용하는 방법도 실습해보겠다.
( 해당 실습은 로컬에서 GCP를 사용하고 있으므로 로컬 사용을 위해서는 SDK를 설치하고 로그인하여 권한을 부여해야 한다.)
📑 지난 포스팅
1) 옵션 설정
gcloud config set project $PROJECT_ID
gcloud config set compute/zone asia-southeast1-c
gcloud auth login 할 때 터미널에서 힌트를 줘서 옵션 설정을 할 수 있었다.
2) 이름: node-cluster, 구성: 노드 3개
gcloud container clusters create node-cluster --num-nodes=3
생성 완료되었다.
콘솔에서도 생성된 클러스터를 확인할 수 있다.
2. 애플리케이션 배포
해당 명령어를 통해서 배포 해보자!
kubectl create deployment node-portfolio-app --image=gcr.io/${PROJECT_ID}/node_portfolio_app:0.0.1
< Pod 개념 정리 >
아래 강의를 보면서 실습에 앞서 개념을 공부했다.
(1) Docker
Docker에서는 Container 하나가 어플리케이션 하나이다.
(2) K8s
쿠버네티스(K8s)에서는 클러스터 내 Pod라는 API 최소단위를 통해서 동작시킨다.
Pod
Pod에는 하나 또는 여러 개의 컨테이너가 포함될 수 있다.
다시 돌아와서 현재 동작 중인 Pod를 확인해보자.
kubectl get pods
Pod가 동작 중인 것을 확인했으니 인터넷 환경으로 배포해보자.
kubectl expose deployment node-portfolio-app --type=LoadBalancer --port 5001 --target-port 5001
할당된 external ip를 다음 명령어로 확인해보자!
kubectl get service
주소창에 <external ip>:<port> 하면 Pod 위에서 어플리케이션이 배포된 것을 확인할 수 있다.
그런데, 지금 내가 배포하고 싶은 app은 react-portfolio-app과 node-portfolio-app 총 두개이다. 현재는 node-portfolio-app만 배포되어 있다.
이전에 생성한 node-cluster 내에 앱을 하나 더 배포해보자.
3. 클러스터에 여러 개의 애플리케이션을 배포
node-app을 띄울 때가 같은 프로세스를 진행한다.
1) 이미지 생성
docker build -t "gcr.io/$PROJECT_ID/react_portfolio_app:0.0.1" .
2) GCP Container Registry에 push
docker push gcr.io/$PROJECT_ID/react_portfolio_app:0.0.1
3) node-cluster에 배포
kubectl create deployment react-portfolio-app --image=gcr.io/${PROJECT_ID}/react_portfolio_app:0.0.1
4) 인터넷 환경 배포
kubectl expose deployment react-portfolio-app --type=LoadBalancer --port 80 --target-port 80
5) 서비스 배포 확인
kubectl get service
react-portfolio-app 또한 배포가 되었다. 👏👍
둘다 잘 동작된다.
해야할 일
- 디플로이먼트(Deployment) 오브젝트를 사용해 배포해보기.
📌 지난 포스팅
'Cloud > Docker | K8s + CI, CD' 카테고리의 다른 글
[CI/CD][#1] CircleCI 를 활용한 자동화 파이프라인 구축 (0) | 2022.05.17 |
---|---|
[CI/CD][#0] Docker, K8s, CI/CD 활용해 무중단 배포하기 - Intro (0) | 2022.05.14 |
[Docker] 프로젝트에 도입 (0) | 2022.04.16 |
[#3] GCP GKE에서 Kubernetes로 컨테이너 관리하기 1탄 (2) | 2022.04.16 |
댓글