관리형 Airflow (3세대) | 관리형 Airflow (2세대) | 관리형 Airflow (기존 1세대)
이 페이지는 환경 만들기에 대한 기본 페이지와 함께 제공됩니다. Terraform을 사용하여 기존 Google Cloud 프로젝트에서 관리형 Airflow 환경 및 이 환경의 사용자 관리형 서비스 계정을 설정하는 방법을 보여줍니다. 이 페이지를 처음에 사용한 다음 필요에 따라 환경의 구성 매개변수를 더 추가할 수 있습니다.
관리형 Airflow용 Terraform 모듈 정보
Google은 Google Cloud용 Terraform 프로바이더를 유지관리하며, 여기에는 google_composer_environment 리소스가 포함됩니다. 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와 리소스의 기본 리전을 지정합니다. 관리형 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 환경을 실행하는 데 필요한 모든 권한이 있는 환경의 서비스 계정을 만드는 방법을 보여줍니다.
이 가이드에 설명된 대로 환경 및 DAG의 작업을 실행하는 데 필요한 권한만 있는 관리형 Airflow 환경에 사용자 관리형 서비스 계정을 설정하는 것이 좋습니다.
환경의 서비스 계정에는 프로젝트의 다른 리소스에 액세스할 수 있는 추가 권한이 필요할 수 있습니다. 예를 들어 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"
}
환경 만들기
Terraform을 사용하여 환경을 만듭니다.
이 예시에서는 커스텀 서비스 계정을 사용하는 환경을 만드는 방법을 보여줍니다. 환경의 다른 구성 매개변수를 정의하는 매개변수(예: 커스텀 확장 및 성능 매개변수)나 추가 PyPI 패키지를 더 추가할 수 있습니다.
다른 매개변수에 대한 자세한 내용은 환경 만들기를 참조하세요.
resource "google_composer_environment" "example_environment" {
provider = google-beta
name = "example-environment"
config {
software_config {
image_version = "composer-3-airflow-2.11.1-build.3"
}
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_composer_environment" "example_environment" {
provider = google-beta
name = "example-environment"
config {
software_config {
image_version = "composer-3-airflow-2.11.1-build.3"
}
node_config {
service_account = google_service_account.custom_service_account.email
}
}
}
다음 단계
Terraform을 사용한 환경 구성에 대한 자세한 내용은 다른 문서 페이지를 참조하세요. 예를 들면 다음과 같습니다.