1. 소개
개요
Cloud Run Functions는 친숙한 GCF 이벤트 패러다임과 함수 서명을 사용하여 워크로드를 배포하는 새로운 방법입니다. Cloud Run Functions를 사용하면 Google의 의견이 반영된 빌드 프로세스 및 배포 구성을 사용하는 대신 Cloud Run에서 생성된 기본 서비스를 직접 제어할 수 있습니다.
Cloud Run Functions는 Cloud Run 소스 배포의 간단한 UX를 제공하여 개발자가 Cloud Run 구성을 사용하여 워크로드를 완벽하게 제어할 수 있도록 지원합니다.
이 Codelab에서는 아래 예의 nodejs 샘플을 사용합니다. 하지만 원하는 언어로 Cloud Functions 2세대 코드 샘플을 사용할 수 있습니다.
학습할 내용
- HTTP 요청에 의해 트리거되는 Cloud Run 함수를 배포하는 방법
2. 환경 변수 설정 및 API 사용 설정
gcloud CLI 업그레이드
먼저 최신 버전의 gcloud CLI가 설치되어 있어야 합니다. 다음 명령어를 실행하여 CLI를 업데이트할 수 있습니다.
gcloud components update
환경 변수 설정
이 Codelab 전체에서 사용할 환경 변수를 설정할 수 있습니다.
PROJECT_ID=<YOUR_PROJECT_ID> REGION=<YOUR_REGION, e.g. us-central1> gcloud config set project $PROJECT_ID SERVICE_NAME=crf-http-codelab
API 사용 설정
이 Codelab을 시작하기 전에 사용 설정해야 하는 API가 몇 가지 있습니다. 이 Codelab에서는 다음 API를 사용해야 합니다. 다음 명령어를 실행하여 이러한 API를 사용 설정할 수 있습니다.
gcloud services enable run.googleapis.com \
cloudbuild.googleapis.com \
storage.googleapis.com \
artifactregistry.googleapis.com
3. HTTP 함수 만들기
먼저 소스 코드 디렉터리를 만들고 해당 디렉터리로 cd합니다.
mkdir -p cloud-run-functions/$SERVICE_NAME && cd $_
그런 다음 다음 콘텐츠로 package.json 파일을 만듭니다.
{
"dependencies": {
"@google-cloud/functions-framework": "^3.0.0"
}
}
그런 다음 다음 콘텐츠로 index.js 파일을 만듭니다.
const functions = require("@google-cloud/functions-framework");
functions.http("helloHttp", (req, res) => {
res.send(`Hello ${req.query.name || req.body.name || "World"}!`);
});
4. 함수 배포하기
이제 다음 명령어를 실행하여 Cloud Run 함수를 배포할 수 있습니다.
gcloud beta run deploy $SERVICE_NAME \
--source . \
--function helloHttp \
--region us-central1 \
--no-allow-unauthenticated
이 명령어는 빌드팩을 사용하여 함수 소스 코드를 프로덕션에 즉시 사용 가능한 컨테이너 이미지로 변환합니다.
다음 사항을 참고하세요.
- --source 플래그는 Cloud Run에 함수를 실행 가능한 컨테이너 기반 서비스로 빌드하도록 지시하는 데 사용됩니다.
- –function 플래그 (신규)는 호출할 함수 서명이 되도록 새 서비스의 진입점을 설정하는 데 사용됩니다.
- (선택사항) 함수가 공개적으로 호출되지 않도록 하려면 –no-allow-unauthenticated를 사용합니다.
5. 함수 테스트
배포가 완료되면 서비스 URL이 표시됩니다. 함수를 호출하려면 아래와 같이 ID 토큰 또는 Cloud Run 호출자 역할이 있는 주 구성원의 ID 토큰으로 인증된 요청을 전송해야 합니다.
# get the Service URL SERVICE_URL="$(gcloud run services describe $SERVICE_NAME --region us-central1 --format 'value(status.url)')" # invoke the service curl -H "Authorization: bearer $(gcloud auth print-identity-token)" -X GET $SERVICE_URL
6. 축하합니다.
축하합니다. Codelab을 완료했습니다.
Cloud Run Functions에 관한 문서를 검토하는 것이 좋습니다.
학습한 내용
- HTTP 요청에 의해 트리거되는 Cloud Run 함수를 배포하는 방법
7. 삭제
의도치 않은 요금이 청구되지 않도록 하려면(예: Cloud Run 서비스가 무료 등급의 월별 Cloud Run 호출 할당량보다 더 많이 호출되는 경우) Cloud Run을 삭제하거나 2단계에서 만든 프로젝트를 삭제하면 됩니다.
Cloud Run 함수를 삭제하려면 https://console.cloud.google.com/run에서 Cloud Run Cloud Console로 이동하여 crf-http-codelab 서비스를 삭제합니다.
전체 프로젝트를 삭제하려면 https://console.cloud.google.com/cloud-resource-manager로 이동하여 2단계에서 만든 프로젝트를 선택하고 삭제를 선택합니다. 프로젝트를 삭제하면 Cloud SDK에서 프로젝트를 변경해야 합니다. gcloud projects list를 실행하여 사용 가능한 모든 프로젝트의 목록을 볼 수 있습니다.