Hello Cloud Run
개요
Cloud Run은 HTTP 요청으로 호출 가능한 스테이트리스(Stateless) 컨테이너를 실행하는 관리형 컴퓨팅 플랫폼입니다. Cloud Run은 서버리스이므로 인프라 관리가 필요 없습니다. 따라서 개발자가 본연의 업무인 애플리케이션 개발에 집중할 수 있습니다.
Cloud Run은 Knative 기반으로 빌드되어 컨테이너 실행 환경을 선택할 수 있습니다. 완전 관리형 환경 또는 GKE의 Google Kubernetes Engine 클러스터 중에서 선택하면 됩니다.
이 실습의 목적은 컨테이너화된 간단한 애플리케이션 이미지를 빌드하여 Cloud Run에 배포하는 방법을 배우는 것입니다.
목표
이 실습에서는 다음을 수행하는 방법에 대해 알아봅니다.
- Cloud Run API를 사용 설정합니다.
- 서버리스, 스테이트리스(Stateless) 컨테이너로 배포할 수 있는 간단한 Node.js 애플리케이션을 만듭니다.
- 애플리케이션을 컨테이너화하고 Artifact Registry에 업로드합니다.
- Cloud Run에 컨테이너화된 애플리케이션을 배포합니다.
- 추가적인 스토리지 비용이 발생하지 않도록 불필요한 이미지를 삭제합니다.
설정 및 요건
각 실습에서는 정해진 기간 동안 새 Google Cloud 프로젝트와 리소스 집합이 무료로 제공됩니다.
-
실습 시작 버튼을 클릭합니다. 실습 비용을 결제해야 하는 경우 결제 수단을 선택할 수 있는 팝업이 열립니다. 왼쪽에는 다음과 같은 항목이 포함된 실습 세부정보 패널이 있습니다.
- Google Cloud 콘솔 열기 버튼
- 남은 시간
- 이 실습에 사용해야 하는 임시 사용자 인증 정보
- 필요한 경우 실습 진행을 위한 기타 정보
-
Google Cloud 콘솔 열기를 클릭합니다(Chrome 브라우저를 실행 중인 경우 마우스 오른쪽 버튼으로 클릭하고 시크릿 창에서 링크 열기를 선택합니다).
실습에서 리소스가 가동되면 다른 탭이 열리고 로그인 페이지가 표시됩니다.
팁: 두 개의 탭을 각각 별도의 창으로 나란히 정렬하세요.
참고: 계정 선택 대화상자가 표시되면 다른 계정 사용을 클릭합니다. -
필요한 경우 아래의 사용자 이름을 복사하여 로그인 대화상자에 붙여넣습니다.
{{{user_0.username | "Username"}}} 실습 세부정보 패널에서도 사용자 이름을 확인할 수 있습니다.
-
다음을 클릭합니다.
-
아래의 비밀번호를 복사하여 시작하기 대화상자에 붙여넣습니다.
{{{user_0.password | "Password"}}} 실습 세부정보 패널에서도 비밀번호를 확인할 수 있습니다.
-
다음을 클릭합니다.
중요: 실습에서 제공하는 사용자 인증 정보를 사용해야 합니다. Google Cloud 계정 사용자 인증 정보를 사용하지 마세요. 참고: 이 실습에 자신의 Google Cloud 계정을 사용하면 추가 요금이 발생할 수 있습니다. -
이후에 표시되는 페이지를 클릭하여 넘깁니다.
- 이용약관에 동의합니다.
- 임시 계정이므로 복구 옵션이나 2단계 인증을 추가하지 않습니다.
- 무료 체험판을 신청하지 않습니다.
잠시 후 Google Cloud 콘솔이 이 탭에서 열립니다.
Google Cloud Shell 활성화하기
Google Cloud Shell은 다양한 개발 도구가 탑재된 가상 머신으로, 5GB의 영구 홈 디렉터리를 제공하며 Google Cloud에서 실행됩니다.
Google Cloud Shell을 사용하면 명령줄을 통해 Google Cloud 리소스에 액세스할 수 있습니다.
-
Cloud 콘솔의 오른쪽 상단 툴바에서 'Cloud Shell 열기' 버튼을 클릭합니다.
-
계속을 클릭합니다.
환경을 프로비저닝하고 연결하는 데 몇 분 정도 소요됩니다. 연결되면 사용자가 미리 인증되어 프로젝트가 PROJECT_ID로 설정됩니다. 예:
gcloud는 Google Cloud의 명령줄 도구입니다. Cloud Shell에 사전 설치되어 있으며 명령줄 자동 완성을 지원합니다.
- 다음 명령어를 사용하여 사용 중인 계정 이름을 나열할 수 있습니다.
출력:
출력 예시:
- 다음 명령어를 사용하여 프로젝트 ID를 나열할 수 있습니다.
출력:
출력 예시:
참조
기본 Linux 명령어
다음은 이 실습의 지침 또는 코드 블록에 등장할 수 있는 몇 가지 기본 Linux 명령어입니다.
명령어 --> | 작업 | . | 명령어 --> | 작업 |
---|---|---|---|---|
mkdir(디렉터리 생성) | 새 폴더를 만듭니다. | . | cd(디렉터리 변경) | 다른 폴더로 위치를 변경합니다. |
ls(항목 나열) | 디렉터리 내 파일 및 폴더를 나열합니다. | . | cat(연결) | 편집기를 사용하지 않고 파일 콘텐츠를 읽어 옵니다. |
apt-get update | 패키지 관리자 라이브러리를 업데이트합니다. | . | ping | 호스트의 연결 가능성을 테스트하기 위해 신호를 보냅니다. |
mv(이동) | 파일을 이동합니다. | . | cp(복사) | 파일 사본을 만듭니다. |
pwd(현재 작업 디렉터리) | 현재 위치를 반환합니다. | . | sudo(수퍼유저 권한 실행) | 상위 관리자 권한을 부여합니다. |
작업 1. Cloud Run API 사용 설정 및 Shell 환경 구성
- Cloud Shell에서 Cloud Run API를 사용 설정합니다.
- 사용자 인증 정보의 사용을 승인하라는 메시지가 표시되고 이를 승인하면 다음과 비슷한 성공 메시지가 표시됩니다.
- 컴퓨팅 리전을 설정합니다.
- LOCATION 환경 변수를 만듭니다.
작업 2. 샘플 애플리케이션 작성
이 작업에서는 HTTP 요청에 응답하는 간단한 표현 기반 NodeJS 애플리케이션을 빌드합니다.
- Cloud Shell에서 이름이
helloworld
인 새 디렉터리를 만든 다음, 이 디렉터리로 뷰를 이동합니다.
-
그런 다음 파일을 만들고 편집합니다. 파일을 편집하려면
nano
를 사용하거나 Cloud Shell에서 편집기 열기 버튼을 클릭하여 Cloud Shell 코드 편집기를 사용합니다. -
package.json
파일을 만든 다음 아래의 내용을 추가합니다.
가장 중요한 점은 위의 파일에 Express 웹 애플리케이션 프레임워크에 대한 종속 항목과 시작 스크립트 명령어가 포함되어 있다는 점입니다.
-
Ctrl+X 키를 누른 다음 Y를 누르고, Enter 키를 눌러
package.json
파일을 저장합니다. -
그런 다음, 동일한 디렉터리에서
index.js
파일을 만든 후 이 파일에 다음을 복사하여 붙여넣습니다.
이 코드는 PORT
환경 변수로 정의한 포트를 리슨하는 기본 웹 서버를 생성합니다. 앱이 완성되었으며 컨테이너화 및 Artifact Registry에 업로드할 준비가 되었습니다.
-
Ctrl+X 키를 누른 다음 Y를 누르고, Enter 키를 눌러
index.js
파일을 저장합니다.
작업 3. 앱을 컨테이너화한 다음 Artifact Registry에 업로드
- 샘플 앱을 컨테이너화하려면 소스 파일과 동일한 디렉터리에
Dockerfile
이라는 새 파일을 만든 후 이 파일에 다음 콘텐츠를 추가합니다.
-
Ctrl+X 키를 누른 다음 Y 키를 누르고, Enter 키를 눌러
Dockerfile
파일을 저장합니다. -
Dockerfile
이 포함되어 있는 디렉터리에서 다음 명령어를 실행하여 Cloud Build로 컨테이너 이미지를 빌드합니다. (참고로 명령어의 $GOOGLE_CLOUD_PROJECT 환경 변수에는 실습 프로젝트 ID가 포함됩니다.)
Cloud Build는 Google Cloud에서 빌드를 실행하는 서비스입니다. Cloud Build는 일련의 빌드 단계를 실행하며, 여기서 각 빌드 단계는 Docker 컨테이너에서 실행되어 애플리케이션 컨테이너(또는 기타 아티팩트)를 생성한 후 Artifact Registry로 푸시합니다. 이러한 모든 과정이 하나의 명령어로 이루어집니다.
레지스트리로 푸시된 후에는 이미지 이름이 포함된 SUCCESS 메시지가 표시됩니다(gcr.io/[PROJECT-ID]/helloworld
). 이미지는 Artifact Registry에 저장되며 원하는 경우 다시 사용할 수 있습니다.
- 다음 명령어를 사용하여 현재 프로젝트에 연결된 컨테이너 이미지를 모두 나열합니다.
- 모든 Google 지원 Docker 레지스트리에 사용자 인증 정보 도우미로
gcloud
를 등록합니다.
- Cloud Shell에서 로컬 방식으로 애플리케이션을 실행하고 테스트하려면 다음과 같은 표준
docker
명령어를 사용하여 시작합니다.
- Cloud Shell 창에서 웹 미리보기를 클릭하고 포트 8080에서 미리보기를 선택합니다.
그러면 브라우저 창이 열리고 'Hello World!' 메시지가 표시됩니다. 간단히 curl localhost:8080
을 사용할 수도 있습니다.
작업 4. Cloud Run에 배포
- 컨테이너화된 애플리케이션을 Cloud Run에 배포하려면 다음 명령어를 사용하여 프로젝트 ID를 추가해야 합니다.
위 명령어의 allow-unauthenticated 플래그를 사용하면 내 서비스가 공개적으로 액세스 가능하게 됩니다.
- 메시지가 표시되면 Enter 키를 눌러
service name
을 확인합니다.
그런 다음 배포가 완료될 때까지 잠시 기다립니다.
성공하면 명령줄에 다음과 같은 서비스 URL이 표시됩니다.
이제 브라우저 창에서 서비스 URL을 열어 배포된 컨테이너로 이동할 수 있습니다.
수고하셨습니다. 컨테이너 이미지로 패키징된 애플리케이션을 Cloud Run에 배포했습니다. Cloud Run은 수신된 요청을 처리하기 위해 컨테이너 이미지를 자동 및 수평 확장한 다음 수요가 감소하면 축소합니다. 자체 환경에서는 요청 처리 도중 소비한 CPU, 메모리, 네트워킹에 대해서만 비용을 지불합니다.
이 실습에서는 gcloud
명령줄을 사용했습니다. Cloud Run은 Cloud 콘솔을 통해서도 사용할 수 있습니다.
-
탐색 메뉴의 서버리스 섹션에서 Cloud Run을 클릭하면 목록에 있는
helloworld
서비스가 표시됩니다.
작업 5. 삭제
Cloud Run에서는 서비스를 사용하지 않을 때 비용이 청구되지 않지만 빌드된 컨테이너 이미지를 저장하는 데 요금이 부과될 수 있습니다.
- Google Cloud 프로젝트를 삭제하여 비용 발생을 피하거나(해당 프로젝트 내에서 사용된 모든 리소스에 대한 청구가 중단됨) 간단하게 다음 명령어를 사용하여
helloworld
이미지를 삭제할 수 있습니다.
-
메시지가 표시되면
Y
를 입력하고 Enter 키를 누릅니다. -
Cloud Run 서비스를 삭제하려면 다음 명령어를 사용합니다.
- 메시지가 표시되면
Y
를 입력하고 Enter 키를 누릅니다.
실습 종료하기
실습을 완료하면 실습 종료를 클릭합니다. Google Cloud Skills Boost에서 사용된 리소스를 자동으로 삭제하고 계정을 지웁니다.
실습 경험을 평가할 수 있습니다. 해당하는 별표 수를 선택하고 의견을 입력한 후 제출을 클릭합니다.
별점의 의미는 다음과 같습니다.
- 별표 1개 = 매우 불만족
- 별표 2개 = 불만족
- 별표 3개 = 중간
- 별표 4개 = 만족
- 별표 5개 = 매우 만족
의견을 제공하고 싶지 않다면 대화상자를 닫으면 됩니다.
의견이나 제안 또는 수정할 사항이 있다면 지원 탭을 사용하세요.
수고하셨습니다
실습을 완료했습니다.
다음 단계/더 학습하기
코드 소스에서 Cloud Run에 적합한 스테이트리스(Stateless) HTTP 컨테이너를 빌드하여 Artifact Registry로 푸시하는 자세한 방법은 다음을 참조하세요.
Copyright 2020 Google LLC All rights reserved. Google 및 Google 로고는 Google LLC의 상표입니다. 기타 모든 회사명 및 제품명은 해당 업체의 상표일 수 있습니다.