이 튜토리얼에서는 Cloud Storage 버킷에 함수 소스 코드 zip 파일을 업로드하고 리소스 프로비저닝을 위해 Terraform을 사용해서 Pub/Sub 함수를 배포하는 방법을 보여줍니다. Terraform은 선언적 구성 파일로 Google Cloud 리소스를 프로비저닝할 수 있는 오픈소스 도구입니다.
이 튜토리얼에서는 Node.js 함수가 예시로 사용되지만 Python, Go, 자바 함수도 작동합니다. 이 안내는 사용 중인 런타임 종류와 관계없이 동일합니다. Cloud Functions v2 API에서 Terraform을 사용하는 방법에 관한 자세한 내용은 Hashicorp의 참조 페이지를 참조하세요.
목표
- Terraform을 사용하여 Pub/Sub 함수를 배포하는 방법을 알아봅니다.
비용
이 문서에서는 비용이 청구될 수 있는 Google Cloud구성요소( )를 사용합니다.
For details, see Cloud Run functions pricing.
프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용합니다.
시작하기 전에
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions, Cloud Build, Artifact Registry, and Cloud Storage APIs.
-
Install the Google Cloud CLI.
-
외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.
-
gcloud CLI를 초기화하려면, 다음 명령어를 실행합니다.
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Functions, Cloud Build, Artifact Registry, and Cloud Storage APIs.
-
Install the Google Cloud CLI.
-
외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.
-
gcloud CLI를 초기화하려면, 다음 명령어를 실행합니다.
gcloud init
- 기본 컴퓨팅 서비스 계정에
roles/run.invoker
및roles/cloudbuild.builds.builder
를 부여합니다. -
개발 환경을 준비합니다.
샘플 앱 저장소를 Cloud Shell 인스턴스에 클론합니다.
git clone https://github.com/terraform-google-modules/terraform-docs-samples.git
Cloud Run Functions 샘플 코드가 포함된 디렉터리로 변경합니다.
cd terraform-docs-samples/functions/pubsub
이 튜토리얼에서 사용된 Node.js 샘플은 기본 'Hello World' Pub/Sub 함수입니다.
main.tf
파일은 다음과 같습니다.주제에 메시지를 게시합니다(이 예시에서는 주제 이름이
functions2-topic
임).gcloud pubsub topics publish TOPIC_NAME --message="Friend"
함수 로그를 읽어 결과를 확인합니다. 여기서
FUNCTION_NAME
은 함수의 이름입니다(이 예시에서는 함수 이름이function
임).gcloud functions logs read FUNCTION_NAME
새 '친구' 메시지가 포함된 로깅 출력을 볼 수 있습니다.
gcloud CLI가 이미 설치되어 있으면 다음 명령어를 실행하여 업데이트합니다.
gcloud components update
환경 설정
이 튜토리얼에서는 Cloud Shell에서 명령어를 실행합니다. Cloud Shell은 Google Cloud CLI가 포함되고 Google Cloud CLI가 사전 설치된 셸 환경으로, 현재 프로젝트의 값이 이미 설정되어 있습니다. Cloud Shell은 초기화하는 데 몇 분 정도 걸릴 수 있습니다.
애플리케이션 준비
Cloud Shell에서 다음 단계를 수행하세요.
Terraform 초기화
main.tf
파일이 포함된 terraform-docs-samples/functions/pubsub
디렉터리에서 이 명령어를 실행하여 필요한 플러그인을 추가하고 .terraform
디렉터리를 빌드합니다.
terraform init
Terraform 구성 검증
Terraform 구성을 미리봅니다. 이 단계는 선택사항이지만 main.tf
문법이 올바른지 확인할 수 있습니다. 이 명령어는 생성할 리소스의 미리보기를 보여줍니다.
terraform plan
Terraform 구성 적용
구성을 적용하여 함수를 배포합니다. 메시지가 표시되면 yes
를 입력합니다.
terraform apply
함수 트리거
Pub/Sub 함수를 테스트하려면 다음 안내를 따르세요.
삭제
이 튜토리얼을 완료한 후 추가 비용이 발생하지 않도록 생성된 모든 리소스를 삭제할 수 있습니다.
Terraform에서는 terraform destroy
명령어를 실행하여 구성 파일에 정의된 모든 리소스를 삭제할 수 있습니다.
terraform destroy
Terraform에서 리소스를 삭제할 수 있도록 yes
를 입력합니다.