Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
Esta página es un complemento de la página principal sobre crear entornos. Demuestra cómo configurar un Entorno de Cloud Composer y cuenta de servicio administrada por el usuario para este entorno en un proyecto existente de Google Cloud con Terraform Puedes usar esta página para comenzar y, luego, agregar otras parámetros de configuración para tu entorno, según sea necesario.
Antes de comenzar
En esta guía, se supone que tienes un proyecto de Google Cloud con facturación configurada:
- Puedes usar un proyecto existente.
- Puedes crear un proyecto nuevo. con la consola de Google Cloud, Google Cloud CLI, una API o una biblioteca cliente de Python.
- Puedes crear y administrar tu proyecto con Terraform. Para ver más
consulta la documentación de Terraform para obtener
Recurso
google_project
.
Autentica con Google Cloud
Para autenticar con Google Cloud, ejecuta el siguiente comando:
gcloud auth application-default login
Para obtener más información sobre este comando, consulta gcloud auth application-default
.
Configura el proveedor de Google en Terraform
Especifica tu ID del proyecto existente. y una región predeterminada para los recursos. Tu entorno de Cloud Composer usa esta región.
provider "google-beta" {
project = "example-project"
region = "us-central1"
}
Habilita la API de Cloud Composer
Habilita la API de Cloud Composer en tu proyecto:
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
}
Crea una cuenta de servicio personalizada en tu proyecto
De forma predeterminada, los entornos de Cloud Composer usan de Compute Engine. En esta guía, se muestra otro enfoque, ya que crear una nueva cuenta de servicio que tenga todos los permisos necesarios para ejecutar un entorno de Cloud Composer.
Define una cuenta de servicio personalizada con los siguientes roles y permisos. Para Más información sobre los permisos para las cuentas de servicio del entorno, consulta Control de acceso con la IAM.
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"
}
Otorga los permisos necesarios a la cuenta de servicio de Cloud Composer
Agrega una nueva vinculación de rol a la cuenta de servicio de tu entorno política de permiso.
Agrega una cuenta de agente de servicio de Cloud Composer como una principal nueva en la cuenta de servicio de tu entorno y otorga la API de Cloud Composer v2 extensión de agente de servicio.
Si no usas Terraform para definir la política de entidades permitidas de tu proyecto, no uses el siguiente ejemplo. En su lugar, agrega esta vinculación con otros .
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"
}
Crear un entorno
Crea tu entorno con Terraform.
En el ejemplo, se muestra cómo crear un entorno que use una red cuenta de servicio. Puedes agregar más parámetros que definan otros parámetros de parámetros del entorno, como la escala personalizada y el rendimiento parámetros o paquetes de PyPI adicionales.
Para obtener más información sobre otros parámetros, consulta Crea entornos.
resource "google_composer_environment" "example_environment" {
provider = google-beta
name = "example-environment"
config {
software_config {
image_version = "composer-2.9.3-airflow-2.9.1"
}
node_config {
service_account = google_service_account.custom_service_account.email
}
}
}
Secuencia de comandos de Terraform completa (parámetros predeterminados)
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_project_iam_member" "service_agent_role" {
provider = google-beta
project = "example-project"
member = "serviceAccount:service-PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com"
role = "roles/composer.ServiceAgentV2Ext"
}
resource "google_composer_environment" "example_environment" {
provider = google-beta
name = "example-environment"
config {
// Add your environment configuration here
software_config {
image_version = "composer-2.9.3-airflow-2.9.1"
}
}
}
Secuencia de comandos de Terraform completa (cuenta de servicio personalizada)
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.9.3-airflow-2.9.1"
}
node_config {
service_account = google_service_account.custom_service_account.email
}
}
}
¿Qué sigue?
Consulta otras páginas de documentación para obtener información sobre la configuración de tu entorno con Terraform. Por ejemplo:
- Crea entornos
- Anula las opciones de configuración de Airflow
- Configure las variables de entorno
- Instala dependencias de Python
- Escalar entornos