Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
Esta página complementa la página principal sobre cómo crear entornos. En él se muestra cómo configurar un entorno de Cloud Composer y una cuenta de servicio gestionada por el usuario para este entorno en un proyecto de Google Cloud con Terraform. Puede usar esta página como punto de partida y, después, añadir más parámetros de configuración para su entorno según sea necesario.
Acerca de los módulos de Terraform para Cloud Composer
Google mantiene el proveedor de Terraform para Google Cloud, que incluye el recurso google_composer_environment. Este es el módulo compatible oficialmente con Terraform.
Hay otros módulos de Terraform mantenidos por la comunidad de código abierto. Para resolver problemas con estos módulos, puedes crear incidencias en sus repositorios de GitHub. Un ejemplo de proyecto de código abierto mantenido en GitHub es el módulo terraform-google-composer, que forma parte de los planos y módulos de Terraform Google Cloud. Aunque Google contribuye a este proyecto, el módulo no lo mantiene Google y no está relacionado con el proveedor de Terraform para Google Cloud.
Antes de empezar
En esta guía se da por hecho que tienes un Google Cloud proyecto con la facturación configurada:
- Puedes usar un proyecto que ya tengas.
- Puedes crear un proyecto con la Google Cloud consola, la CLI de Google Cloud, la API o una biblioteca de cliente de Python.
- Puedes crear y gestionar tu proyecto con Terraform. Para obtener más información, consulta la documentación de Terraform sobre el recurso
google_project
.
Autenticar con Google Cloud
Para autenticarte 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
.
Configurar el proveedor de Google en Terraform
Especifica el ID de proyecto que ya tienes y una región predeterminada para los recursos. Tu entorno de Cloud Composer usa esta región.
El proveedor google-beta
admite las funciones de Cloud Composer que están en versión preliminar. Si solo quieres usar las funciones de GA de Cloud Composer, usa el proveedor google
en lugar de google-beta
.
provider "google-beta" {
project = "example-project"
region = "us-central1"
}
Habilitar la API de Cloud Composer
Habilita la API 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
}
Crear una cuenta de servicio de un entorno en tu proyecto
En esta guía se muestra cómo crear una cuenta de servicio de un entorno que tenga todos los permisos necesarios para ejecutar un entorno de Cloud Composer.
Te recomendamos encarecidamente que configures una cuenta de servicio gestionada por el usuario para tus entornos de Cloud Composer que solo tenga los permisos necesarios para ejecutar tu entorno y las operaciones de tus DAGs, tal como se describe en esta guía.
Aunque no recomendamos usar este método, si no especificas la cuenta de servicio de un entorno, tu entorno de Cloud Composer 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"
}
Crear entorno
Crea tu entorno con Terraform.
En el ejemplo se muestra cómo crear un entorno que utilice una cuenta de servicio personalizada. Puedes añadir más parámetros que definan otros parámetros de configuración de tu entorno, como parámetros de rendimiento y de escala personalizados, o paquetes PyPI adicionales.
Para obtener más información sobre otros parámetros, consulte Crear entornos.
resource "google_composer_environment" "example_environment" {
provider = google-beta
name = "example-environment"
config {
software_config {
image_version = "composer-1.20.12-airflow-1.10.15"
}
node_config {
service_account = google_service_account.custom_service_account.email
}
}
}
Secuencia de comandos completa de 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-1.20.12-airflow-1.10.15"
}
node_config {
service_account = google_service_account.custom_service_account.email
}
}
}
Siguientes pasos
Consulta otras páginas de documentación para obtener información sobre cómo configurar tu entorno con Terraform. Por ejemplo:
- Crear entornos
- Anular opciones de configuración de Airflow
- Definir variables de entorno
- Instalar dependencias de Python
- Entornos de escalabilidad