Cloud Run 시작 튜토리얼

1. 개요

Cloud Run은 HTTP 요청을 통해 호출 가능한 스테이트리스(Stateless) 컨테이너를 실행하는 완전 관리형 서버리스 플랫폼입니다. Cloud Run은 서버리스이므로 인프라 관리가 필요 없습니다. 따라서 개발자가 본연의 업무인 애플리케이션 개발에 집중할 수 있습니다.

Knative를 기반으로 빌드되므로 컨테이너를 Cloud Run으로 완전 관리형으로 실행하거나 GKE의 Cloud Run을 통해 Google Kubernetes Engine 클러스터에서 실행할 수 있습니다.

학습할 내용

이 실습에서는 다음 작업을 진행하는 방법을 학습합니다.

  • Cloud Run 애플리케이션 배포

기본 요건

  • 이 실습에서는 Cloud 콘솔 및 Cloud Shell 환경에 익숙하다고 가정합니다.

2. 설정 및 요구사항

Cloud 프로젝트 설정

  1. Google Cloud Console에 로그인하여 새 프로젝트를 만들거나 기존 프로젝트를 재사용합니다. 아직 Gmail이나 Google Workspace 계정이 없는 경우 계정을 만들어야 합니다.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • 프로젝트 이름은 이 프로젝트 참가자의 표시 이름입니다. 이는 Google API에서 사용하지 않는 문자열이며 언제든지 업데이트할 수 있습니다.
  • 프로젝트 ID는 모든 Google Cloud 프로젝트에서 고유하며, 변경할 수 없습니다(설정된 후에는 변경할 수 없음). Cloud 콘솔이 고유한 문자열을 자동으로 생성합니다. 보통은 그게 뭔지 상관하지 않습니다. 대부분의 Codelab에서는 프로젝트 ID (일반적으로 PROJECT_ID로 식별됨)를 참조해야 합니다. 생성된 ID가 마음에 들지 않으면 무작위로 다른 ID를 생성할 수 있습니다. 또는 직접 시도해 보고 사용 가능한지 확인할 수도 있습니다. 이 단계 이후에는 변경할 수 없으며 프로젝트 기간 동안 유지됩니다.
  • 참고로 세 번째 값은 일부 API에서 사용하는 프로젝트 번호입니다. 이 세 가지 값에 대한 자세한 내용은 문서를 참고하세요.
  1. 다음으로 Cloud 리소스/API를 사용하려면 Cloud 콘솔에서 결제를 사용 설정해야 합니다. 이 Codelab 실행에는 많은 비용이 들지 않습니다. 이 튜토리얼이 끝난 후에 요금이 청구되지 않도록 리소스를 종료하려면 만든 리소스를 삭제하거나 전체 프로젝트를 삭제하면 됩니다. Google Cloud 새 사용자에게는 미화 $300 상당의 무료 체험판 프로그램에 참여할 수 있는 자격이 부여됩니다.

환경 설정

검색창 오른쪽에 있는 아이콘을 클릭하여 Cloud Shell을 활성화합니다.

ecdc43ada29e91b.png

Cloud Shell에서 Cloud Run API를 사용 설정합니다.

gcloud services enable run.googleapis.com

승인하라는 메시지가 표시되면 '승인'을 클릭합니다. 계속하려면

6356559df3eccdda.png

그러면 다음과 비슷한 성공 메시지가 표시될 것입니다.

Operation "operations/acf.p2-327036483151-73d90d00-47ee-447a-b600-a6badf0eceae" finished successfully.

3. 애플리케이션 준비

먼저 HTTP 요청에 응답하는 간단한 익스프레스 기반 Node.js 애플리케이션을 준비합니다.

Cloud Shell에서 starter-nodejs라는 새 디렉터리를 만든 후 해당 디렉터리로 변경합니다.

mkdir starter-nodejs
cd starter-nodejs

아래 명령어를 실행하여 package.json 파일을 만듭니다.

cat > ./package.json << EOF
{
  "name": "cloudrun-starter-app",
  "version": "1.0.0",
  "description": "Node.js Starter Application",
  "main": "index.js",
  "scripts": {
    "start": "node index.js"
  },
  "author": "",
  "license": "Apache-2.0",
  "dependencies": {
    "express": "^4.18.2"
  }
}
EOF

위 파일에는 Express 웹 애플리케이션 프레임워크에 대한 종속 항목과 시작 스크립트 명령이 포함되어 있습니다.

다음으로 동일한 디렉터리에서 아래 명령어를 실행하여 index.js 파일을 만듭니다.

cat > ./index.js << EOF
const express = require('express');
const app = express();

app.get('/', (req, res) => {
  console.log('Received a request.');
  res.send("Hello Cloud Run!");
});

const port = process.env.PORT || 8080;

app.listen(port, () => {
  console.log('Listening on port', port);
});
EOF

이 코드는 PORT 환경 변수로 정의한 포트를 리슨하는 기본 웹 서버를 생성합니다. 이제 앱이 완성되었으며 컨테이너화하여 배포할 준비가 되었습니다.

4. Cloud Run 애플리케이션 배포

아래 명령어를 실행하여 애플리케이션을 배포합니다.

gcloud run deploy starter-app \
  --source . \
  --region us-central1 \
  --allow-unauthenticated \
  --max-instances=3

Artifact Registry 저장소가 생성되었는지 확인합니다.

Deploying from source requires an Artifact Registry Docker repository to store built containers. A repository named [cloud-run-source-deploy] in region [us-central1] will be created.

Do you want to continue (Y/n)? y

이전 명령어의 결과로 다음 단계가 실행됩니다.

d661616f9b2fffcf.png

Cloud 콘솔에서 Cloud Build, Cloud Storage, Artifact Registry, Cloud Run의 결과를 살펴보세요.

f536961280192919.png

5. 축하합니다.

축하합니다. 이제 Cloud Run에 애플리케이션을 배포했습니다.

학습한 내용

  • Cloud Run에서 시작 애플리케이션을 배포하는 방법

다음 단계:

다른 Cymbal Eats Codelab 살펴보기:

삭제

이 튜토리얼에서 사용된 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 리소스가 포함된 프로젝트를 삭제하거나 프로젝트를 유지하고 개별 리소스를 삭제하세요.

프로젝트 삭제

비용이 청구되지 않도록 하는 가장 쉬운 방법은 튜토리얼에서 만든 프로젝트를 삭제하는 것입니다.