본문 바로가기
Cloud/Docker | K8s + CI, CD

[#4] GCP GKE에서 Kubernetes로 컨테이너 관리하기 2탄

by HelloJudy 2022. 4. 18.

지난 실습에서 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 개념 정리 >

아래 강의를 보면서 실습에 앞서 개념을 공부했다.

 

https://youtu.be/0rYt3PcggzA

출처='유튜브 TTABAE-LEARN 채널의 타베쿠 강의'

 

(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-appnode-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) 오브젝트를 사용해 배포해보기.

 

pod랑 service, nodeport 대략적인 구조

https://kubernetes.io/ko/docs/tasks/access-application-cluster/connecting-frontend-backend/#%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C-%EC%84%9C%EB%B9%84%EC%8A%A4%EC%99%80-%ED%86%B5%EC%8B%A0%ED%95%98%EA%B8%B0

 

서비스를 사용하여 프론트엔드를 백엔드에 연결

이 작업은 프론트엔드 와 백엔드 마이크로서비스를 어떻게 생성하는지를 설명한다. 백엔드 마이크로서비스는 인사하기(hello greeter)이다. 프론트엔드는 nginx 및 쿠버네티스 서비스 오브젝트를 사

kubernetes.io

 

 

📌 지난 포스팅

반응형

댓글