Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
Esta página es complementaria a la página principal sobre cómo crear entornos. En ella, se muestra cómo configurar un entorno de Cloud Composer y una cuenta de servicio administrada por el usuario para este entorno en un proyecto Google Cloud existente con Terraform. Puedes usar esta página como punto de partida y, luego, agregar más 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 Google Cloud con la facturación configurada:
- Puedes usar un proyecto existente.
- Puedes crear un proyecto nuevo con la consola de Google Cloud, Google Cloud CLI, la API o una biblioteca cliente de Python.
- Puedes crear y administrar tu proyecto con Terraform. Para obtener más información, consulta la documentación de Terraform para el recurso
google_project
.
Autentícate con Google Cloud
Para autenticarte con Google Cloud, ejecuta lo siguiente:
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 de 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 la cuenta de servicio de un entorno en tu proyecto
En esta guía, se muestra cómo crear la cuenta de servicio de un entorno que tenga todos los permisos necesarios para ejecutar un entorno de Cloud Composer.
Te recomendamos que configures una cuenta de servicio administrada por el usuario para tus entornos de Cloud Composer que solo tenga los permisos necesarios para ejecutar tu entorno y las operaciones en tus DAG, como se describe en esta guía.
Si bien no recomendamos usar este enfoque, si no especificas la cuenta de servicio de un entorno, este usará la cuenta de servicio predeterminada de Compute Engine.
Es posible que la cuenta de servicio de tu entorno necesite permisos adicionales para acceder a otros recursos de tu proyecto. Por ejemplo, si tus DAGs transfieren datos a BigQuery, es posible que esta cuenta necesite permisos o roles específicos de BigQuery.
Define una cuenta de servicio personalizada con los siguientes roles y permisos:
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 roles a la política de permisos de la cuenta de servicio de tu entorno.
Agregas la cuenta del agente de servicio de Cloud Composer como un principal nuevo en la cuenta de servicio de tu entorno y le otorgas el rol de Extensión del agente de servicio de la API de Cloud Composer v2.
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 métodos.
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 usa una cuenta de servicio personalizada. Puedes agregar más parámetros que definan otros parámetros de configuración de tu entorno, como parámetros de escala y rendimiento personalizados, 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.11.1-airflow-2.10.2"
}
node_config {
service_account = google_service_account.custom_service_account.email
}
}
}
Secuencia de comandos de Terraform completa
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.11.1-airflow-2.10.2"
}
node_config {
service_account = google_service_account.custom_service_account.email
}
}
}
¿Qué sigue?
Consulta otras páginas de la documentación para obtener información sobre cómo configurar tu ambiente con Terraform. Por ejemplo:
- Crea entornos
- Anula las opciones de configuración de Airflow
- Configure las variables de entorno
- Instala las dependencias de Python
- Escalar entornos