Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
이 페이지는 환경 만들기에 대한 기본 페이지와 함께 제공됩니다. Terraform을 사용하여 기존 Google Cloud 프로젝트에서 Cloud Composer 환경 및 이 환경의 사용자 관리형 서비스 계정을 설정하는 방법을 보여줍니다. 이 페이지를 처음에 사용한 다음 필요에 따라 환경의 구성 매개변수를 더 추가할 수 있습니다.
Cloud Composer용 Terraform 모듈 정보
Google은 google_composer_environment 리소스를 포함하는 Google Cloud용 Terraform 제공업체를 유지관리합니다. Terraform용으로 공식적으로 지원되는 모듈입니다.
오픈소스 커뮤니티에서 유지관리하는 다른 Terraform 모듈도 있습니다. 이러한 모듈의 문제를 해결하려면 GitHub의 저장소에서 문제를 만들면 됩니다. GitHub에서 유지관리되는 오픈소스 프로젝트의 한 예는 Google Cloud용 Terraform 블루프린트 및 모듈의 일부인 terraform-google-composer 모듈입니다. Google은 이 프로젝트에 기여하지만 이 모듈은 Google에서 유지관리하지 않으며 Google Cloud용 Terraform 제공자와 관련이 없습니다.
시작하기 전에
이 가이드에서는 결제가 구성된 Google Cloud 프로젝트가 있다고 가정합니다.
- 기존 프로젝트를 사용할 수 있습니다.
- Google Cloud 콘솔, Google Cloud CLI, API, Python 클라이언트 라이브러리를 사용하여 새 프로젝트를 만들 수 있습니다.
- Terraform을 사용하여 프로젝트를 만들고 관리할 수 있습니다. 자세한 내용은
google_project
리소스에 대한 Terraform 문서를 참조하세요.
gcloud CLI를 설치합니다.
Google Cloud로 인증
Google Cloud로 인증하려면 다음을 실행합니다.
gcloud auth application-default login
이 명령어에 대한 자세한 내용은 gcloud auth application-default
항목을 참조하세요.
Terraform에서 Google 제공업체 구성
기존 프로젝트 ID와 리소스의 기본 리전을 지정합니다. Cloud Composer 환경은 이 리전을 사용합니다.
google-beta
제공업체는 미리보기에 있는 Cloud Composer 기능을 지원합니다. Cloud Composer의 GA 기능만 사용하려면 google-beta
대신 google
제공업체를 사용합니다.
provider "google-beta" {
project = "example-project"
region = "us-central1"
}
Cloud Composer API 사용 설정
프로젝트에서 Cloud Composer API를 사용 설정합니다.
resource "google_project_service" "composer_api" {
provider = google-beta
project = "example-project"
service = "composer.googleapis.com"
// Disabling Cloud Composer API might irreversibly break all other
// environments in your project.
// This parameter prevents automatic disabling
// of the API when the resource is destroyed.
// We recommend to disable the API only after all environments are deleted.
disable_on_destroy = false
// this flag is introduced in 5.39.0 version of Terraform. If set to true it will
//prevent you from disabling composer_api through Terraform if any environment was
//there in the last 30 days
check_if_service_has_usage_on_destroy = true
}
프로젝트에서 환경의 서비스 계정 만들기
이 가이드에서는 Cloud Composer 환경을 실행하는 데 필요한 모든 권한이 있는 환경의 서비스 계정을 만드는 방법을 보여줍니다.
이 가이드에 설명된 대로 DAG에서 환경과 작업을 실행하는 데 필요한 권한만 있는 Cloud Composer 환경에 사용자 관리형 서비스 계정을 설정하는 것이 좋습니다.
이 방법을 사용하지 않는 것이 좋지만 환경의 서비스 계정을 지정하지 않으면 Cloud Composer 환경에서 기본 Compute Engine 서비스 계정을 사용합니다.
환경의 서비스 계정에는 프로젝트의 다른 리소스에 액세스할 수 있는 추가 권한이 필요할 수 있습니다. 예를 들어 DAG가 BigQuery로 데이터를 전송하는 경우 이 계정에는 BigQuery와 관련된 권한이나 역할이 필요할 수 있습니다.
다음 역할 및 권한으로 커스텀 서비스 계정을 정의합니다.
resource "google_service_account" "custom_service_account" {
provider = google-beta
account_id = "custom-service-account"
display_name = "Example Custom Service Account"
}
resource "google_project_iam_member" "custom_service_account" {
provider = google-beta
project = "example-project"
member = format("serviceAccount:%s", google_service_account.custom_service_account.email)
// Role for Public IP environments
role = "roles/composer.worker"
}
Cloud Composer 서비스 계정에 필요한 권한 부여
환경 서비스 계정 허용 정책에 새 역할 바인딩을 추가합니다.
Cloud Composer 서비스 에이전트 계정을 환경 서비스 계정의 새 주 구성원으로 추가하고 Cloud Composer v2 API 서비스 에이전트 확장 역할을 부여합니다.
Terraform을 사용하여 프로젝트의 허용 정책을 정의하지 않는 경우 다음 예시를 사용하지 마세요. 대신 다른 메서드를 사용하여 이 바인딩을 추가합니다.
resource "google_service_account_iam_member" "custom_service_account" {
provider = google-beta
service_account_id = google_service_account.custom_service_account.name
role = "roles/composer.ServiceAgentV2Ext"
member = "serviceAccount:service-PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com"
}
환경 만들기
Terraform을 사용하여 환경을 만듭니다.
이 예시에서는 커스텀 서비스 계정을 사용하는 환경을 만드는 방법을 보여줍니다. 환경의 다른 구성 매개변수를 정의하는 매개변수(예: 커스텀 확장 및 성능 매개변수)나 추가 PyPI 패키지를 더 추가할 수 있습니다.
다른 매개변수에 대한 자세한 내용은 환경 만들기를 참조하세요.
resource "google_composer_environment" "example_environment" {
provider = google-beta
name = "example-environment"
config {
software_config {
image_version = "composer-2.14.0-airflow-2.10.5"
}
node_config {
service_account = google_service_account.custom_service_account.email
}
}
}
전체 Terraform 스크립트
provider "google-beta" {
project = "example-project"
region = "us-central1"
}
resource "google_project_service" "composer_api" {
provider = google-beta
project = "example-project"
service = "composer.googleapis.com"
// Disabling Cloud Composer API might irreversibly break all other
// environments in your project.
disable_on_destroy = false
// this flag is introduced in 5.39.0 version of Terraform. If set to true it will
//prevent you from disabling composer_api through Terraform if any environment was
//there in the last 30 days
check_if_service_has_usage_on_destroy = true
}
resource "google_service_account" "custom_service_account" {
provider = google-beta
account_id = "custom-service-account"
display_name = "Example Custom Service Account"
}
resource "google_project_iam_member" "custom_service_account" {
provider = google-beta
project = "example-project"
member = format("serviceAccount:%s", google_service_account.custom_service_account.email)
// Role for Public IP environments
role = "roles/composer.worker"
}
resource "google_service_account_iam_member" "custom_service_account" {
provider = google-beta
service_account_id = google_service_account.custom_service_account.name
role = "roles/composer.ServiceAgentV2Ext"
member = "serviceAccount:service-PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com"
}
resource "google_composer_environment" "example_environment" {
provider = google-beta
name = "example-environment"
config {
software_config {
image_version = "composer-2.14.0-airflow-2.10.5"
}
node_config {
service_account = google_service_account.custom_service_account.email
}
}
}
다음 단계
Terraform을 사용한 환경 구성에 대한 자세한 내용은 다른 문서 페이지를 참조하세요. 예를 들면 다음과 같습니다.