Crea entornos de Cloud Composer

Cloud Composer 1 | Cloud Composer 2

En esta página, se explica cómo crear un entorno de Cloud Composer 2.

Un entorno de Cloud Composer es una instalación independiente de Apache Airflow implementada en un clúster administrado de Google Kubernetes Engine. Puedes crear uno o más entornos en un solo proyecto de Google Cloud.

Antes de comenzar

  • Si creas un entorno con Terraform, la cuenta de servicio que usa Terraform debe tener una función con el permiso composer.environments.create habilitado.

    Para obtener más información sobre la cuenta de servicio de Terraform, consulta la Referencia de la configuración del proveedor de Google.

    Si deseas obtener más información sobre el uso de Terraform a fin de crear un entorno de Cloud Composer, consulta la documentación de Terraform.

    Para obtener más información sobre los parámetros adicionales, consulta la Referencia de argumentos de Terraform.

  • IP privada: existen requisitos específicos de red y de intercambio de tráfico para crear un entorno de IP privada. Para obtener más información, consulta Configura IP privadas.

  • VPC compartida: existen requisitos de red específicos para usar la VPC compartida con Cloud Composer. Para obtener más información, consulta Configurar VPC compartidas.

  • VPC SC: Para implementar entornos de Cloud Composer dentro de un perímetro de seguridad, consulta Configuración de VPC SC. Cuando se usan con Cloud Composer, los Controles del servicio de VPC tienen varias limitaciones conocidas.

Paso 1: Configuración básica

En este paso, se crea un entorno de Cloud Composer con parámetros predeterminados en la ubicación especificada.

Consola

  1. En la consola de Google Cloud, ve a la página Crear entorno de Cloud Composer 2.

    Ir a Crear entorno

  2. En el campo Nombre, ingresa un nombre para el entorno.

    El nombre debe comenzar con una letra minúscula seguida por un máximo de 62 letras minúsculas, números o guiones, y no puede terminar con un guion. El nombre del entorno se usa a fin de crear subcomponentes para el entorno, por lo que debes proporcionar un nombre que también sea válido como un nombre de bucket de Cloud Storage. Consulta los Lineamientos para asignación de nombres de bucket a fin de obtener una lista de restricciones.

  3. En la lista desplegable Ubicación, elige una ubicación para tu entorno.

    Una ubicación es la región en la que se encuentra el clúster de GKE del entorno.

  4. En la lista desplegable Versión de la imagen, selecciona una imagen de Cloud Composer con la versión requerida de Airflow.

gcloud

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version IMAGE_VERSION

Reemplaza lo siguiente:

  • ENVIRONMENT_NAME por el nombre del entorno.

    El nombre debe comenzar con una letra minúscula seguida por un máximo de 62 letras minúsculas, números o guiones, y no puede terminar con un guion. El nombre del entorno se usa a fin de crear subcomponentes para el entorno, por lo que debes proporcionar un nombre que también sea válido como un nombre de bucket de Cloud Storage. Consulta los Lineamientos para asignación de nombres de bucket a fin de obtener una lista de restricciones.

  • LOCATION por la región del entorno.

    Una ubicación es la región en la que se encuentra el clúster de GKE del entorno.

  • IMAGE_VERSION por el nombre de la imagen de Cloud Composer.

Ejemplo:

gcloud composer environments create example-environment \
    --location us-central1 \
    --image-version composer-2.5.2-airflow-2.6.3

API

Realiza una solicitud a la API de environments.create. Especifica la configuración en el recurso Environment.

{
  "name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
  "config": {
    "softwareConfig": {
      "imageVersion": "IMAGE_VERSION"
    }
  }
}

Reemplaza lo siguiente:

  • PROJECT_ID por el ID del proyecto.

  • LOCATION por la región del entorno.

    Una ubicación es la región en la que se encuentra el clúster de GKE del entorno.

  • ENVIRONMENT_NAME por el nombre del entorno.

    El nombre debe comenzar con una letra minúscula seguida por un máximo de 62 letras minúsculas, números o guiones, y no puede terminar con un guion. El nombre del entorno se usa a fin de crear subcomponentes para el entorno, por lo que debes proporcionar un nombre que también sea válido como un nombre de bucket de Cloud Storage. Consulta los Lineamientos para asignación de nombres de bucket a fin de obtener una lista de restricciones.

  • IMAGE_VERSION por el nombre de la imagen de Cloud Composer.

Ejemplo:

// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments

{
  "name": "projects/example-project/locations/us-central1/environments/example-environment",
  "config": {
    "softwareConfig": {
      "imageVersion": "composer-2.5.2-airflow-2.6.3"
    }
  }
}

Terraform

Para crear un entorno con parámetros predeterminados que especifica una ubicación, agrega el siguiente conjunto de recursos a la configuración de Terraform y ejecuta terraform apply.

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {
    software_config {
      image_version = "IMAGE_VERSION"
    }
  }
}

Reemplaza lo siguiente:

  • ENVIRONMENT_NAME por el nombre del entorno.

    El nombre debe comenzar con una letra minúscula seguida por un máximo de 62 letras minúsculas, números o guiones, y no puede terminar con un guion. El nombre del entorno se usa a fin de crear subcomponentes para el entorno, por lo que debes proporcionar un nombre que también sea válido como un nombre de bucket de Cloud Storage. Consulta los Lineamientos para asignación de nombres de bucket a fin de obtener una lista de restricciones.

  • LOCATION por la región del entorno.

    Una ubicación es la región en la que se encuentra el clúster de GKE del entorno.

  • IMAGE_VERSION por el nombre de la imagen de Cloud Composer.

Ejemplo:

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {
    software_config {
      image_version = "composer-2.5.2-airflow-2.6.3"
    }
  }
}

Paso 2: Selecciona una cuenta de servicio para tu entorno (opcional)

Cloud Composer vincula esta cuenta de servicio a la cuenta de servicio de Kubernetes de tu entorno. Los nodos del clúster de tu entorno se ejecutan como la cuenta de servicio de Kubernetes y usan las vinculaciones para acceder a los recursos de tu proyecto de Google Cloud, como los archivos de definición de DAG en el bucket de tu entorno.

De forma predeterminada, los entornos de Cloud Composer usan la cuenta de servicio predeterminada de Compute Engine. Te recomendamos configurar una cuenta de servicio administrada por el usuario para los entornos de Cloud Composer.

Luego, no puedes cambiar la cuenta de servicio de tu entorno.

Consola

En la página Crear entorno, en la lista desplegable Cuenta de servicio, selecciona una cuenta de servicio para tu entorno.

gcloud

Cuando creas un entorno, --service-account especifica la cuenta de servicio del entorno.

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-2.5.2-airflow-2.6.3 \
    --service-account "SERVICE_ACCOUNT"

Reemplaza lo siguiente:

  • SERVICE_ACCOUNT por la cuenta de servicio de tu entorno.

Ejemplo:

gcloud composer environments create example-environment \
    --location us-central1 \
    --image-version composer-2.5.2-airflow-2.6.3 \
    --service-account "example-account@example-project.iam.gserviceaccount.com"

API

Cuando creas un entorno, en el recurso Entorno > EnvironmentConfig, especifica una cuenta de servicio para el entorno.

{
  "name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
  "config": {
    "nodeConfig": {
      "serviceAccount": "SERVICE_ACCOUNT"
    }
}

Reemplaza lo siguiente:

  • SERVICE_ACCOUNT por la cuenta de servicio de tu entorno.

Ejemplo:


// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments

{
  "name": "projects/example-project/locations/us-central1/environments/example-environment",
  "config": {
    "nodeConfig": {
      "serviceAccount": "example-account@example-project.iam.gserviceaccount.com"
    }
  }
}

Terraform

Cuando crees un entorno, usa el campo service_account en el bloque node_config.

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {
    node_config {
      service_account = "SERVICE_ACCOUNT"
    }
  }
}

Reemplaza lo siguiente:

  • SERVICE_ACCOUNT por la cuenta de servicio de tu entorno.

Ejemplo:

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {
    node_config {
      service_account = "example-account@example-project.iam.gserviceaccount.com"
    }
  }
}

Paso 3: Otorga los permisos necesarios a la cuenta de servicio de Cloud Composer

Cuando habilitas la API de Cloud Composer en tu proyecto, se crea la cuenta del agente de servicio de Composer en tu proyecto. Cloud Composer usa esta cuenta para realizar operaciones en tu proyecto de Google Cloud.

La función de extensión de agente de servicio de la API de Cloud Composer v2 proporciona permisos adicionales a la cuenta de agente de servicio de Cloud Composer. Esta función no se otorga automáticamente. Debes otorgarla de forma manual.

Consola

Cuando creas un entorno en tu proyecto, si el agente de servicio de Cloud Composer no tiene los permisos necesarios en la cuenta de servicio del entorno, aparecerá la sección Otorga los permisos necesarios a la cuenta de servicio de Cloud Composer.

Agrega la cuenta del agente de servicio de Cloud Composer como una principal nueva a la cuenta de servicio de tu entorno y le otorgas la función Extensión del agente de servicio de la API de Cloud Composer v2.

Confirma que usas la cuenta de servicio prevista para tu entorno y haz clic en Otorgar.

gcloud

Agrega la cuenta del agente de servicio de Cloud Composer como una principal nueva a la cuenta de servicio de tu entorno y le otorgas la función Extensión del agente de servicio de la API de Cloud Composer v2.

gcloud iam service-accounts add-iam-policy-binding \
    SERVICE_ACCOUNT \
    --member serviceAccount:service-PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com \
    --role roles/composer.ServiceAgentV2Ext

Reemplaza lo siguiente:

  • SERVICE_ACCOUNT por la cuenta de servicio de tu entorno.
  • PROJECT_NUMBER por el número del proyecto.

Ejemplo:

gcloud iam service-accounts add-iam-policy-binding \
    example-account@example-project.iam.gserviceaccount.com \
    --member serviceAccount:service-00000000000@cloudcomposer-accounts.iam.gserviceaccount.com \
    --role roles/composer.ServiceAgentV2Ext

API

Para otorgar la función, debes modificar la política de permisos existente con el patrón de lectura-modificación-escritura:

  1. Lee la política de permisos existente para la cuenta de servicio de tu entorno.
  2. Modifícalo a fin de que incluya el rol roles/composer.ServiceAgentV2Ext para el agente de servicio de Cloud Composer.
  3. Reescribe la política de permisos existente.

Para obtener más información, consulta Controla el acceso de manera programática.

{
  "role": "roles/composer.ServiceAgentV2Ext",
  "members": [
    "serviceAccount:service-PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com"
  ]
}

Reemplaza lo siguiente:

Ejemplo:

{
  "role": "roles/composer.ServiceAgentV2Ext",
  "members": [
    "serviceAccount:service-00000000000@cloudcomposer-accounts.iam.gserviceaccount.com"
  ]
}

Terraform

Agrega una nueva vinculación de rol a la política de permisos de la cuenta de servicio de tu entorno.

Agrega la cuenta del agente de servicio de Cloud Composer como una principal nueva a la cuenta de servicio de tu entorno y le otorgas la función Extensión del agente de servicio de la API de Cloud Composer v2.

Si no usas Terraform para definir la política de permisos de la cuenta de servicio de tu entorno, 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 = "SERVICE_ACCOUNT"
  role = "roles/composer.ServiceAgentV2Ext"
  member = "serviceAccount:service-PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com"
}

Reemplaza lo siguiente:

  • SERVICE_ACCOUNT por la cuenta de servicio de tu entorno.
  • PROJECT_NUMBER por el número del proyecto.

Ejemplo:

resource "google_service_account_iam_member" "custom_service_account" {
  provider = google-beta
  service_account_id = "example-account@example-project.iam.gserviceaccount.com"
  role = "roles/composer.ServiceAgentV2Ext"
  member = "serviceAccount:service-00000000000@cloudcomposer-accounts.iam.gserviceaccount.com"
}

Paso 4: Configura la escala del entorno y los parámetros de rendimiento (opcional)

Para especificar la configuración de escalamiento y rendimiento de tu entorno, selecciona el tamaño del entorno y la configuración de las cargas de trabajo.

En Cloud Composer 2, puedes cambiar todos los parámetros de rendimiento y escalamiento después de crear un entorno.

Los siguientes parámetros controlan el escalamiento y el rendimiento:

  • Tamaño del entorno: Controla los parámetros de rendimiento de la infraestructura administrada de Cloud Composer que incluye la base de datos de Airflow. Considera seleccionar un tamaño de entorno más grande si deseas ejecutar una gran cantidad de DAG y tareas.

  • Configuración de las cargas de trabajo: Controla la escala y el rendimiento de los componentes de tu entorno que se ejecutan en un clúster de GKE: programadores de Airflow, servidor web de Airflow y trabajadores de Airflow.

    • Programador de Airflow. Analiza archivos de definición de DAG, programa ejecuciones de DAG según el intervalo de programación y pone en cola las tareas para que los trabajadores de Airflow las ejecuten.

      Tu entorno puede ejecutar más de un programador de Airflow al mismo tiempo. Usa varios programadores para distribuir la carga entre varias instancias del programador a fin de mejorar el rendimiento y la confiabilidad.

      Puedes tener hasta 10 programadores en tu entorno.

      Aumentar la cantidad de programadores no siempre mejora el rendimiento de Airflow. Por ejemplo, tener solo un programador puede proporcionar un mejor rendimiento que tener dos. Esto puede suceder cuando no se usa el programador adicional y, por lo tanto, consume recursos de tu entorno sin contribuir al rendimiento general. El rendimiento real del programador depende de la cantidad de trabajadores de Airflow, la cantidad de DAG y tareas que se ejecutan en tu entorno y la configuración de Airflow y el entorno.

      Recomendamos comenzar con dos programadores y, luego, supervisar el rendimiento del entorno. Si cambias la cantidad de programadores, siempre puedes volver a escalar el entorno a la cantidad original.

      Para obtener más información sobre la configuración de varios programadores, consulta la documentación de Airflow.

    • Activador de Airflow. Supervisa de forma asíncrona todas las tareas diferidas en tu entorno. Si tienes al menos una instancia de activador en tu entorno (o al menos dos en entornos de alta resiliencia), puedes usar operadores diferibles en tus DAG.

    • Servidor web de Airflow. Ejecuta la interfaz web de Airflow, en la que puedes supervisar, administrar y visualizar tus DAG.

    • Trabajadores de Airflow: Ejecuta tareas programadas por los programadores de Airflow. La cantidad mínima y máxima de trabajadores en tu entorno cambia de forma dinámica según la cantidad de tareas en la cola.

Consola

Puedes seleccionar un ajuste predeterminado para tu entorno. Cuando seleccionas un ajuste predeterminado, se seleccionan automáticamente los parámetros de escalamiento y rendimiento para ese ajuste. También tienes la opción de seleccionar un ajuste predeterminado y especificar todos los parámetros de escalamiento y rendimiento para tu entorno.

Para seleccionar la configuración de escalamiento y rendimiento de tu entorno, en la página Crear entorno, sigue estos pasos:

  • Para usar los valores predefinidos, en la sección Recursos del entorno, haz clic en Pequeño, Medio o Grande.

  • A fin de especificar valores personalizados para los parámetros de escalamiento y rendimiento, haz lo siguiente:

    1. En la sección Recursos del entorno, haz clic en Personalizados.

    2. En la sección Programador, establece la cantidad de programadores que deseas usar y la asignación de recursos para su CPU, memoria y almacenamiento.

    3. En la sección Activador, usa el campo Cantidad de activadores para ingresar la cantidad de activadores en tu entorno. Puedes establecer este número en 0 si no quieres usar operadores diferibles en tus DAG.

      Si configuras al menos un activador para tu entorno, usa los campos CPU y Memoria para configurar la asignación de recursos de tus activadores.

    4. En la sección Worker, especifica lo siguiente:

      • La cantidad mínima y máxima de trabajadores para los límites del ajuste de escala automático en tu entorno
      • la asignación de CPU, memoria y almacenamiento para tus trabajadores
    5. En la sección Infraestructura principal, en la lista desplegable Tamaño del entorno, selecciona el tamaño del entorno.

gcloud

Cuando crees un entorno, configura los siguientes argumentos para controlar sus parámetros de escala y rendimiento.

  • --environment-size especifica el tamaño del entorno.
  • --scheduler-count especifica la cantidad de programadores.
  • --scheduler-cpu especifica la cantidad de CPU para un programador de Airflow.
  • --scheduler-memory especifica la cantidad de memoria para un programador de Airflow.
  • --scheduler-storage especifica la cantidad de espacio en disco para un programador de Airflow.

  • --triggerer-count especifica la cantidad de activadores de Airflow en tu entorno. El valor predeterminado de esta marca es 0. Necesitas activadores si quieres usar operadores diferibles en tus DAG.

    • Para entornos de resiliencia estándar, usa un valor entre 0 y 10.
    • Para entornos de alta resiliencia, usa 0 o un valor entre 2 y 10.

      De forma predeterminada, los activadores se crean con la asignación predeterminada de CPU virtual 0.5 y memoria de 0.5 GB. Usa las marcas --triggerer-cpu y --triggerer-memory a fin de especificar diferentes asignaciones de recursos para los activadores:

      • --triggerer-cpu especifica la cantidad de CPU para un activador de Airflow en unidades de CPU virtual. Valores permitidos: 0.5, 0.75, 1.

      • --triggerer-memory especifica la cantidad de memoria para un activador de Airflow. La cantidad mínima de memoria requerida es igual a la cantidad de CPU asignadas para los activadores. El valor máximo permitido es igual a la cantidad de CPU del activador multiplicada por 6.5.

        Por ejemplo, si estableces la marca --triggerer-cpu en 1, el valor mínimo para --triggerer-memory es 1 y el valor máximo es 6.5.

  • --web-server-cpu especifica la cantidad de CPU para el servidor web de Airflow.

  • --web-server-memory especifica la cantidad de memoria para el servidor web de Airflow.

  • --web-server-storage especifica la cantidad de espacio en disco para el servidor web de Airflow.

  • --worker-cpu especifica la cantidad de CPU para un trabajador de Airflow.

  • --worker-memory especifica la cantidad de memoria para un trabajador de Airflow.

  • --worker-storage especifica la cantidad de espacio en el disco para un trabajador de Airflow.

  • --min-workers especifica la cantidad mínima de trabajadores de Airflow. El clúster de tu entorno ejecuta al menos esta cantidad de trabajadores.

  • --max-workers especifica la cantidad máxima de trabajadores de Airflow. El clúster de tu entorno ejecuta como máximo esta cantidad de trabajadores.

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-2.5.2-airflow-2.6.3 \
    --environment-size ENVIRONMENT_SIZE \
    --scheduler-count SCHEDULER_COUNT \
    --scheduler-cpu SCHEDULER_CPU \
    --scheduler-memory SCHEDULER_MEMORY \
    --scheduler-storage SCHEDULER_STORAGE \
    --triggerer-count TRIGGERER_COUNT \
    --triggerer-cpu TRIGGERER_CPU \
    --triggerer-memory TRIGGERER_MEMORY \
    --web-server-cpu WEB_SERVER_CPU \
    --web-server-memory WEB_SERVER_MEMORY \
    --web-server-storage WEB_SERVER_STORAGE \
    --worker-cpu WORKER_CPU \
    --worker-memory WORKER_MEMORY \
    --worker-storage WORKER_STORAGE \
    --min-workers WORKERS_MIN \
    --max-workers WORKERS_MAX

Reemplaza lo siguiente:

  • ENVIRONMENT_SIZE por small, medium o large.
  • SCHEDULER_COUNT por la cantidad de programadores.
  • SCHEDULER_CPU por la cantidad de CPU para un programador, en unidades de CPU virtual.
  • SCHEDULER_MEMORY por la cantidad de memoria para un programador.
  • SCHEDULER_STORAGE por el tamaño del disco de un programador.
  • TRIGGERER_COUNT por la cantidad de activadores
  • TRIGGERER_CPU por la cantidad de CPU para un activador, en unidades de CPU virtual
  • TRIGGERER_MEMORY por la cantidad de memoria para un activador, en GB
  • WEB_SERVER_CPU por la cantidad de CPU para el servidor web, en unidades de CPU virtuales.
  • WEB_SERVER_MEMORY por la cantidad de memoria para el servidor web.
  • WEB_SERVER_STORAGE por la cantidad de memoria para el servidor web.
  • WORKER_CPU por la cantidad de CPU para un trabajador, en unidades de CPU virtual.
  • WORKER_MEMORY por la cantidad de memoria para un trabajador.
  • WORKER_STORAGE por el tamaño del disco de un trabajador.
  • WORKERS_MIN por la cantidad mínima de trabajadores de Airflow que tu entorno puede ejecutar. La cantidad de trabajadores en tu entorno no supera esta cantidad, incluso si una cantidad menor de trabajadores puede manejar la carga.
  • WORKERS_MAX por la cantidad máxima de trabajadores de Airflow que tu entorno puede ejecutar. La cantidad de trabajadores en tu entorno no supera esta cantidad, incluso si se requiere una mayor cantidad de trabajadores para manejar la carga.

Ejemplo:

gcloud composer environments create example-environment \
    --location us-central1 \
    --image-version composer-2.5.2-airflow-2.6.3 \
    --environment-size small \
    --scheduler-count 1 \
    --scheduler-cpu 0.5 \
    --scheduler-memory 2.5GB \
    --scheduler-storage 2GB \
    --triggerer-count 1 \
    --triggerer-cpu 0.5 \
    --triggerer-memory 0.5GB \
    --web-server-cpu 1 \
    --web-server-memory 2.5GB \
    --web-server-storage 2GB \
    --worker-cpu 1 \
    --worker-memory 2GB \
    --worker-storage 2GB \
    --min-workers 2 \
    --max-workers 4

API

Cuando crees un entorno, en el recurso Environment > EnvironmentConfig > WorkloadsConfig, especifica los parámetros de escalamiento y rendimiento del entorno.

{
  "name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
  "config": {
    "workloadsConfig": {
      "scheduler": {
        "cpu": SCHEDULER_CPU,
        "memoryGb": SCHEDULER_MEMORY,
        "storageGb": SCHEDULER_STORAGE,
        "count": SCHEDULER_COUNT
      },
      "triggerer": {
        "count": TRIGGERER_COUNT,
        "cpu": TRIGGERER_CPU,
        "memoryGb": TRIGGERER_MEMORY
      },
      "webServer": {
        "cpu": WEB_SERVER_CPU,
        "memoryGb": WEB_SERVER_MEMORY,
        "storageGb": WEB_SERVER_STORAGE
      },
      "worker": {
        "cpu": WORKER_CPU,
        "memoryGb": WORKER_MEMORY,
        "storageGb": WORKER_STORAGE,
        "minCount": WORKERS_MIN,
        "maxCount": WORKERS_MAX
      }
    },
    "environmentSize": "ENVIRONMENT_SIZE"
  }
}

Reemplaza lo siguiente:

  • SCHEDULER_CPU por la cantidad de CPU para un programador, en unidades de CPU virtual.
  • SCHEDULER_MEMORY por la cantidad de memoria para un programador, en GB.
  • SCHEDULER_STORAGE por el tamaño del disco de un programador, en GB.
  • SCHEDULER_COUNT por la cantidad de programadores.
  • TRIGGERER_COUNT por la cantidad de activadores El valor predeterminado es 0. Necesitas activadores si quieres usar operadores diferibles en tus DAG.

    • Para entornos de resiliencia estándar, usa un valor entre 0 y 10.
    • Para entornos de alta resiliencia, usa 0 o un valor entre 2 y 10.

      Si usas al menos un activador, también debes especificar los parámetros TRIGGERER_CPU y TRIGGERER_MEMORY:

      • TRIGGERER_CPU configura la cantidad de CPU para un activador, en unidades de CPU virtual. Valores permitidos: 0.5, 0.75, 1.

      • TRIGGERER_MEMORY configura la cantidad de memoria para un activador. La cantidad mínima de memoria requerida es igual a la cantidad de CPU asignadas para los activadores. El valor máximo permitido es igual a la cantidad de CPU del activador multiplicada por 6.5.

        Por ejemplo, si estableces TRIGGERER_CPU en 1, el valor mínimo para TRIGGERER_MEMORY es 1 y el valor máximo es 6.5.

  • WEB_SERVER_CPU por la cantidad de CPU para el servidor web, en unidades de CPU virtuales.

  • WEB_SERVER_MEMORY por la cantidad de memoria para el servidor web, en GB.

  • WEB_SERVER_STORAGE por el tamaño del disco del servidor web, en GB.

  • WORKER_CPU por la cantidad de CPU para un trabajador, en unidades de CPU virtual.

  • WORKER_MEMORY por la cantidad de memoria para un trabajador, en GB.

  • WORKER_STORAGE por el tamaño del disco de un trabajador, en GB.

  • WORKERS_MIN por la cantidad mínima de trabajadores de Airflow que tu entorno puede ejecutar. La cantidad de trabajadores en tu entorno no supera esta cantidad, incluso si una cantidad menor de trabajadores puede manejar la carga.

  • WORKERS_MAX por la cantidad máxima de trabajadores de Airflow que tu entorno puede ejecutar. La cantidad de trabajadores en tu entorno no supera esta cantidad, incluso si se requiere una mayor cantidad de trabajadores para manejar la carga.

  • ENVIRONMENT_SIZE por el tamaño del entorno, ENVIRONMENT_SIZE_SMALL, ENVIRONMENT_SIZE_MEDIUM o ENVIRONMENT_SIZE_LARGE.

Ejemplo:


// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments

{
  "name": "projects/example-project/locations/us-central1/environments/example-environment",
  "config": {
    "workloadsConfig": {
      "scheduler": {
        "cpu": 2.5,
        "memoryGb": 2.5,
        "storageGb": 2,
        "count": 1
      },
      "triggerer": {
        "cpu": 0.5,
        "memoryGb": 0.5,
        "count": 1
      },
      "webServer": {
        "cpu": 1,
        "memoryGb": 2.5,
        "storageGb": 2
      },
      "worker": {
        "cpu": 1,
        "memoryGb": 2,
        "storageGb": 2,
        "minCount": 2,
        "maxCount": 4
      }
    },
    "environmentSize": "ENVIRONMENT_SIZE_SMALL"
  }
}

Terraform

Cuando creas un entorno, los siguientes argumentos controlan los parámetros de escalamiento y rendimiento del entorno.

  • En el bloque config, sucede lo siguiente:

    • El campo environment_size controla el tamaño del entorno.
  • En el bloque workloads_config, sucede lo siguiente:

    • El campo scheduler.cpu especifica la cantidad de CPU para un programador de Airflow.
    • El campo scheduler.memory_gb especifica la cantidad de memoria para un programador de Airflow.
    • El campo scheduler.storage_gb especifica la cantidad de espacio en el disco de un programador.
    • El campo scheduler.count especifica la cantidad de programadores en tu entorno.
    • El campo triggerer.cpu especifica la cantidad de CPU para un activador de Airflow.
    • El campo triggerer.memory_gb especifica la cantidad de memoria para un activador de Airflow.
    • El campo triggerer.count especifica la cantidad de activadores en el entorno.
    • El campo web_server.cpu especifica la cantidad de CPU para el servidor web de Airflow.
    • El campo web_server.memory_gb especifica la cantidad de memoria para el servidor web de Airflow.
    • En el campo web_server.storage_gb, se especifica la cantidad de espacio en disco para el servidor web de Airflow.
    • En el campo worker.cpu, se especifica la cantidad de CPU para un trabajador de Airflow.
    • En el campo worker.memory_gb, se especifica la cantidad de memoria para un trabajador de Airflow.
    • En el campo worker.storage_gb, se especifica la cantidad de espacio en el disco para un trabajador de Airflow.
    • En el campo worker.min_count, se especifica la cantidad mínima de trabajadores en tu entorno.
    • En el campo worker.max_count, se especifica la cantidad máxima de trabajadores en tu entorno.
resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {

    workloads_config {

      scheduler {
        cpu = SCHEDULER_CPU
        memory_gb = SCHEDULER_MEMORY
        storage_gb = SCHEDULER_STORAGE
        count = SCHEDULER_COUNT
      }
      triggerer {
        count = TRIGGERER_COUNT
        cpu = TRIGGERER_CPU
        memory_gb = TRIGGERER_MEMORY
      }
      web_server {
        cpu = WEB_SERVER_CPU
        memory_gb = WEB_SERVER_MEMORY
        storage_gb = WEB_SERVER_STORAGE
      }
      worker {
        cpu = WORKER_CPU
        memory_gb = WORKER_MEMORY
        storage_gb = WORKER_STORAGE
        min_count = WORKERS_MIN
        max_count = WORKERS_MAX
      }
    }

    environment_size = "ENVIRONMENT_SIZE"

  }
}

Reemplaza lo siguiente:

  • ENVIRONMENT_NAME por el nombre del entorno.
  • LOCATION por la región en la que se encuentra el entorno
  • SCHEDULER_CPU por la cantidad de CPU para un programador, en unidades de CPU virtual.
  • SCHEDULER_MEMORY por la cantidad de memoria para un programador, en GB.
  • SCHEDULER_STORAGE por el tamaño del disco de un programador, en GB.
  • SCHEDULER_COUNT por la cantidad de programadores.
  • TRIGGERER_COUNT por la cantidad de activadores
  • TRIGGERER_CPU por la cantidad de CPU para un activador, en unidades de CPU virtual
  • TRIGGERER_MEMORY por la cantidad de memoria para un activador, en GB
  • WEB_SERVER_CPU por la cantidad de CPU para el servidor web, en unidades de CPU virtuales.
  • WEB_SERVER_MEMORY por la cantidad de memoria para el servidor web, en GB.
  • WEB_SERVER_STORAGE por el tamaño del disco del servidor web, en GB.
  • WORKER_CPU por la cantidad de CPU para un trabajador, en unidades de CPU virtual.
  • WORKER_MEMORY por la cantidad de memoria para un trabajador, en GB.
  • WORKER_STORAGE por el tamaño del disco de un trabajador, en GB.
  • WORKERS_MIN por la cantidad mínima de trabajadores de Airflow que tu entorno puede ejecutar. La cantidad de trabajadores en tu entorno no supera esta cantidad, incluso si una cantidad menor de trabajadores puede manejar la carga.
  • WORKERS_MAX por la cantidad máxima de trabajadores de Airflow que tu entorno puede ejecutar. La cantidad de trabajadores en tu entorno no supera esta cantidad, incluso si se requiere una mayor cantidad de trabajadores para manejar la carga.
  • ENVIRONMENT_SIZE por el tamaño del entorno, ENVIRONMENT_SIZE_SMALL, ENVIRONMENT_SIZE_MEDIUM o ENVIRONMENT_SIZE_LARGE.

Ejemplo:

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {

    workloads_config {

      scheduler {
        cpu = 2.5
        memory_gb = 2.5
        storage_gb = 2
        count = 1
      }
      triggerer {
        count = 1
        cpu = 0.5
        memory_gb = 0.5
      }
      web_server {
        cpu = 1
        memory_gb = 2.5
        storage_gb = 2
      }
      worker {
        cpu = 1
        memory_gb = 2
        storage_gb = 2
        min_count = 2
        max_count = 4
      }
    }

    environment_size = "ENVIRONMENT_SIZE_SMALL"

  }
}

Paso 5: Habilita el modo de resiliencia alta (opcional)

Los entornos de Cloud Composer altamente resilientes son entornos de Cloud Composer 2 que usan mecanismos integrados de redundancia y conmutación por error que reducen la susceptibilidad del entorno a fallas zonales y de interrupciones de puntos únicos.

Un entorno de alta resiliencia se ejecuta en al menos dos zonas de una región seleccionada. Exactamente dos programadores de Airflow, dos servidores web y al menos dos activadores (si la cantidad de activadores no está configurada en 0) se ejecutan en zonas separadas. La cantidad mínima de trabajadores se establece en dos, y el clúster de tu entorno distribuye las instancias de trabajador entre las zonas. En caso de una interrupción zonal, las instancias de trabajador afectadas se reprograman en una zona diferente. La base de datos de Cloud SQL de un entorno de alta resiliencia es una instancia regional que tiene una instancia principal y una en espera.

Consola

En la página Crear entorno:

  1. En la sección Modo de resiliencia, selecciona Resiliencia alta.

  2. En la sección Recursos del entorno, selecciona los parámetros de escala para un entorno de alta resiliencia. Los entornos de alta resiliencia requieren exactamente dos programadores, cero o entre dos y diez activadores, y al menos dos trabajadores:

    1. Haz clic en Personalizado.

    2. En la lista desplegable Cantidad de programadores, selecciona 2.

    3. En la lista desplegable Cantidad de activadores, selecciona 0 o un valor entre 2 y 10. Configura la asignación de CPU y memoria para los activadores.

    4. En la lista desplegable Cantidad mínima de trabajadores, selecciona 2 o más, según la cantidad requerida de trabajadores.

  3. En la sección Configuración de red, sigue estos pasos:

    1. En Tipo de red, selecciona Entorno de IP privada.

    2. Si es necesario, especifica otros parámetros de red.

gcloud

Cuando creas un entorno, el argumento --enable-high-resilience habilita el modo de resiliencia alta.

Configura los siguientes argumentos:

  • --enable-high-resilience
  • --enable-private-environment y otros parámetros de red para un entorno de IP privada, si es necesario
  • --scheduler-count a 2
  • --triggerer-count a 0 o un número entre 2 y 10

Si usas activadores, las marcas --triggerer-cpu y --triggerer-memory también son necesarias para la creación del entorno:

- `--triggerer-cpu` specifies the number of CPUs for an Airflow triggerer.
Allowed values: `0.5`, `0.75`, `1`.

- `--triggerer-memory` specifies the amount of memory for an Airflow
triggerer. The minimum required memory is equal to the number of
CPUs allocated for the triggerers. The maximum allowed value is
equal to the number of triggerer CPUs multiplied by 6.5.

For example, if you set the `--triggerer-cpu` flag to `1`, the
**minimum value** for `--triggerer-memory` is `1` and the
**maximum value** is `6.5`.
  • De --min-workers a 2 o más
gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-2.5.2-airflow-2.6.3 \
    --enable-high-resilience \
    --enable-private-environment \
    --scheduler-count 2 \
    --triggerer-count 2 \
    --triggerer-cpu 0.5 \
    --triggerer-memory 0.5 \
    --min-workers 2

API

Cuando crees un entorno, en el recurso Entorno > EnvironmentConfig, habilita el modo de alta resiliencia.

{
  "name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
  "config": {
    "resilience_mode": "HIGH_RESILIENCE"
  }
}

Ejemplo:


// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments

{
  "name": "projects/example-project/locations/us-central1/environments/example-environment",
  "config": {
    "resilience_mode": "HIGH_RESILIENCE"
  }
}

Terraform

Cuando creas un entorno, el campo resilience_mode en el bloque config habilita el modo de resiliencia alta.

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {

    resilience_mode = "HIGH_RESILIENCE"

  }
}

Ejemplo:

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {

    resilience_mode = "HIGH_RESILIENCE"

}

Paso 6: Especifica una zona para la base de datos del entorno (opcional)

Puedes especificar una zona de Cloud SQL preferida cuando creas un entorno de resiliencia estándar.

Consola

En la página Crear entorno:

  1. En la sección Configuración avanzada, expande el elemento Mostrar configuración avanzada.

  2. En la lista Zona de la base de datos de Airflow, selecciona una zona de Cloud SQL preferida.

gcloud

Cuando creas un entorno, el argumento --cloud-sql-preferred-zone especifica una zona de Cloud SQL preferida.

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-2.5.2-airflow-2.6.3 \
    --cloud-sql-preferred-zone SQL_ZONE

Reemplaza lo siguiente:

  • SQL_ZONE: Es la zona de Cloud SQL preferida. Esta zona debe estar ubicada en la región en la que se encuentra el entorno.

Ejemplo:

gcloud composer environments create example-environment \
    --location us-central1 \
    --image-version composer-2.5.2-airflow-2.6.3 \
    --cloud-sql-preferred-zone us-central1-a

API

Cuando crees un entorno, en el recurso Entorno > DatabaseConfig, especifica la zona de Cloud SQL preferida.

{
  "name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
  "config": {
    "databaseConfig": {
      "zone": "SQL_ZONE"
    }
  }
}

Reemplaza lo siguiente:

  • SQL_ZONE: Es la zona de Cloud SQL preferida. Esta zona debe estar ubicada en la región en la que se encuentra el entorno.

Ejemplo:


// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments

{
  "name": "projects/example-project/locations/us-central1/environments/example-environment",
  "config": {
    "databaseConfig": {
      "zone": "us-central1-a"
    }
  }
}

Terraform

Cuando creas un entorno, el campo zone en el bloque database_config especifica la zona de Cloud SQL preferida.

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {
    database_config {
      zone = "SQL_ZONE"
    }
  }
}

Reemplaza lo siguiente:

  • SQL_ZONE: Es la zona de Cloud SQL preferida. Esta zona debe estar ubicada en la región en la que se encuentra el entorno.

Paso 7: Configura las herramientas de redes de tu entorno (opcional)

Los parámetros de Herramientas de redes dependen del tipo de entorno que deseas crear:

  • Entorno de IP pública. Usa los parámetros de red predeterminados.

  • Entorno de IP privada (con PSC). En esta configuración, el entorno usa Private Service Connect para la conectividad.

    Configura tu entorno de IP privada:

    1. Configura las redes de tu proyecto para entornos de IP privada.
    2. Configura Private Service Connect cuando crees tu entorno.
    3. Especifica otros parámetros para tu entorno de IP privada, como se describe más adelante en esta sección.

    Para un entorno de IP privada con PSC, debes saber lo siguiente:

    • El ID de tu red de VPC
    • El ID de tu subred de VPC
    • Dos rangos de IP secundarios en la subred de VPC:

      • Rango de IP secundario para Pods
      • Rango de IP secundario para servicios
    • Rangos de IP para los componentes del entorno:

      • Rango de IP del plano de control de GKE. Es el rango de IP para el plano de control de GKE.
      • Subred de conexión de Cloud Composer. para la subred de conexión de Cloud Composer.
  • Entorno de IP privada (intercambio de tráfico de VPC). En esta configuración, el entorno usa intercambios de tráfico de VPC para la conectividad.

    Configura tu entorno de IP privada:

    1. Configura las redes de tu proyecto para entornos de IP privada.
    2. Especifica otros parámetros para tu entorno de IP privada, como se describe más adelante en esta sección.

    Para un entorno de IP privada con intercambios de tráfico entre VPC, debes saber lo siguiente:

    • El ID de tu red de VPC
    • El ID de tu subred de VPC
    • Dos rangos de IP secundarios en la subred de VPC:

      • Rango de IP secundario para Pods
      • Rango de IP secundario para servicios
    • Los rangos de IP para los componentes del entorno:

      • rango de IP para el plano de control de GKE.

      • Rango de IP de intercambio de tráfico de VPC para exportar desde la red interna de Cloud Composer a la red seleccionada. Los componentes de la infraestructura de Cloud Composer usan direcciones IP de este rango.

      • Rango de IP para la instancia de Cloud SQL.

  • Para un entorno de VPC compartida, debes realizar una configuración de Herramientas de redes adicional para el proyecto host y, luego, crear un entorno de IP pública o privada en un proyecto de servicio. Sigue las instrucciones de la página Configuración de la VPC compartida.

    Para un entorno de VPC compartida, necesitas conocer los siguientes datos:

    • El ID de la red de VPC del proyecto host
    • El ID de subred de la VPC del proyecto host
    • Dos rangos de IP secundarios en la subred de VPC del proyecto host:

      • Rango de IP secundario para Pods
      • Rango de IP secundario para servicios

    Cuando creas un entorno de VPC compartida con IP pública, debes especificar la red de VPC del proyecto host, la subred y los rangos de IP secundarios para los Pods y servicios.

  • Para crear un entorno de VPC SC, debes crear un perímetro de servicio y, luego, crear entornos de IP privada dentro de este perímetro. Sigue las instrucciones descritas en Configuración de los Controles del servicio de VPC.

  • Las opciones de Herramientas de redes adicionales para los entornos son las siguientes:

    • Direcciones IP públicas usadas de forma privada: Si deseas usar más direcciones IP, tu entorno puede usar de forma privada ciertos rangos de direcciones IP públicas como rangos de direcciones IP de subred internos para Pods y servicios.
    • Redes autorizadas. Si quieres acceder al plano de control de tu entorno de IP privada mediante HTTPS, puedes usar redes autorizadas para especificar los rangos CIDR que pueden hacerlo.

    • Agente de enmascaramiento de IP Mediante los entornos con el agente de enmascaramiento de IP, puedes usar traducciones de direcciones IP de muchos a uno en las opciones de configuración de red de tu entorno. Para obtener más información sobre cómo crear entornos con el agente de enmascaramiento de IP, consulta Habilita el agente de enmascaramiento de IP.

Consola

Para crear un entorno de IP privada, sigue estos pasos:

  1. Asegúrate de que tus herramientas de redes estén configuradas para el tipo de entorno que deseas crear.

  2. En la sección Configuración de red, expande el elemento Mostrar configuración de red.

  3. En la lista desplegable Red, selecciona la ID de tu red de VPC.

  4. En la lista desplegable Subred, selecciona el ID de tu subred de VPC.

  5. En la sección Rango de IP secundarias para pods, selecciona o especifica el rango de IP secundarias para pods. Puedes usar un rango secundario existente en tu red de VPC o usar un rango creado automáticamente.

  6. En la sección Rango de IP secundarias para servicios, selecciona o especifica el rango de IP secundarias para servicios. Puedes usar un rango secundario existente en tu red de VPC o elegir un rango creado de forma automática.

  7. En la sección Tipo de red, selecciona la opción Entorno de IP privado para crear un entorno de IP privado.

  8. En la sección Conectividad del Composer, selecciona el tipo de red para tu entorno y especifica los rangos de IP para los componentes del entorno:

    Para un entorno que usa Private Service Connect, haz lo siguiente:

    1. Selecciona Private Service Connect para un entorno que use Private Service Connect.

    2. En la sección Subred de conexión de Composer, especifica un rango de IP para la subred de conexión de Cloud Composer. La dirección del extremo de PSC se selecciona de este rango. Puedes especificar un rango personalizado o usar el predeterminado.

    Para un entorno que usa intercambios de tráfico de VPC, haz lo siguiente:

    1. Selecciona Intercambios de tráfico de VPC para un entorno que use intercambios de tráfico de VPC.

    2. En la sección Rango de IP para la red de usuarios de Composer, especifica un rango de IP para la red de usuarios de Cloud Composer. Esta red aloja el componente del proxy de SQL de tu entorno. Puedes especificar un rango personalizado o usar el predeterminado.

    3. En la sección Rango de IP para la red de Cloud SQL, especifica un rango de IP para la instancia de Cloud SQL. Puedes especificar un rango personalizado o usar el predeterminado.

  9. En la sección Rango de IP para la red del plano de control de GKE, especifica un rango de IP para el plano de control de GKE:

    • Para usar el rango de IP predeterminado para la región en la que se encuentra el entorno, selecciona Rango de IP predeterminado.

    • Para especificar un rango de IP personalizado, selecciona Rango de IP personalizado y, luego, ingresa un rango en la notación CIDR en el campo IP privada principal de la instancia principal del clúster de GKE.

  10. Selecciona el nivel de acceso para el plano de control de GKE. El plano de control tiene dos extremos. Un extremo es privado y lo usan las VMs y los nodos del clúster. Otro extremo es público. Puedes especificar el nivel de acceso para el extremo público:

    • Para habilitar el acceso al extremo público desde redes autorizadas, selecciona la casilla de verificación Acceder al extremo del plano de control del clúster con su dirección IP externa.

      Con esta opción, se configura el nivel de acceso del plano de control en “Acceso al extremo público habilitado, redes autorizadas habilitadas”. Esto proporciona acceso restringido al plano de control desde las redes autorizadas. De forma predeterminada, no se especifican direcciones IP de origen. Puedes agregar redes autorizadas al clúster.

    • Para inhabilitar el acceso al extremo público desde las redes autorizadas, desmarca la casilla de verificación Acceder al extremo del plano de control del clúster con su dirección IP externa.

      Con esta opción, se configura el nivel de acceso del plano de control en “Acceso al extremo público inhabilitado”. Esto evita todo acceso de Internet al plano de control.

gcloud

Asegúrate de que tu red esté configurada para el tipo de entorno que deseas crear.

Cuando creas un entorno, los siguientes argumentos controlan los parámetros de red. Si omites un parámetro, se usa el valor predeterminado.

  • --enable-private-environment habilita un entorno de IP privada.

  • --network especifica el ID de la red de VPC.

  • --subnetwork especifica el ID de la subred de VPC.

  • --cluster-secondary-range-name o --cluster-ipv4-cidr configuran el rango secundario para los pods.

  • --services-secondary-range-name o --services-ipv4-cidr para configurar el rango secundario de los servicios.

  • --master-ipv4-cidr especifica un rango para el plano de control de GKE.

  • (Entornos con PSC) --connection-subnetwork especifica un rango para la subred de conexión de Cloud Composer, que aloja el extremo de PSC.

  • (Entornos con intercambio de tráfico de VPC) --composer-network-ipv4-cidr especifica un rango para la red de usuarios de Cloud Composer. Esta red aloja el componente de proxy de SQL de tu entorno.

  • (Entornos con intercambio de tráfico de VPC) --cloud-sql-ipv4-cidr especifica un rango para la instancia de Cloud SQL.

  • --enable-private-endpoint controla el acceso al nivel para el plano de control de GKE. El plano de control tiene dos extremos. Un extremo es privado, para que lo usen los nodos del clúster y las VM. Otro extremo es público. Puedes especificar el nivel de acceso para el extremo público de la siguiente manera:

    • Para habilitar el acceso al extremo público desde redes autorizadas, omite el argumento --enable-private-endpoint.

      Con esta opción, se configura el nivel de acceso del plano de control en “Acceso al extremo público habilitado, redes autorizadas habilitadas”. Esto proporciona acceso restringido al plano de control desde las redes autorizadas. De forma predeterminada, no se especifican direcciones IP de origen. Puedes agregar redes autorizadas al clúster.

    • Para inhabilitar el acceso al extremo público desde redes autorizadas, especifica el argumento --enable-private-endpoint.

      Con esta opción, se configura el nivel de acceso del plano de control en “Acceso al extremo público inhabilitado”. Esto evita todo acceso de Internet al plano de control.

  • --enable-ip-masq-agent habilita el agente de enmascaramiento de IP.

gcloud composer environments create ENVIRONMENT_NAME \
  --location LOCATION \
  --image-version composer-2.5.2-airflow-2.6.3 \
  --enable-private-environment \
  --network NETWORK_ID \
  --subnetwork SUBNETWORK_ID \
  --cluster-ipv4-cidr PODS_RANGE \
  --services-ipv4-cidr SERVICES_RANGE \
  --master-ipv4-cidr CONTROL_PLANE_RANGE \
  --connection-subnetwork COMPOSER_PSC_RANGE \

Reemplaza lo siguiente:

  • NETWORK_ID por el ID de la red de VPC.
  • SUBNETWORK_ID por el ID de la subred de VPC.
  • PODS_RANGE por el rango secundario para los pods.
  • SERVICES_RANGE por el rango secundario para los servicios.
  • CONTROL_PLANE_RANGE por el rango secundario para el plano de control de GKE.

  • COMPOSER_PSC_RANGE por el rango para la subred de conexión de Cloud Composer

Paso 8 Agrega etiquetas de red (opcional)

Las etiquetas de red se aplican a todas las VM del nodo en el clúster de tu entorno. Las etiquetas se usan con el fin de identificar objetivos o fuentes válidos para firewalls de red. Cada etiqueta de la lista debe cumplir con RFC 1035.

Por ejemplo, es posible que desees agregar etiquetas de red si planeas restringir el tráfico para un entorno de IP privada con reglas de firewall.

Consola

En la página Crear entorno:

  1. Busca la sección Configuración de red.
  2. En el campo Etiquetas de red, ingresa etiquetas de red para tu entorno.

gcloud

Cuando creas un entorno, los siguientes argumentos controlan las etiquetas de red:

  • --tags especifica una lista separada por comas de etiquetas de red aplicadas a todas las VM del nodo.
gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-2.5.2-airflow-2.6.3 \
    --tags TAGS

Reemplaza lo siguiente:

  • TAGS por una lista de etiquetas de red separadas por comas.

Ejemplo:

gcloud composer environments create example-environment \
    --location us-central1 \
    --image-version composer-2.5.2-airflow-2.6.3 \
    --tags group1,production

API

Cuando crees un entorno, en el recurso Entorno > EnvironmentConfig, especifica las etiquetas de red de tu entorno.

{
  "name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
  "config": {
    "nodeConfig": {
      "tags": [
        "TAG"
      ]
    }
  }
}

Reemplaza lo siguiente:

  • TAG por una etiqueta de red

Ejemplo:

// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments

{
  "name": "projects/example-project/locations/us-central1/environments/example-environment",
  "config": {
    "nodeConfig": {
      "tags": [
        "group1",
        "production"
      ]
    }
  }
}

Terraform

Cuando creas un entorno, los siguientes campos definen etiquetas de red para este:

  • El campo tags en el bloque node_config especifica una lista separada por comas de etiquetas de red aplicadas a todas las VM del nodo.
resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {

    node_config {
      tags = ["TAGS"]
    }
  }
}

Reemplaza lo siguiente:

  • TAGS por una lista de etiquetas de red separadas por comas.

Ejemplo:

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {
    node_config {
      tags = ["group1","production"]
    }
  }
}

Paso 9. Configura el acceso a la red del servidor web (opcional)

Los parámetros de acceso del servidor web de Airflow no dependen del tipo de entorno. En cambio, puedes configurar el acceso al servidor web por separado. Por ejemplo, un entorno de IP privada aún puede tener la IU de Airflow accesible desde Internet.

En este momento, no puedes configurar los rangos de IP permitidos con direcciones IP privadas.

Consola

En la página Crear entorno:

  1. En la sección Configuración de red, expande el elemento Mostrar configuración de red.

  2. En la sección Control de acceso a la red del servidor web, haz lo siguiente:

    • Para proporcionar acceso al servidor web de Airflow desde todas las direcciones IP, selecciona Permitir acceso desde todas las direcciones IP.

    • Para restringir el acceso solo a rangos de IP específicos, selecciona Permitir el acceso solo desde direcciones IP específicas. En el campo Rango de IP, especifica un rango de IP en la notación CIDR. En el campo Descripción, especifica una descripción opcional para este rango. Si deseas especificar más de un rango, haz clic en Agregar rango de IP.

    • Para prohibir el acceso a todas las direcciones IP, selecciona Permitir acceso solo desde direcciones IP específicas y haz clic en Borrar elemento junto a la entrada de rango vacío.

gcloud

Cuando creas un entorno, los siguientes argumentos controlan el nivel de acceso del servidor web:

  • --web-server-allow-all proporciona acceso a Airfow desde todas las direcciones IP. Esta es la opción predeterminada.

  • --web-server-allow-ip restringe el acceso solo a rangos de IP de origen específicos. Para especificar varios rangos de IP, usa este argumento varias veces.

  • --web-server-deny-all prohíbe el acceso a todas las direcciones IP.

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-2.5.2-airflow-2.6.3 \
    --web-server-allow-ip ip_range=WS_IP_RANGE,description=WS_RANGE_DESCRIPTION

Reemplaza lo siguiente:

  • WS_IP_RANGE por el rango de IP, en la notación CIDR, que puede acceder a la IU de Airflow
  • WS_RANGE_DESCRIPTION por la descripción del rango de IP

Ejemplo:

gcloud composer environments create example-environment \
    --location us-central1 \
    --image-version composer-2.5.2-airflow-2.6.3 \
    --web-server-allow-ip ip_range=192.0.2.0/24,description="office net 1" \
    --web-server-allow-ip ip_range=192.0.4.0/24,description="office net 3"

API

Cuando creas un entorno, en el recurso Entorno > EnvironmentConfig, especifica los parámetros de acceso al servidor web.

  • Para proporcionar acceso al servidor web de Airfow desde todas las direcciones IP, omite webServerNetworkAccessControl.

  • Para restringir el acceso solo a rangos de IP específicos, especifica uno o más rangos en allowedIpRanges.

  • Para prohibir el acceso a todas las direcciones IP, agrega allowedIpRanges y establécelo en una lista vacía. No especifiques rangos de IP en ella.

{
  "name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
  "config": {
    "webServerNetworkAccessControl": {
      "allowedIpRanges": [
        {
          "value": "WS_IP_RANGE",
          "description": "WS_RANGE_DESCRIPTION"
        }
      ]
    }
  }
}

Reemplaza lo siguiente:

  • WS_IP_RANGE por el rango de IP, en la notación CIDR, que puede acceder a la IU de Airflow
  • WS_RANGE_DESCRIPTION por la descripción del rango de IP

Ejemplo:


// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments

{
  "name": "projects/example-project/locations/us-central1/environments/example-environment",
  "config": {
    "webServerNetworkAccessControl": {
      "allowedIpRanges": [
        {
          "value": "192.0.2.0/24",
          "description": "office net 1"
        },
        {
          "value": "192.0.4.0/24",
          "description": "office net 3"
        }
      ]
    }
  }
}

Terraform

Cuando creas un entorno, el bloque allowed_ip_range en el bloque web_server_network_access_control contiene rangos de IP que pueden acceder al servidor web.

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {

    web_server_network_access_control {

      allowed_ip_range {
        value = "WS_IP_RANGE"
        description = "WS_RANGE_DESCRIPTION"
      }

    }

  }
}

Reemplaza lo siguiente:

  • WS_IP_RANGE por el rango de IP, en la notación CIDR, que puede acceder a la IU de Airflow
  • WS_RANGE_DESCRIPTION por la descripción del rango de IP

Ejemplo:

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {

    web_server_network_access_control {
      allowed_ip_range {
        value = "192.0.2.0/24"
        description = "office net 1"
      },
      allowed_ip_range {
        value = "192.0.4.0/24"
        description = "office net 3"
      }

    }
}

Paso 10. Especifica variables de entorno y anulaciones de configuración de Airflow (opcional)

Puedes establecer anulaciones de configuración de Airflow y variables de entorno cuando creas un entorno. Como alternativa, puedes hacerlo más adelante, después de crear el entorno.

Algunas opciones de configuración de Airflow están bloqueadas y no puedes anularlas.

Para obtener la lista de opciones de configuración de Airflow disponibles, consulta la referencia de configuración para Airflow 2 y Airflow 1.10.*

Para especificar anulaciones de configuración de Airflow y variables de entorno, sigue estos pasos:

Consola

En la página Crear entorno:

  1. En la sección Variables de entorno, haz clic en Agregar variable de entorno.

  2. Ingresa el Nombre y el Valor para la variable de entorno.

  3. En la sección Anulaciones de configuración de Airflow, haz clic en Agregar anulación de configuración de Airflow.

  4. Ingresa la Sección, la Clave y el Valor para la anulación de la opción de configuración.

    Por ejemplo:

    Sección Clave Valor
    webserver dag_orientation TB

gcloud

Cuando creas un entorno, los siguientes argumentos controlan las variables de entorno y las anulaciones de configuración de Airflow:

  • --env-variables especifica una lista separada por comas de variables de entorno.

    Los nombres de las variables pueden contener letras mayúsculas y minúsculas, dígitos y guiones bajos, pero no pueden comenzar con un dígito.

  • --airflow-configs especifica una lista de claves y valores separados por comas para anulaciones de configuración de Airflow.

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-2.5.2-airflow-2.6.3 \
    --env-variables ENV_VARS \
    --airflow-configs CONFIG_OVERRIDES

Reemplaza lo siguiente:

  • ENV_VARS por una lista de pares NAME=VALUE separados por comas para variables de entorno.
  • CONFIG_OVERRIDES por una lista de pares SECTION-KEY=VALUE separados por comas para anulaciones de configuración. Separa el nombre de la sección de configuración con un símbolo -, seguido del nombre de la clave. Por ejemplo: core-dags_are_paused_at_creation.

Ejemplo:

gcloud composer environments create example-environment \
    --location us-central1 \
    --image-version composer-2.5.2-airflow-2.6.3 \
    --env-variables SENDGRID_MAIL_FROM=user@example.com,SENDGRID_API_KEY=example-key \
    --airflow-configs core-dags_are_paused_at_creation=True,webserver-dag_orientation=TB

API

Cuando crees un entorno, en el recurso Entorno > EnvironmentConfig, especifica las variables de entorno y las anulaciones de configuración de Airflow.

{
  "name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
  "config": {
    "softwareConfig": {
      "airflowConfigOverrides": {
        "SECTION-KEY": "OVERRIDE_VALUE"
      },
      "envVariables": {
        "VAR_NAME": "VAR_VALUE",
      }
    }
  }
}

Reemplaza lo siguiente:

  • SECTION por la sección del archivo de configuración en la que se encuentra la opción de configuración de Airflow.
  • KEY por el nombre de la opción de configuración de Airflow.
  • OVERRIDE_VALUE por un valor de la opción de configuración de Airflow.
  • VAR_NAME por el nombre de la variable de entorno.
  • VAR_VALUE por el valor de la variable de entorno.

Ejemplo:

// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments

{
  "name": "projects/example-project/locations/us-central1/environments/example-environment",
  "config": {
    "softwareConfig": {
      "airflowConfigOverrides": {
        "core-dags_are_paused_at_creation": "True",
        "webserver-dag_orientation": "TB"
      },
      "envVariables": {
        "SENDGRID_MAIL_FROM": "user@example.com",
        "SENDGRID_API_KEY": "example-key"
      }
    }
  }
}

Terraform

Cuando creas un entorno, los siguientes bloques controlan las variables de entorno y las anulaciones de configuración de Airflow:

  • El bloque env_variables en el bloque software_config especifica variables de entorno.

    Los nombres de las variables pueden contener letras mayúsculas y minúsculas, dígitos y guiones bajos, pero no pueden comenzar con un dígito.

  • En el bloque airflow_config_overrides del bloque software_config, se especifican las anulaciones de configuración de Airflow.

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {

    software_config {

      airflow_config_overrides = {
        SECTION-KEY = "OVERRIDE_VALUE"
      }

      env_variables = {
        VAR_NAME = "VAR_VALUE"
      }
    }
  }
}

Reemplaza lo siguiente:

  • SECTION por la sección del archivo de configuración en la que se encuentra la opción de configuración de Airflow.
  • KEY por el nombre de la opción de configuración de Airflow.
  • OVERRIDE_VALUE por un valor de la opción de configuración de Airflow.
  • VAR_NAME por el nombre de la variable de entorno.
  • VAR_VALUE por el valor de la variable de entorno.

Ejemplo:

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {

    software_config {

      airflow_config_overrides = {
        core-dags_are_paused_at_creation = "True"
        webserver-dag_orientation = "TB"
      }

      env_variables = {
        SENDGRID_MAIL_FROM = "user@example.com"
        SENDGRID_API_KEY = "example-key"
      }
    }
  }
}

Paso 11. Especifica períodos de mantenimiento (opcional)

De forma predeterminada, los períodos de mantenimiento son de 00:00:00 a 04:00:00 (GMT) los domingos, viernes y sábados de cada semana.

Para definir períodos de mantenimiento en tu entorno, haz lo siguiente:

Consola

En la página Crear entorno:

  1. En la lista desplegable Zona horaria, elige una zona horaria para los períodos de mantenimiento.

  2. Establece la Hora de inicio, los Días y la Duración, para que la hora combinada del programa especificado sea de al menos 12 horas en un período progresivo de 7 días. Por ejemplo, un período de 4 horas todos los lunes, miércoles y viernes proporciona la cantidad de tiempo requerida.

gcloud

Los siguientes argumentos definen los parámetros de los períodos de mantenimiento:

  • --maintenance-window-start establece la hora de inicio de un período de mantenimiento.
  • --maintenance-window-end establece la hora de finalización de un período de mantenimiento.
  • --maintenance-window-recurrence establece la recurrencia del período de mantenimiento.
gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-2.5.2-airflow-2.6.3 \
    --maintenance-window-start 'DATETIME_START' \
    --maintenance-window-end 'DATETIME_END' \
    --maintenance-window-recurrence 'MAINTENANCE_RECURRENCE'

Reemplaza lo siguiente:

  • ENVIRONMENT_NAME por el nombre del entorno.
  • DATETIME_START por la fecha y hora de inicio en el formato de entrada de fecha y hora. Solo se usa la hora especificada del día, se ignora la fecha especificada.
  • DATETIME_END por la fecha y hora de finalización en el formato de entrada de fecha y hora. Solo se usa la hora especificada del día, se ignora la fecha especificada. La fecha y hora especificadas deben ser posteriores a la fecha de inicio.
  • MAINTENANCE_RECURRENCE por una RULE RFC 5545 para la recurrencia de los períodos de mantenimiento. Cloud Composer admite dos formatos:

  • El formato FREQ=DAILY especifica una recurrencia diaria.

  • El formato FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SA especifica una recurrencia en los días de la semana seleccionados.

En el siguiente ejemplo, se especifica un período de mantenimiento de 6 horas entre las 1:00 y las 07:00 (UTC) los domingos, miércoles y sábados. Se ignora la fecha del 1 de enero de 2023.

gcloud composer environments create example-environment \
  --location us-central1 \
  --image-version composer-2.5.2-airflow-2.6.3 \
  --maintenance-window-start '2023-01-01T01:00:00Z' \
  --maintenance-window-end '2023-01-01T07:00:00Z' \
  --maintenance-window-recurrence 'FREQ=WEEKLY;BYDAY=SU,WE,SA'

API

Cuando crees un entorno, en el recurso Entorno > EnvironmentConfig, especifica los parámetros de los períodos de mantenimiento:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
  "config": {
    "maintenanceWindow": {
        "startTime": "DATETIME_START",
        "endTime": "DATETIME_END",
        "recurrence": "MAINTENANCE_RECURRENCE"
    }
  }
}

Reemplaza lo siguiente:

  • DATETIME_START por la fecha y hora de inicio en el formato de entrada de fecha y hora. Solo se usa la hora especificada del día, se ignora la fecha especificada.
  • DATETIME_END por la fecha y hora de finalización en el formato de entrada de fecha y hora. Solo se usa la hora especificada del día, se ignora la fecha especificada. La fecha y hora especificadas deben ser posteriores a la fecha de inicio.
  • MAINTENANCE_RECURRENCE por una RRULE RFC 5545 para la recurrencia de los períodos de mantenimiento. Cloud Composer admite dos formatos:

  • El formato FREQ=DAILY especifica una recurrencia diaria.

  • El formato FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SA especifica una recurrencia en los días de la semana seleccionados.

En el siguiente ejemplo, se especifica un período de mantenimiento de 6 horas entre las 1:00 y las 07:00 (UTC) los domingos, miércoles y sábados. Se ignora la fecha del 1 de enero de 2023.

Ejemplo:

// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments

{
  "name": "projects/example-project/locations/us-central1/environments/example-environment",
  "config": {
    "maintenanceWindow": {
        "startTime": "2023-01-01T01:00:00Z",
        "endTime": "2023-01-01T07:00:00Z",
        "recurrence": "FREQ=WEEKLY;BYDAY=SU,WE,SA"
    }
  }
}

Terraform

El bloque maintenance_window especifica los períodos de mantenimiento para el entorno:

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {
    maintenance_window {
      start_time = "DATETIME_START"
      end_time = "DATETIME_END"
      recurrence = "MAINTENANCE_RECURRENCE"
    }
  }
}

Reemplaza lo siguiente:

  • DATETIME_START por la fecha y hora de inicio en el formato de entrada de fecha y hora. Solo se usa la hora especificada del día, se ignora la fecha especificada.
  • DATETIME_END por la fecha y hora de finalización en el formato de entrada de fecha y hora. Solo se usa la hora especificada del día, se ignora la fecha especificada. La fecha y hora especificadas deben ser posteriores a la fecha de inicio.
  • MAINTENANCE_RECURRENCE por una RRULE RFC 5545 para la recurrencia de los períodos de mantenimiento. Cloud Composer admite dos formatos:

    • El formato FREQ=DAILY especifica una recurrencia diaria.
    • El formato FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SA especifica una recurrencia en los días de la semana seleccionados.

En el siguiente ejemplo, se especifica un período de mantenimiento de 6 horas entre las 1:00 y las 07:00 (UTC) los domingos, miércoles y sábados. Se ignora la fecha del 1 de enero de 2023.

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {
    maintenance_window {
      start_time = "2023-01-01T01:00:00Z"
      end_time = "2023-01-01T07:00:00Z"
      recurrence = "FREQ=WEEKLY;BYDAY=SU,WE,SA"
    }
  }
}

Paso 12. Integración del linaje de datos (opcional)

El linaje de datos es una función de Dataplex que te permite hacer un seguimiento del movimiento de datos. Esta opción está inhabilitada de forma predeterminada. El linaje de datos está disponible para las versiones 2.1.2 y posteriores de Cloud Composer 2 con Airflow 2.2.5 y versiones posteriores.

Para habilitar la integración de linaje de datos en un entorno de Cloud Composer, primero debes habilitar la API de Data Lineage. Para obtener más detalles, consulta Integración del linaje de datos y Habilita la API de Data Lineage en la documentación de Dataplex.

Consola

En la página Crear entorno:

  1. Selecciona la opción Habilitar la integración con el linaje de datos de Dataplex.

gcloud

Cuando creas un entorno, el argumento --enable-cloud-data-lineage-integration habilita la función de linaje de datos.

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-2.5.2-airflow-2.6.3 \
    --enable-cloud-data-lineage-integration

Reemplaza lo siguiente:

  • ENVIRONMENT_NAME por el nombre del entorno.

    El nombre debe comenzar con una letra minúscula seguida por un máximo de 62 letras minúsculas, números o guiones, y no puede terminar con un guion. El nombre del entorno se usa a fin de crear subcomponentes para el entorno, por lo que debes proporcionar un nombre que también sea válido como un nombre de bucket de Cloud Storage. Consulta los Lineamientos para asignación de nombres de bucket a fin de obtener una lista de restricciones.

Ejemplo:

gcloud composer environments create example-environment \
    --location us-central1 \
    --image-version composer-2.5.2-airflow-2.6.3 \
    --enable-cloud-data-lineage-integration

Paso 13: Configura la encriptación de datos (CMEK) (opcional)

De forma predeterminada, los datos en tu entorno se encriptan con una clave que proporciona Google.

Para usar claves de encriptación administradas por el cliente (CMEK) a fin de encriptar datos en tu entorno, sigue las instrucciones que se describen en Uso de claves de encriptación administradas por el cliente.

Paso 14: Usa el bucket de un entorno personalizado (opcional)

Cuando creas un entorno, Cloud Composer crea un bucket para él automáticamente.

Como alternativa, puedes especificar un bucket personalizado de Cloud Storage desde tu proyecto. Tu entorno usa este bucket de la misma manera que el bucket creado automáticamente.

Para usar un bucket de entorno personalizado, sigue las instrucciones descritas en Usa el bucket de un entorno personalizado.

Paso 15: Especifica etiquetas de entorno (opcional)

Puedes asignar etiquetas a tus entornos para desglosar los costos de facturación según estas etiquetas.

Consola

En la página Crear entorno, en la sección Etiquetas, haz lo siguiente:

  1. Haz clic en Agregar etiqueta.

  2. En los campos Clave y Valor, especifica los pares clave-valor para las etiquetas del entorno.

gcloud

Cuando creas un entorno, el argumento --labels especifica una lista separada por comas de claves y valores con etiquetas de entorno.

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-2.5.2-airflow-2.6.3 \
    --labels LABELS

Reemplaza lo siguiente:

  • LABELS por una lista de pares KEY=VALUE separados por comas para etiquetas de entorno.

Ejemplo:

gcloud composer environments create example-environment \
    --location us-central1 \
    --image-version composer-2.5.2-airflow-2.6.3 \
    --labels owner=engineering-team,env=production

API

Cuando creas un entorno, en el recurso Entorno, especifica etiquetas para tu entorno.

{
  "name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
  "labels": {
    "LABEL_KEY": "LABEL_VALUE"
  }
}

Reemplaza lo siguiente:

  • LABEL_KEY por una clave de la etiqueta del entorno.
  • LABEL_VALUE por un valor de la etiqueta del entorno.

Ejemplo:


// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments

{
  "name": "projects/example-project/locations/us-central1/environments/example-environment",
  "labels": {
    "owner": "engineering-team",
    "env": "production"
  }
}

Terraform

Cuando creas un entorno, especifica etiquetas en el bloque labels (fuera del bloque config).

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  labels = {
    LABEL_KEY = "LABEL_VALUE"
  }

}

Reemplaza lo siguiente:

  • LABEL_KEY por una clave de la etiqueta del entorno.
  • LABEL_VALUE por un valor de la etiqueta del entorno.

Ejemplo:

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  labels = {
    owner = "engineering-team"
    env = "production"
  }

}

¿Qué sigue?