로컬에서는 잘 되는데 ☘️

GCP Essentials - Kubernetes Engine 사용하기

by youngjun._.
Qwiklabs GCP Essentials 실습 목차
(1) 2020/04/11 - [GCP] - GCP Essentials - Qwiklabs 실습 개요
(2) 2020/04/12 - [GCP] - GCP Essentials - 가상 머신 만들기 실습
(3) 2020/04/13 - [GCP] - GCP Essentials - Cloud Shell 및 gcloud 시작하기
(4) 2020/04/14 - [GCP] - GCP Essentials - Kubernetes Engine 사용하기

Qwiklabs의 GCP Essentials Quest를 수강하며 작성한 포스팅이다.

GCP Essentials  Kubernetes Engine

네 번째 실습인 [Kubernetes Engine 사용하기] Quest를 실습해보자.

Google Cloud Self-Paced Labs 대표 사진

개요

Google Kubernetes Engine에서는?

실습할 내용

  • GKE를 사용하여 직접 컨테이너를 생성하고 애플리케이션을 배포

Kubernetes Engine을 사용한 클러스터 조정

  • Kubernetes Engine 클러스터는 Kubernetes 오픈소스 클러스터 관리 시스템을 기반으로 한다.
  • Kubernetes는 컨테이너 클러스터와 상호작용할 수 있는 메커니즘을 제공한다.
  • Kubernetes 명령어와 리소스를 사용하면 애플리케이션을 배포 및 관리하고 관리 작업을 수행하고 정책을 설정하며 배포된 작업의 상태를 모니터링할 수 있다.

Kubernetes는 널리 쓰이는 Google 서비스와 동일한 설계 원칙을 따르고 있어 자동 관리, 애플리케이션 컨테이너의 모니터링 및 활성 여부 조사, 자동 확장, 순차적 업데이트와 같은 이점을 그대로 누릴 수 있다. 10년 이상 컨테이너를 통해 프로덕션 작업을 실행해 온 Google의 경험이 녹아든 기술을 활용하여 컨테이너 클러스터에서 애플리케이션을 실행할 수 있다.

Google Cloud Platform에서 사용하는 Kubernetes

Kubernetes Engine 클러스터를 실행하면 Google Cloud Platform이 제공하는 고급 클러스터 관리 기술의 이점도 활용할 수 있다. 예를 들면 다음과 같다.

이제 Kubernetes 관련 기본 사항을 파악했으므로, Kubernetes Engine을 사용하여 컨테이너식 애플리케이션을 배포하는 방법을 배워 보자.

 

설정 및 요구사항

이전 실습 때 했던 설정이다! 필요하면 열어보자.

더보기

실습 시작 버튼을 클릭하기 전에

 

다음 안내를 확인하자!

  • 실습에는 시간 제한이 있으며 일시 중지할 수 없다.
  • 실습 시작을 클릭하면 타이머가 시작되고 Cloud 리소스를 사용할 수 있는 시간이 얼마나 남았는지 표시된다.

Qwiklabs 실습을 통해 시뮬레이션이나 데모 환경이 아닌 실제 클라우드 환경에서 직접 실습 활동을 진행할 수 있다. 실습 시간 동안 Google Cloud Platform에 로그인하고 액세스 하는 데 사용할 수 있는 새로운 임시 사용자 인증 정보가 제공된다.

 

준비할 사항

 

이 실습을 완료하려면 다음을 준비해야 한다.

  • 표준 인터넷 브라우저(Chrome 브라우저 권장)
  • 실습을 완료할 시간
참고: 이미 개인용 GCP 계정이나 프로젝트가 있어도 이 실습에서는 사용하지 마세요!

 

실습을 시작하고 콘솔에 로그인하는 방법

 

(1) 실습 시작 버튼을 클릭합니다. 실습 비용을 결제해야 하는 경우 결제 수단을 선택할 수 있는 팝업이 열린다. 왼쪽에 있는 패널에서 이 실습에 사용해야 하는 임시 사용자 인증 정보를 확인할 수 있다.

실습 시작을 누르면 로그인 정보를 준다.

 

(2) 사용자 이름을 복사한 다음 Google 콘솔 열기를 클릭하자. 실습에서 리소스가 실행되며 계정 선택 페이지를 표시하는 다른 탭이 열린다.

팁: 두 탭은 각각 별도의 창에 나란히 여세요.
로그인 정보에 위에서 받은 정보를 입력하자

 

(3) 만약 계정 선택 페이지에 로그인 되어있다면 다른 계정 사용을 클릭!

 

(4) 로그인 페이지가 위와 같이 열리면 연결 세부 정보 패널에서 복사한 사용자 이름과 비밀번호를 붙여 넣자.

 

중요: 연결 세부 정보 패널에 표시된 사용자 인증 정보를 사용해야 합니다. 본인의 Qwiklabs 사용자 인증 정보를 사용하지 마세요. 이미 개인용 GCP 계정이 있어도 이 실습에서 사용하지 마세요(요금 청구 방지).

(5) 이후에 표시되는 페이지를 클릭하여 넘기자.

  • 이용약관에 동의
  • 임시 계정이므로 복구 옵션이나 2단계 인증을 추가하지 않음(CONFIRM)
  • 무료 평가판을 신청하지 않는다.
이용약관과 복구 옵션은 스킵한다.(CONFIRM을 누르면 된다)

 

잠시 후 GCP Console이 이 탭에서 열린다.

GCP Console에서 환영해준다.

 

왼쪽 상단에 탐색 메뉴를 클릭해서 메뉴를 살펴보자!

탐색 메뉴는 좌측 상단에 있다.

Google Cloud Shell 활성화하기

이전 실습 때 했던 설정이다! 필요하면 열어보자.

더보기

Google Cloud Shell은?

다양한 개발 도구가 탑재된 가상 머신
  • 5GB의 영구 홈 디렉터리를 제공하며 Google Cloud에서 실행된다.
  • Google Cloud Shell을 사용하면 명령줄을 통해 GCP 리소스에 액세스 할 수 있다.

 

(1) GCP Console의 오른쪽 상단 툴바에서 Cloud Shell 열기 버튼을 클릭하자.

오른쪽 상단 툴바에서 Console을 열 수 있다.

 

(2) Continue를 클릭하자.

환경을 프로비저닝하고 연결하는 데 약간의 시간이 걸린다.

연결되면 이미 인증되었으며 프로젝트는 PROJECT_ID PROJECT_ID로 설정된다.

 

프로젝트 ID가 보인다!

gcloud란?

이전 포스팅에서 공부했던 내용이다! 까먹었다면 다시 확인해보자.

더보기

gcloud는?

 Google Cloud Platform의 명령줄 도구

Cloud Shell에 사전 설치되어 있으며 탭 자동 완성을 지원한다!

 

가장 간단한 명령어를 살펴보자.

 

(1) 사용 중인 계정 이름 목록 확인

gcloud auth list

(2) 프로젝트 ID 목록 확인

glcoud config list project
실제로 Shell에서 실행하면 다음과 같이 출력된다.
gcloud 관련 전체 설명서는 Google Cloud gcloud 개요에서 확인할 수 있다.

 

기본 컴퓨팅 영역 설정

컴퓨팅 영역이란 클러스터와 리소스가 존재하는 대략적인 지역적 위치입니다. 예를 들어 us-central1-a는 us-central1 리전의 영역입니다.

Cloud Shell에서 새 세션을 시작하고, 다음 명령어를 실행하여 기본 컴퓨팅 영역을 us-central1-a로 설정합니다.

gcloud config set compute/zone us-central1-a

다음이 출력됩니다.

Updated property [compute/zone].

 

 

Kubernetes Engine 클러스터 만들기

클러스터란?

클러스터1개 이상의 클러스터 마스터 머신과 노드라는 다수의 작업자 머신으로 구성된다.

 

노드란?

클러스터를 구성하기 위해 필요한 Kubernetes 프로세스를 실행하는 Compute Engine VM(가상 머신) 인스턴스이다.

 

클러스터를 생성하려면 다음과 같은 명령어를 실행한다. 이때 [CLUSTER-NAME]을 내가 선택한 클러스터 이름으로 대체해야 한다(예: my-cluster).

클러스터 이름은 문자로 시작하고 영숫자로 끝나야 하며 40자를 초과할 수 없다!
gcloud container clusters create [CLUSTER-NAME]

표시되는 경고는 모두 무시해도 괜찮다. 클러스터 생성이 완료되는 데는 몇 분이 걸릴 수 있다. 잠시 후 다음과 비슷한 결과가 표시된다.

jun-cluster가 완성됐다!

 

내 진행 상황 확인하기를 클릭하여 목표를 확인하자.

클러스터의 사용자 인증 정보 얻기

클러스터를 만든 후 클러스터와 상호작용하려면 사용자 인증 정보를 얻어야 한다.

 

클러스터를 인증하려면 다음 명령어를 실행하자.
이때 [CLUSTER-NAME]을 내 클러스터 이름으로 대체해야 한다.

gcloud container clusters get-credentials [CLUSTER-NAME]

다음과 비슷한 결과가 표시됩니다.

 

클러스터 인증이 완료됐다!

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

클러스터가 생성되었으므로 이제 컨테이너식 애플리케이션을 배포할 수 있다. 이번 실습에서는 hello-app을 클러스터에서 실행한다.

 

Kubernetes Engine에서는 Kubernetes 객체를 사용해 클러스터의 리소스를 생성하고 관리한다.

 

디폴로이먼트(배포) 객체와 서비스 객체

웹 서버와 같은 상태 비추적 애플리케이션을 배포할 때는 Kubernetes에서 배포 객체를 사용한다. 서비스 객체는 인터넷에서 애플리케이션에 액세스하기 위한 규칙과 부하 분산을 정의한다.

 

Cloud Shell에서 다음 kubectl create 명령어를 실행하여 hello-app 컨테이너 이미지에서 새 배포 hello-server를 생성한다.

kubectl create deployment hello-server --image=gcr.io/google-samples/hello-app:1.0

다음과 같은 결과가 표시된다.

deployment.apps/hello-server created

 

이 Kubernetes 명령어를 사용하면 hello-server를 나타내는 배포 객체가 생성된다. 여기서 --image는 배포할 컨테이너 이미지를 지정한다. 해당 명령어는 Google Container Registry 버킷에서 예시 이미지를 가져온다.

 

gcr.io/google-samples/hello-app:1.0은 가져올 특정 이미지 버전을 나타낸다. 버전이 지정되지 않은 경우 최신 버전이 사용된다.

 

이제 다음의 kubectl expose 명령어를 실행하여 Kubernetes 서비스를 생성하자. 이 서비스는 애플리케이션을 외부 트래픽에 노출할 수 있게 해주는 Kubernetes 리소스이다.

 

kubectl expose deployment hello-server --type=LoadBalancer --port 8080

이 명령어에서

  • --port를 통해 컨테이너가 노출될 포트가 지정
  • type="LoadBalancer"는 컨테이너의 Compute Engine 부하 분산기를 만든다

다음과 같은 결과가 표시된다.

 

내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.

 

 

 

kubectl get을 실행하여 hello-server 서비스를 검사합니다.

 

kubectl get service

다음과 비슷한 결과가 표시된다.

 

참고: 외부 IP 주소가 생성되는 데는 1분 정도 걸릴 수 있습니다 EXTERNAL-IP 열이 "대기중" 상태이면 위 명령어를 다시 실행하자.

이 명령어의 출력에서 EXTERNAL IP 열에 있는 서비스의 외부 IP 주소를 복사한다.

 

외부 IP 주소와 노출된 포트를 사용해 웹브라우저에서 애플리케이션을 확인한다.

 

http://[EXTERNAL-IP]:8080

 

페이지가 다음과 비슷하게 표시된다.

 

웹페이지가 정상적으로 확인됐다!

 

내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.

 

 

삭제

클러스터를 삭제하려면 다음 명령어를 실행하자.

 

gcloud container clusters delete [CLUSTER-NAME]

메시지가 표시되면 Y를 입력하여 확인한다. 클러스터를 삭제하는 데는 몇 분이 걸릴 수 있다. 삭제된 Google Kubernetes Engine 클러스터에 관한 자세한 내용은 이 문서에서 확인하자.

 

내 진행 상황 확인하기를 클릭하여 목표를 확인한다.

완료했다!

끝났다!

Kubernetes Engine에 컨테이너화된 애플리케이션을 배포했다!

블로그의 정보

개발하는만두

youngjun._.

활동하기