Cloud Services/GCP

[GCP Essentials] 쿠버네티스 클러스터에 컨테이너 기반 애플리케이션 배포하기

림 림 2020. 10. 25. 23:59
반응형

GCP Essentials 과정을 수료하면서 GCP를 이용하여 구글 쿠버네티스 엔진(GKE)를 할당받아 클러스터를 구성하고 애플리케이션을 배포하는 방법을 핸즈온 랩으로 직접 해보며 배워볼 수 있었습니다.

 

[느낀 점 & 배운 점]

이번 GCP Essentials 핸즈온 랩을 진행하기 전에는 도커, 쿠버네티스 등등.. 의 기술들은 이름만 들어봤을 뿐, 저에게는 매우 생소했습니다.

그런데 이번 핸즈온 랩을 진행하고 나서 직접 쿠버네티스 클러스터를 구성하고 컨테이너 기반 애플리케이션을 배포해보면서, 쿠버네티스에서 제공하는 deployment/service 객체에 대해 알 수 있었습니다.

또, 쿠버네티스의 image파라미터에 가상화 이미지 이름을 넣어 배포할 수 있구나~ 하는 정도까지 알게 되었습니다.

아직도 잘은 모르지만, 이번 핸즈온 랩을 진행하면서 쿠버네티스에 대해 조금 더 친숙해질 수 있었습니다. 이후에 쿠버네티스와 도커 서비스에 대한 본질적인 개념을 이해하고 기술 선택의 기준을 정할 수 있도록 더 공부해봐야겠습니다. :)

 

[배포 과정]

1. Google Cloud Console 열기

먼저 구글 클라우드 콘솔창을 열어줍니다.

 

2. Cloud Shell 열기

터미널 아이콘을 클릭해서 클라우드 쉘을 열어줍니다.

 

3. default compute zone 설정하기

쿠버네티스 엔진 클러스터를 생성하기 전에 먼저 zone을 설정해줘야 합니다. zone을 설정하지 않고 쿠버네티스 엔진 클러스터를 생성하면 에러가 발생합니다. 

저는 Essentials 수료 조건에 따라 us-central1-a로 설정했습니다.

gcloud config set compute/zone us-central1-a

 

 

4. 쿠버네티스 엔진 클러스터 생성하기

한 클러스터는 최소 하나 이상의 cluster master 머신과 여러 개의 node라고 불리는 워커 머신으로 이루어집니다. 각각의 node는 쿠버네티스 프로세스를 실행하는 가상 머신 인스턴스입니다. 

[CLUSTER-NAME] 부분에 생성할 클러스터의 이름을 넣으면 됩니다. 저는 my-cluster로 설정했습니다.

gcloud container clusters create [CLUSTER-NAME]

클러스터를 생성하고 나면 클러스터의 NAME, LOCATION, MASTER_VERSION, MASTER_IP, MACHINE_TYPE, NODE_VERSION, NUM_NODES, STATUS 정보가 콘솔창에 출력됩니다. 제가 생성한 클러스터의 노드 수는 3이고 현재 RUNNING 상태라는 것을 알 수 있습니다.

 

5. authentication credentials 얻기

클러스터를 생성한 후에는 클러스터와 상호작용하기 위해 인증서를 얻어야 합니다.

gcloud container clusters get-credentials [CLUSTER-NAME]

 

6. 클러스터에 애플리케이션 배포하기

이제 클러스터에 컨테이너 기반 애플리케이션을 배포할 수 있습니다. 쿠버네티스 엔진은 클러스터의 자원을 생성하고 관리하기 위해 쿠버네티스 객체를 사용합니다. 쿠버네티스는 Deployment객체와 Service객체를 제공합니다.

6-1. Deployment 생성하기

Deployment객체로 스테이트리스(stateless)애플리케이션을 배포할 수 있습니다. 스테이트리스 애플리케이션은 웹서버와 같이 클러스터에 데이터 또는 애플리케이션 상태를 저장하지 않는 애플리케이션을 말합니다. 

kubectl create deployment 명령어로 배포해보겠습니다. [SERVER_NAME]에는 배포할 서버의 이름을, [IMAGE]는 배포할 컨테이너의 이미지입니다.

kubectl create deployment [SERVER_NAME] --image=[IMAGE]

 

6-2. Service 생성하기

Service객체로 인터넷으로 애플리케이션에 접근하기 위해 규칙을 정의하고 로드밸런싱을 할 수 있습니다. 로드밸런서를 생성하고 8080번 포트에 Deployment를 외부에 노출시키겠습니다.

kubectl expose deployment [SERVER_NAME] --type=LoadBalancer --port 8080

 

배포한 서버의 정보를 확인해보겠습니다.

kubectl get service

콘솔창에 출력된 정보로 인터넷으로 접속할 수 있는 EXTERNAL-IP 주소를 알 수 있습니다.

 

7. 클러스터 서버에 접속하기

위에서 얻은 EXTERNAL-IP 와 포트 번호를 통해 서버에 접속할 수 있습니다.

[EXTERNAL-IP]:[port] 로 접속하면 다음과 같이 애플리케이션이 배포된 것을 확인할 수 있습니다.

서버 접속 화면

8. 클러스터 삭제하기

다음 명령어를 통해 삭제할 수 있습니다.

gcloud container clusters delete [CLUSTER-NAME]

 

반응형

'Cloud Services > GCP' 카테고리의 다른 글

[GCP Essentials] GCP로 VM에 Nginx서버 구축하기  (0) 2020.10.02