관리형 Airflow (3세대) | 관리형 Airflow (2세대) | 관리형 Airflow (기존 1세대)
이 페이지는 환경 만들기에 대한 기본 페이지와 함께 제공됩니다. Terraform을 사용하여 기존 Google Cloud 프로젝트에서 관리형 Airflow 환경 및 이 환경의 사용자 관리형 서비스 계정 을 설정하는 방법을 보여줍니다. 이 페이지를 처음에 사용한 다음 필요에 따라 환경의 구성 매개변수를 더 추가할 수 있습니다.
관리형 Airflow용 Terraform 모듈 정보
Google은 Terraform 프로바이더를 유지관리하며 Google Cloud, 여기에는 google_composer_environment 리소스가 포함됩니다. 이는 Terraform용으로 공식적으로 지원되는 모듈입니다.
오픈소스 커뮤니티에서 유지관리하는 다른 Terraform 모듈도 있습니다. 이러한 모듈과 관련된 문제를 해결하려면 GitHub의 저장소에서 문제를 만드세요. GitHub에서 유지관리되는 오픈소스 프로젝트의 한 예는 terraform-google-composer 모듈입니다. 이 모듈은 Terraform 청사진 및 모듈의 일부입니다 Google Cloud. Google은 이 프로젝트에 기여하지만 모듈은 Google에서 유지관리하지 않으며 Terraform 제공업체와 관련이 없습니다. Google Cloud
시작하기 전에
이 가이드에서는 결제가 구성된 프로젝트가 있다고 가정합니다. Google Cloud
- 기존 프로젝트를 사용할 수 있습니다.
- 콘솔, Google Cloud CLI, API, Python 클라이언트 라이브러리를 사용하여 새 프로젝트를 만들 수 있습니다. Google Cloud
- Terraform을 사용하여 프로젝트를 만들고 관리할 수 있습니다. 자세한 내용은
google_project리소스에 대한 Terraform 문서를 참조하세요.
로 인증 Google Cloud
로 인증하려면 다음을 실행합니다. Google Cloud
gcloud auth application-default login
이 명령어에 대한 자세한 내용은
gcloud auth application-default 항목을 참조하세요.
Terraform에서 Google 제공업체 구성
기존 프로젝트 ID 와 리소스의 기본 리전을 지정합니다. 관리형 Airflow 환경은 이 리전을 사용합니다.
google-beta 제공업체는 미리보기에 있는 관리형 Airflow 기능을 지원합니다. Managed Airflow의 정식 버전 기능만 사용하려면 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
}
프로젝트에서 환경의 서비스 계정 만들기
이 가이드에서는 관리형 Airflow 환경을 실행하는 데 필요한 모든 권한이 있는 환경의 서비스 계정을 만드는 방법을 보여줍니다.
이 가이드에 설명된 대로 사용자 관리형 서비스 계정 을 설정하는 것이 좋습니다. 이 계정은 관리형 Airflow 환경에 대해 DAG에서 환경 및 작업을 실행하는 데 필요한 권한만 있습니다.
환경의 서비스 계정에는 프로젝트의 다른 리소스에 액세스할 수 있는 추가 권한이 필요할 수 있습니다. 예를 들어 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"
}
관리형 Airflow 서비스 계정에 필요한 권한 부여
환경 서비스 계정 허용 정책에 새 역할 바인딩을 추가합니다.
관리형 Airflow 서비스 에이전트 계정을 환경 서비스 계정의 새 보안 주체로 추가하고 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.17.0-airflow-2.11.1"
}
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.17.0-airflow-2.11.1"
}
node_config {
service_account = google_service_account.custom_service_account.email
}
}
}
다음 단계
Terraform을 사용한 환경 구성에 대한 자세한 내용은 다른 문서 페이지를 참조하세요. 예를 들면 다음과 같습니다.