Crear entornos de Cloud Composer

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

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

Antes de empezar

Paso 1. Crear o elegir una cuenta de servicio de un entorno

Cuando creas un entorno, especificas una cuenta de servicio. Esta cuenta de servicio se llama cuenta de servicio del entorno. Tu entorno usa esta cuenta de servicio para realizar la mayoría de las operaciones.

La cuenta de servicio de tu entorno no es una cuenta de usuario. Una cuenta de servicio es un tipo especial de cuenta que usan las aplicaciones o las instancias de máquinas virtuales (VMs), no las personas.

No puedes cambiar la cuenta de servicio de tu entorno más adelante.

Si aún no tienes una cuenta de servicio para los entornos de Cloud Composer en tu proyecto, créala.

Consulta un ejemplo más detallado de cómo crear una cuenta de servicio para tu entorno en Terraform en el artículo Crear entornos (Terraform).

Para crear una cuenta de servicio para tu entorno, sigue estos pasos:

  1. Crea una cuenta de servicio como se describe en la documentación de Gestión de Identidades y Accesos.

  2. Asigna un rol, tal como se describe en la documentación de Gestión de Identidades y Accesos. El rol necesario es Trabajador de Composer (composer.worker).

  3. Para acceder a otros recursos de tu proyecto de Google Cloud , concede permisos adicionales a esta cuenta de servicio para acceder a esos recursos. El rol Trabajador de Composer (composer.worker) proporciona este conjunto de permisos necesarios en la mayoría de los casos. Añade permisos adicionales a esta cuenta de servicio solo cuando sea necesario para el funcionamiento de tus DAGs.

Paso 2: 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 Google Cloud consola, ve a la página Crear entorno.

    Ir a Crear entorno

  2. En el campo Nombre, introduce un nombre para tu entorno.

    El nombre debe empezar por una letra minúscula, seguida de un máximo de 62 letras minúsculas, números o guiones, y no puede acabar en guion. El nombre del entorno se usa para crear subcomponentes del entorno, por lo que debes proporcionar un nombre que también sea válido como nombre de segmento de Cloud Storage. Consulta la lista de restricciones en las directrices de nomenclatura de segmentos.

  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 entorno.

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

  5. En la lista desplegable Cuenta de servicio, selecciona una cuenta de servicio para tu entorno.

    Si aún no tienes una cuenta de servicio para tu entorno, consulta el artículo Crear o elegir una cuenta de servicio para un entorno.

gcloud

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version IMAGE_VERSION \
    --service-account "SERVICE_ACCOUNT"

Sustituye:

  • ENVIRONMENT_NAME con el nombre del entorno.

    El nombre debe empezar por una letra minúscula, seguida de un máximo de 62 letras minúsculas, números o guiones, y no puede acabar en guion. El nombre del entorno se usa para crear subcomponentes del entorno, por lo que debes proporcionar un nombre que también sea válido como nombre de segmento de Cloud Storage. Consulta la lista de restricciones en las directrices de nomenclatura de segmentos.

  • LOCATION con la región para proteger el medioambiente.

    Una ubicación es la región en la que se encuentra el entorno.

  • SERVICE_ACCOUNT con la cuenta de servicio de tu entorno.

  • IMAGE_VERSION con el nombre de una imagen de Cloud Composer.

Ejemplo:

gcloud composer environments create example-environment \
    --location us-central1 \
    --image-version composer-3-airflow-2.10.5-build.11 \
    --service-account "
example-account@example-project.iam.gserviceaccount.com
"

API

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

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

Sustituye:

  • PROJECT_ID con el ID del proyecto.

  • LOCATION con la región para proteger el medioambiente.

    Una ubicación es la región en la que se encuentra el entorno.

  • ENVIRONMENT_NAME con el nombre del entorno.

    El nombre debe empezar por una letra minúscula, seguida de un máximo de 62 letras minúsculas, números o guiones, y no puede acabar en guion. El nombre del entorno se usa para crear subcomponentes del entorno, por lo que debes proporcionar un nombre que también sea válido como nombre de segmento de Cloud Storage. Consulta la lista de restricciones en las directrices de nomenclatura de segmentos.

  • IMAGE_VERSION con el nombre de una imagen de Cloud Composer.

  • SERVICE_ACCOUNT con 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": {
    "softwareConfig": {
      "imageVersion": "composer-3-airflow-2.10.5-build.11"
    },
    "nodeConfig": {
      "serviceAccount": "
example-account@example-project.iam.gserviceaccount.com
"
    }
  }
}

Terraform

Para crear un entorno con parámetros predeterminados en una ubicación específica, añade el siguiente bloque de recursos a tu 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"
    }
    node_config {
      service_account = "SERVICE_ACCOUNT"
    }
  }
}

Sustituye:

  • ENVIRONMENT_NAME con el nombre del entorno.

    El nombre debe empezar por una letra minúscula, seguida de un máximo de 62 letras minúsculas, números o guiones, y no puede acabar en guion. El nombre del entorno se usa para crear subcomponentes del entorno, por lo que debes proporcionar un nombre que también sea válido como nombre de segmento de Cloud Storage. Consulta la lista de restricciones en las directrices de nomenclatura de segmentos.

  • LOCATION con la región para proteger el medioambiente.

    Una ubicación es la región en la que se encuentra el entorno.

  • IMAGE_VERSION con el nombre de una imagen de Cloud Composer.

  • SERVICE_ACCOUNT con la cuenta de servicio de tu entorno.

Ejemplo:

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

  config {
    software_config {
      image_version = "composer-3-airflow-2.10.5-build.11"
    }
    node_config {
      service_account = "
example-account@example-project.iam.gserviceaccount.com
"
    }
  }
}

Paso 3: (Opcional) Configurar los parámetros de rendimiento y escala del entorno

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

Puedes cambiar todos los parámetros de rendimiento y de escala después de crear un entorno.

Los siguientes parámetros controlan la escala y el rendimiento:

  • Tamaño del entorno. Controla los parámetros de rendimiento de la infraestructura gestionada de Cloud Composer, que incluye la base de datos de Airflow. Si quieres ejecutar un gran número de DAGs y tareas con un mayor rendimiento de la infraestructura, te recomendamos que selecciones un tamaño de entorno más grande. Por ejemplo, si el entorno es más grande, aumenta el número de entradas de registro de tareas de Airflow que puede procesar con un retraso mínimo.

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

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

      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 y así mejorar el rendimiento y la fiabilidad.

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

      Te recomendamos que empieces con dos programadores y, después, monitorices el rendimiento de tu entorno. Si cambias el número de programadores, siempre puedes volver a ajustar tu entorno al número original de programadores.

      Para obtener más información sobre cómo configurar varias programaciones, consulta la documentación de Airflow.

    • Activador de flujo de aire. Monitoriza de forma asíncrona todas las tareas aplazadas de 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 aplazables en tus DAGs.

      En Cloud Composer 3, el activador de Airflow está habilitado de forma predeterminada. Si quieres crear un entorno sin activador, define el número de activadores en cero.

    • Procesador de DAGs de Airflow. Procesa archivos DAG y los convierte en objetos DAG. En Cloud Composer 3, esta parte del programador se ejecuta como un componente de entorno independiente.

    • Servidor web de Airflow. Ejecuta la interfaz web de Airflow, donde puedes monitorizar, gestionar y visualizar tus DAGs.

    • Trabajadores de Airflow. Ejecuta las tareas programadas por los programadores de Airflow. El número mínimo y máximo de trabajadores de tu entorno cambia de forma dinámica en función del número de tareas de la cola.

Consola

Puedes seleccionar un preajuste para tu entorno. Cuando seleccionas un preajuste, se eligen automáticamente los parámetros de escala y rendimiento correspondientes. También puede seleccionar un preajuste personalizado y especificar todos los parámetros de escala y rendimiento de su entorno.

Para seleccionar la configuración de escala y rendimiento de tu entorno, en la página Crear entorno, haz lo siguiente:

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

  • Para especificar valores personalizados para los parámetros de escala y rendimiento, sigue estos pasos:

    1. En la sección Recursos del entorno, haga clic en Personalizado.

    2. En la sección Programador, define el número de programadores que quieras usar y la asignación de recursos para su CPU, memoria y almacenamiento.

    3. En la sección Activador, usa el campo Número de activadores para introducir el número de activadores de tu entorno.

      Si no quieres usar operadores aplazables en tus DAGs, define el número de activadores en cero.

      Si has definido 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 Procesador de DAGs, especifica el número de procesadores de DAGs de tu entorno y la cantidad de CPUs, memoria y almacenamiento de cada procesador de DAGs.

      Los entornos de alta resiliencia requieren al menos dos procesadores DAG.

    5. En la sección Servidor web, especifica la cantidad de CPUs, memoria y almacenamiento del servidor web.

    6. En la sección Trabajador, especifica lo siguiente:

      • El número mínimo y máximo de trabajadores para los límites de autoescalado de tu entorno.
      • La asignación de CPU, memoria y almacenamiento de tus trabajadores
    7. En la sección Infraestructura principal, en la lista desplegable Tamaño del entorno, selecciona el tamaño del entorno.

gcloud

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

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

  • --triggerer-count especifica el número de activadores de Airflow de tu entorno. El valor predeterminado de esta marca es 0. Necesitas activadores si quieres usar operadores aplazables en tus DAGs.

    • En los entornos de resiliencia estándar, utiliza un valor entre 0 y 10.
    • En entornos de alta resiliencia, usa 0 o un valor entre 2 y 10.
  • --triggerer-cpu especifica el número de CPUs de un activador de Airflow, en unidades de vCPU. Valores permitidos: 0.5, 0.75 y 1. El valor predeterminado es 0.5.

  • --triggerer-memory especifica la cantidad de memoria de un activador de Airflow, en GB. El valor predeterminado es 0.5.

    La memoria mínima necesaria es igual al número de CPUs asignadas a los activadores. El valor máximo permitido es igual al número de CPUs de activador multiplicado por 6,5.

    Por ejemplo, si asigna el valor 1 a la marca --triggerer-cpu, el valor mínimo de --triggerer-memory será 1 y el valor máximo será 6.5.

  • --dag-processor-count especifica el número de procesadores de DAG de tu entorno.

    Los entornos de alta resiliencia requieren al menos dos procesadores DAG.

  • --dag-processor-cpu especifica el número de CPUs del procesador de DAG.

  • --dag-processor-memory especifica la cantidad de memoria del procesador de DAG.

  • --dag-processor-storage especifica la cantidad de espacio en disco del procesador DAG.

  • --web-server-cpu especifica el número de CPUs del servidor web de Airflow.

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

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

  • --worker-cpu especifica el número de CPUs de un trabajador de Airflow.

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

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

  • --min-workers especifica el número mínimo de trabajadores de Airflow. El clúster de tu entorno ejecuta al menos este número de trabajadores.

  • --max-workers especifica el número máximo de trabajadores de Airflow. El clúster de tu entorno ejecuta como máximo este número de trabajadores.

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-3-airflow-2.10.5-build.11 \
    --service-account "SERVICE_ACCOUNT" \
    --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 \
    --dag-processor-count DAG_PROCESSOR_COUNT \
    --dag-processor-cpu DAG_PROCESSOR_CPU \
    --dag-processor-memory DAG_PROCESSOR_MEMORY \
    --dag-processor-storage DAG_PROCESSOR_STORAGE \
    --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

Sustituye:

  • ENVIRONMENT_SIZE con small, medium o large.
  • SCHEDULER_COUNT con el número de programadores.
  • SCHEDULER_CPU con el número de CPUs de un programador, en unidades de vCPU.
  • SCHEDULER_MEMORY con la cantidad de memoria de un programador.
  • SCHEDULER_STORAGE con el tamaño del disco de un programador.
  • TRIGGERER_COUNT con el número de activadores.
  • TRIGGERER_CPU con el número de CPUs de un activador, en unidades de vCPU.
  • TRIGGERER_MEMORY con la cantidad de memoria de un activador, en GB.

  • DAG_PROCESSOR_COUNT con el número de procesadores de DAG.

  • DAG_PROCESSOR_CPU con el número de CPUs del procesador de DAG.

  • DAG_PROCESSOR_MEMORY con la cantidad de memoria del procesador de DAG.

  • DAG_PROCESSOR_STORAGE con la cantidad de espacio en disco del procesador DAG.

  • WEB_SERVER_CPU con el número de CPUs del servidor web, en unidades de vCPU.

  • WEB_SERVER_MEMORY con la cantidad de memoria del servidor web.

  • WEB_SERVER_STORAGE con la cantidad de memoria del servidor web.

  • WORKER_CPU con el número de CPUs de un trabajador, en unidades de vCPU.

  • WORKER_MEMORY con la cantidad de memoria de un trabajador.

  • WORKER_STORAGE con el tamaño del disco de un trabajador.

  • WORKERS_MIN con el número mínimo de trabajadores de Airflow que puede ejecutar tu entorno. El número de trabajadores de tu entorno no supera este número, aunque un número inferior de trabajadores pueda gestionar la carga.

  • WORKERS_MAX con el número máximo de trabajadores de Airflow que puede ejecutar tu entorno. El número de trabajadores de tu entorno no supera este número, aunque se necesite un número mayor para gestionar la carga.

Ejemplo:

gcloud composer environments create example-environment \
    --location us-central1 \
    --image-version composer-3-airflow-2.10.5-build.11 \
    --service-account "
example-account@example-project.iam.gserviceaccount.com
" \
    --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 \
    --dag-processor-count 1 \
    --dag-processor-cpu 0.5 \
    --dag-processor-memory 2GB \
    --dag-processor-storage 1GB \
    --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 escala 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
      },
      "dagProcessor": {
        "count": DAG_PROCESSOR_COUNT,
        "cpu": DAG_PROCESSOR_CPU,
        "memoryGb": DAG_PROCESSOR_MEMORY,
        "storageGb": DAG_PROCESSOR_STORAGE
      },
      "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",
    "nodeConfig": {
      "serviceAccount": "SERVICE_ACCOUNT"
    }
  }
}

Sustituye:

  • SCHEDULER_CPU con el número de CPUs de un programador, en unidades de vCPU.
  • SCHEDULER_MEMORY con la cantidad de memoria de un programador, en GB.
  • SCHEDULER_STORAGE con el tamaño del disco de un programador, en GB.
  • SCHEDULER_COUNT con el número de programadores.

  • TRIGGERER_COUNT con el número de activadores. El valor predeterminado es 0. Necesitas activadores si quieres usar operadores aplazables en tus DAGs.

    • En los entornos de resiliencia estándar, utiliza un valor entre 0 y 10.
    • En 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 especifica el número de CPUs de un activador en unidades de vCPU. Valores permitidos: 0.5, 0.75 y 1.

  • TRIGGERER_MEMORY configura la cantidad de memoria de un activador. La memoria mínima necesaria es igual al número de CPUs asignadas a los activadores. El valor máximo permitido es igual al número de CPUs de activador multiplicado por 6,5.

    Por ejemplo, si asigna el valor 1 a TRIGGERER_CPU, el valor mínimo de TRIGGERER_MEMORY será 1 y el valor máximo será 6.5.

  • DAG_PROCESSOR_COUNT con el número de procesadores de DAG.

    Los entornos de alta resiliencia requieren al menos dos procesadores DAG.

  • DAG_PROCESSOR_CPU con el número de CPUs del procesador de DAGs, en unidades de vCPU.

  • DAG_PROCESSOR_MEMORY con la cantidad de memoria del procesador DAG, en GB.

  • DAG_PROCESSOR_STORAGE con la cantidad de espacio en disco del procesador DAG, en GB.

  • WEB_SERVER_CPU con el número de CPUs del servidor web, en unidades de vCPU.

  • WEB_SERVER_MEMORY con la cantidad de memoria del servidor web, en GB.

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

  • WORKER_CPU con el número de CPUs de un trabajador, en unidades de vCPU.

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

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

  • WORKERS_MIN con el número mínimo de trabajadores de Airflow que puede ejecutar tu entorno. El número de trabajadores de tu entorno no supera este número, aunque un número inferior de trabajadores pueda gestionar la carga.

  • WORKERS_MAX con el número máximo de trabajadores de Airflow que puede ejecutar tu entorno. El número de trabajadores de tu entorno no supera este número, aunque se necesite un número mayor para gestionar la carga.

  • ENVIRONMENT_SIZE con 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
      },
      "dagProcessor": {
        "count": 1,
        "cpu": 0.5,
        "memoryGb": 2,
        "storageGb": 1
      },
      "webServer": {
        "cpu": 1,
        "memoryGb": 2.5,
        "storageGb": 2
      },
      "worker": {
        "cpu": 1,
        "memoryGb": 2,
        "storageGb": 2,
        "minCount": 2,
        "maxCount": 4
      }
    },
    "environmentSize": "ENVIRONMENT_SIZE_SMALL",
    "nodeConfig": {
      "serviceAccount": "
example-account@example-project.iam.gserviceaccount.com
"
    }
  }
}

Terraform

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

  • En el bloque config:

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

    • El campo scheduler.cpu especifica el número de CPUs de un programador de Airflow.
    • El campo scheduler.memory_gb especifica la cantidad de memoria de un programador de Airflow.
    • El campo scheduler.storage_gb especifica la cantidad de espacio en disco de un programador.
    • El campo scheduler.count especifica el número de programadores de tu entorno.
    • El campo triggerer.cpu especifica el número de CPUs de un activador de Airflow.
    • El campo triggerer.memory_gb especifica la cantidad de memoria de un activador de Airflow.
    • El campo triggerer.count especifica el número de activadores de tu entorno.

    • El campo dag_processor.cpu especifica el número de CPUs de un procesador DAG.

    • El campo dag_processor.memory_gb especifica la cantidad de memoria de un procesador de DAG.

    • El campo dag_processor.storage_gb especifica la cantidad de espacio en disco de un procesador de DAG.

    • El campo dag_processor.count especifica el número de procesadores de DAG.

      Los entornos de alta resiliencia requieren al menos dos procesadores DAG.

    • El campo web_server.cpu especifica el número de CPUs del servidor web de Airflow.

    • El campo web_server.memory_gb especifica la cantidad de memoria del servidor web de Airflow.

    • El campo web_server.storage_gb especifica la cantidad de espacio en disco del servidor web de Airflow.

    • El campo worker.cpu especifica el número de CPUs de un trabajador de Airflow.

    • El campo worker.memory_gb especifica la cantidad de memoria de un trabajador de Airflow.

    • El campo worker.storage_gb especifica la cantidad de espacio en disco de un trabajador de Airflow.

    • El campo worker.min_count especifica el número mínimo de trabajadores de tu entorno.

    • El campo worker.max_count especifica el número máximo de trabajadores de 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
      }
      dag_processor {
        cpu = DAG_PROCESSOR_CPU
        memory_gb = DAG_PROCESSOR_MEMORY
        storage_gb = DAG_PROCESSOR_STORAGE
        count = DAG_PROCESSOR_COUNT
      }
      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"

    node_config {
      service_account = "SERVICE_ACCOUNT"
    }
  }
}

Sustituye:

  • ENVIRONMENT_NAME con el nombre del entorno.
  • LOCATION con la región en la que se encuentra el entorno.
  • SERVICE_ACCOUNT con la cuenta de servicio de tu entorno.
  • SCHEDULER_CPU con el número de CPUs de un programador, en unidades de vCPU.
  • SCHEDULER_MEMORY con la cantidad de memoria de un programador, en GB.
  • SCHEDULER_STORAGE con el tamaño del disco de un programador, en GB.
  • SCHEDULER_COUNT con el número de programadores.
  • TRIGGERER_COUNT con el número de activadores.
  • TRIGGERER_CPU con el número de CPUs de un activador, en unidades de vCPU.
  • TRIGGERER_MEMORY con la cantidad de memoria de un activador, en GB.

  • DAG_PROCESSOR_CPU con el número de CPUs del procesador de DAGs, en unidades de vCPU.

  • DAG_PROCESSOR_MEMORY con la cantidad de memoria del procesador DAG, en GB.

  • DAG_PROCESSOR_STORAGE con la cantidad de espacio en disco del procesador DAG, en GB.

  • DAG_PROCESSOR_COUNT con el número de procesadores de DAG.

  • WEB_SERVER_CPU con el número de CPUs del servidor web, en unidades de vCPU.

  • WEB_SERVER_MEMORY con la cantidad de memoria del servidor web, en GB.

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

  • WORKER_CPU con el número de CPUs de un trabajador, en unidades de vCPU.

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

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

  • WORKERS_MIN con el número mínimo de trabajadores de Airflow que puede ejecutar tu entorno. El número de trabajadores de tu entorno no supera este número, aunque un número inferior de trabajadores pueda gestionar la carga.

  • WORKERS_MAX con el número máximo de trabajadores de Airflow que puede ejecutar tu entorno. El número de trabajadores de tu entorno no supera este número, aunque se necesite un número mayor para gestionar la carga.

  • ENVIRONMENT_SIZE con 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
      }
      dag_processor {
        cpu = 1
        memory_gb = 2
        storage_gb = 1
        count = 1
    }
      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"

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

  }
}

Paso 4: (Opcional) Habilita el modo de alta resiliencia

Alta resiliencia (alta disponibilidad) Los entornos de Cloud Composer son entornos que usan mecanismos de redundancia y conmutación por error integrados que reducen la susceptibilidad del entorno a los fallos zonales y a las interrupciones por un único punto de fallo.

Un entorno de alta resiliencia es multizonal y se ejecuta en al menos dos zonas de una región seleccionada. Los siguientes componentes se ejecutan en zonas independientes:

El número mínimo de trabajadores es dos y el clúster de tu entorno distribuye las instancias de trabajador entre las zonas. En caso de interrupción zonal, las instancias de trabajador afectadas se reprograman en otra zona. El componente de Cloud SQL de un entorno de alta resiliencia tiene una instancia principal y una instancia de espera que se distribuyen entre zonas.

Consola

En la página Crear entorno, haz lo siguiente:

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

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

    1. Haz clic en Custom (Personalizada).

    2. En la lista desplegable Número de programadores, selecciona 2.

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

    4. En la lista desplegable Número mínimo de trabajadores, selecciona 2 o más, en función del número de trabajadores que necesites.

  3. En la sección Configuración de red:

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

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

gcloud

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

Define los siguientes argumentos:

  • --enable-high-resilience
  • --enable-private-environment y otros parámetros de red para un entorno de IP privada, si es necesario
  • De --scheduler-count a 2
  • --triggerer-count a 0 o un valor entre 2 y 10. Si usas activadores, también se necesitan las marcas --triggerer-cpu and--triggerer-memory` para crear el entorno.

    Para obtener más información sobre las marcas --triggerer-count, --triggerer-cpu y --triggerer-memory, consulta Configurar los parámetros de rendimiento y escala del entorno.

  • De --min-workers a 2 o más

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-3-airflow-2.10.5-build.11 \
    --service-account "SERVICE_ACCOUNT" \
    --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 Environment > EnvironmentConfig, habilita el modo de alta resistencia.

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

  }
}

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",
    "nodeConfig": {
      "serviceAccount": "
example-account@example-project.iam.gserviceaccount.com
"
    }

  }
}

Terraform

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

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

  config {

    resilience_mode = "HIGH_RESILIENCE"

    node_config {
      service_account = "SERVICE_ACCOUNT"
    }

  }
}

Ejemplo:

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

  config {

    resilience_mode = "HIGH_RESILIENCE"

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

Paso 5: (Opcional) Especifica una zona para la base de datos del entorno

Puede especificar una zona de Cloud SQL preferida al crear un entorno de resiliencia estándar.

Consola

En la página Crear entorno, haz lo siguiente:

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

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

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-3-airflow-2.10.5-build.11 \
    --service-account "SERVICE_ACCOUNT" \
    --cloud-sql-preferred-zone SQL_ZONE

Haz los cambios siguientes:

  • SQL_ZONE: 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-3-airflow-2.10.5-build.11 \
    --service-account "
example-account@example-project.iam.gserviceaccount.com
" \
    --cloud-sql-preferred-zone us-central1-a

API

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

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

Haz los cambios siguientes:

  • SQL_ZONE: 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"
    },
    "nodeConfig": {
      "serviceAccount": "
example-account@example-project.iam.gserviceaccount.com
"
    }
  }
}

Terraform

Cuando creas un entorno, el campo zone del 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"
    }

    node_config {
      service_account = "SERVICE_ACCOUNT"
    }
  }
}

Haz los cambios siguientes:

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

Paso 6: (Opcional) Configurar la red de tu entorno

Puedes configurar la red de Cloud Composer 3 de las siguientes formas:

  • En un entorno de IP pública, los componentes de Airflow de tu entorno pueden acceder a Internet.
  • En un entorno de IP privada, los componentes de Airflow de tu entorno no tienen acceso a Internet.
  • Los entornos de IP privada e IP pública pueden conectarse a tu red de VPC como una opción independiente.
  • Puedes especificar el intervalo de IPs internas de tu entorno. Este intervalo no se puede cambiar más adelante.
  • Puedes habilitar el acceso a Internet al instalar paquetes de PyPI. Por ejemplo, tu entorno de IP privada puede seguir instalando paquetes PyPI desde Python Package Index si habilitas esta opción.

  • En un entorno de VPC compartida, debes realizar una configuración de red adicional en el proyecto host y, a continuación, crear un entorno de IP pública o privada en un proyecto de servicio. Sigue las instrucciones de la página Configurar una VPC compartida.

Consola

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

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

  3. Si quieres conectar tu entorno a una red de VPC, selecciona un adjunto de red en el campo Adjunto de red. También puedes crear un nuevo archivo adjunto de red. Para obtener más información, consulta Conectar un entorno a una red de VPC.

  4. Si quieres crear un entorno de IP privada, en la sección Tipo de red, selecciona la opción Entorno de IP privada.

  5. Si quiere añadir etiquetas de red, consulte Añadir etiquetas de red para obtener más información.

gcloud

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

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

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

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

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

Ejemplo (entorno de IP privada con una red VPC conectada)

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-3-airflow-2.10.5-build.11 \
    --service-account "SERVICE_ACCOUNT" \
    --enable-private-environment \
    --network NETWORK_ID \
    --subnetwork SUBNETWORK_ID \

Sustituye:

  • NETWORK_ID con el ID de tu red de VPC.
  • SUBNETWORK_ID con el ID de tu subred de VPC.

7. (Opcional) Añadir etiquetas de red

Las etiquetas de red se aplican a todas las VMs de nodo del clúster de tu entorno. Las etiquetas sirven para identificar los orígenes o los destinos válidos en los cortafuegos de la red. Cada etiqueta de la lista debe cumplir la RFC 1035.

Por ejemplo, puede añadir etiquetas de red si tiene previsto restringir el tráfico de un entorno de IP privada con reglas de cortafuegos.

Consola

En la página Crear entorno, haz lo siguiente:

  1. Busca la sección Configuración de red.
  2. En el campo Etiquetas de red, introduce las etiquetas de red de 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 VMs de nodo.
gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-3-airflow-2.10.5-build.11 \
    --service-account "SERVICE_ACCOUNT" \
    --tags TAGS

Sustituye:

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

Ejemplo:

gcloud composer environments create example-environment \
    --location us-central1 \
    --image-version composer-3-airflow-2.10.5-build.11 \
    --tags group1,production

API

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

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

Sustituye:

  • TAG con 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"
      ],
      "serviceAccount": "
example-account@example-project.iam.gserviceaccount.com
"
    }
  }
}

Terraform

Cuando creas un entorno, los siguientes campos definen las etiquetas de red de tu entorno:

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

  config {

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

Sustituye:

  • TAGS con 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"]
      service_account = "
example-account@example-project.iam.gserviceaccount.com
"
    }
  }
}

Paso 8: (Opcional) Configurar el acceso a la red del servidor web

Los parámetros de acceso al servidor web de Airflow no dependen del tipo de entorno. En su lugar, puedes configurar el acceso al servidor web por separado. Por ejemplo, un entorno de IP privada puede seguir teniendo la interfaz de usuario de Airflow accesible desde Internet.

No puedes configurar los intervalos de IP permitidos con direcciones IP privadas.

Consola

En la página Crear entorno, haz lo siguiente:

  1. En la sección Configuración de red, despliega 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 Airflow desde todas las direcciones IP, selecciona Permitir acceso desde todas las direcciones IP.

    • Para restringir el acceso solo a intervalos de IP específicos, selecciona Permitir el acceso solo desde direcciones IP específicas. En el campo Intervalo de IP, especifica un intervalo de IP en notación CIDR. En el campo Descripción, especifica una descripción opcional para este intervalo. Si quiere especificar más de un intervalo, haga clic en Añadir intervalo de IPs.

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

gcloud

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

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

  • --web-server-allow-ip restringe el acceso solo a intervalos de IP de origen específicos. Para especificar varios intervalos 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-3-airflow-2.10.5-build.11 \
    --web-server-allow-ip ip_range=WS_IP_RANGE,description=WS_RANGE_DESCRIPTION

Sustituye:

  • WS_IP_RANGE con el intervalo de IP, en notación CIDR, que puede acceder a la interfaz de usuario de Airflow.
  • WS_RANGE_DESCRIPTION con la descripción del intervalo de IPs.

Ejemplo:

gcloud composer environments create example-environment \
    --location us-central1 \
    --image-version composer-3-airflow-2.10.5-build.11 \
    --service-account "
example-account@example-project.iam.gserviceaccount.com
" \
    --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 crees un entorno, en el recurso Environment > EnvironmentConfig, especifica los parámetros de acceso al servidor web.

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

  • Para restringir el acceso solo a intervalos de IP específicos, especifica uno o varios intervalos en allowedIpRanges.

  • Para prohibir el acceso a todas las direcciones IP, añade allowedIpRanges y crea una lista vacía. No especifique intervalos de IP.

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

Sustituye:

  • WS_IP_RANGE con el intervalo de IP, en notación CIDR, que puede acceder a la interfaz de usuario de Airflow.
  • WS_RANGE_DESCRIPTION con la descripción del intervalo de IPs.

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"
        }
      ]
    },
      "nodeConfig": {
        "serviceAccount": "
example-account@example-project.iam.gserviceaccount.com
"
    }
  }
}

Terraform

Cuando creas un entorno, el bloque allowed_ip_range del bloque web_server_network_access_control contiene intervalos de IPs 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"
      }
    }

    node_config {
      service_account = "SERVICE_ACCOUNT"
    }
  }
}

Sustituye:

  • WS_IP_RANGE con el intervalo de IP, en notación CIDR, que puede acceder a la interfaz de usuario de Airflow.
  • WS_RANGE_DESCRIPTION con la descripción del intervalo de IPs.

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"
      }
    }

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

}

Paso 9: (Opcional) Especificar anulaciones de configuración de Airflow y variables de entorno

Puedes configurar anulaciones de configuración de Airflow y variables de entorno al crear un entorno. También puedes hacerlo más adelante, una vez que se haya creado el entorno.

Algunas opciones de configuración de Airflow están bloqueadas y no se pueden anular.

Para ver la lista de opciones de configuración de Airflow disponibles, consulta la referencia de configuración de 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, haz lo siguiente:

  1. En la sección Variables de entorno, haz clic en Añadir variable de entorno.

  2. Introduce el nombre y el valor de la variable de entorno.

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

  4. Introduce la sección, la clave y el valor de la opción de configuración que quieras anular.

    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 de variables de entorno separada por comas.

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

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

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-3-airflow-2.10.5-build.11 \
    --service-account "SERVICE_ACCOUNT" \
    --env-variables ENV_VARS \
    --airflow-configs CONFIG_OVERRIDES

Sustituye:

  • ENV_VARS con una lista de pares NAME=VALUE separados por comas para las variables de entorno.
  • CONFIG_OVERRIDES con una lista de SECTION-KEY=VALUE pares separados por comas para las anulaciones de configuración. Separa el nombre de la sección de configuración con el 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-3-airflow-2.10.5-build.11 \
    --service-account "
example-account@example-project.iam.gserviceaccount.com
" \
    --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 Environment > 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",
      }
    },
    "nodeConfig": {
      "serviceAccount": "SERVICE_ACCOUNT"
    }
  }
}

Sustituye:

  • SECTION con la sección del archivo de configuración en la que se encuentra la opción de configuración de Airflow.
  • KEY con el nombre de la opción de configuración de Airflow.
  • OVERRIDE_VALUE con el valor de la opción de configuración de Airflow.
  • VAR_NAME con el nombre de la variable de entorno.
  • VAR_VALUE con 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"
      }
    },
    "nodeConfig": {
        "serviceAccount": "
example-account@example-project.iam.gserviceaccount.com
"
    }
  }
}

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 del bloque software_config especifica las variables de entorno.

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

  • El bloque airflow_config_overrides del bloque software_config especifica 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"
      }
    }

    node_config {
      service_account = "SERVICE_ACCOUNT"
    }

  }
}

Sustituye:

  • SECTION con la sección del archivo de configuración en la que se encuentra la opción de configuración de Airflow.
  • KEY con el nombre de la opción de configuración de Airflow.
  • OVERRIDE_VALUE con el valor de la opción de configuración de Airflow.
  • VAR_NAME con el nombre de la variable de entorno.
  • VAR_VALUE con 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"
      }
    }

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

10. (Opcional) Especificar ventanas de mantenimiento

Las ventanas de mantenimiento predeterminadas de Cloud Composer 3 se definen de la siguiente manera:

  • Todas las horas corresponden a la zona horaria local de la región en la que se encuentra tu entorno, pero sin tener en cuenta el cambio de horario de verano.
  • Las ventanas de mantenimiento de los martes, miércoles, jueves y viernes son de 00:00:00 a 02:00:00.
  • Los sábados, domingos y lunes, las ventanas de mantenimiento son de 00:00:00 a 04:00:00.

Para especificar ventanas de mantenimiento personalizadas en tu entorno, sigue estos pasos:

Consola

En la página Crear entorno

  1. Busca la sección Ventanas de mantenimiento.

  2. En la lista desplegable Zona horaria, elige una zona horaria para las ventanas de mantenimiento.

  3. Define Hora de inicio, Días y Duración de la siguiente manera:

    • Se asignan al menos 12 horas en una sola semana.

    • Puedes usar varias franjas horarias, pero cada una debe durar al menos 4 horas.

    Por ejemplo, un periodo de 4 horas todos los lunes, miércoles y viernes proporciona la cantidad de tiempo necesaria.

gcloud

Los siguientes argumentos definen los parámetros de las ventanas de mantenimiento:

  • --maintenance-window-start define la hora de inicio de una ventana de mantenimiento.
  • --maintenance-window-end define la hora de finalización de una ventana de mantenimiento.
  • --maintenance-window-recurrence define la recurrencia de la ventana de mantenimiento.
gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-3-airflow-2.10.5-build.11 \
    --service-account "SERVICE_ACCOUNT" \
    --maintenance-window-start 'DATETIME_START' \
    --maintenance-window-end 'DATETIME_END' \
    --maintenance-window-recurrence 'MAINTENANCE_RECURRENCE'

Sustituye:

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

  • El formato FREQ=DAILY especifica una repetición diaria.

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

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

gcloud composer environments create example-environment \
  --location us-central1 \
  --image-version composer-3-airflow-2.10.5-build.11 \
  --service-account "
example-account@example-project.iam.gserviceaccount.com
" \
  --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 creas un entorno, en el recurso Environment > EnvironmentConfig, especifica los parámetros de las ventanas de mantenimiento:

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

Sustituye:

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

  • El formato FREQ=DAILY especifica una repetición diaria.

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

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

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"
    },
    "nodeConfig": {
      "serviceAccount": "SERVICE_ACCOUNT"
    }
  }
}

Terraform

El bloque maintenance_window especifica las ventanas de mantenimiento de tu 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"
    }

    node_config {
      service_account = "SERVICE_ACCOUNT"
    }
  }
}

Sustituye:

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

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

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

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 11. (Opcional) Integración del linaje de datos

El linaje de datos es una función de Dataplex Universal Catalog que te permite monitorizar el movimiento de los datos.

La integración del linaje de datos está disponible en todas las versiones de Cloud Composer 3.

La integración del linaje de datos se habilita automáticamente en un nuevo entorno de Cloud Composer si se cumplen las siguientes condiciones:

  • La API Data Lineage está habilitada en tu proyecto. Para obtener más información, consulta el artículo Habilitar la API Data Lineage de la documentación de Dataplex Universal Catalog.

  • No se ha configurado ningún backend de linaje personalizado en Airflow.

Puede inhabilitar la integración del linaje de datos al crear un entorno. Por ejemplo, si quieres anular el comportamiento automático o habilitar el linaje de datos más adelante, después de crear el entorno.

Consola

Para inhabilitar la integración de linaje de datos, en la página Crear entorno, haz lo siguiente:

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

  2. En la sección Integración del linaje de datos de Dataplex, seleccione Inhabilitar la integración con el linaje de datos de Dataplex.

gcloud

Cuando creas un entorno, el argumento --disable-cloud-data-lineage-integration inhabilita la integración del linaje de datos.

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-3-airflow-2.10.5-build.11 \
    --service-account "SERVICE_ACCOUNT" \
    --disable-cloud-data-lineage-integration

Sustituye:

  • ENVIRONMENT_NAME con el nombre del entorno.
  • LOCATION con la región en la que se encuentra el entorno.

Ejemplo:

gcloud composer environments create example-environment \
    --location us-central1 \
    --image-version composer-3-airflow-2.10.5-build.11 \
    --service-account "
example-account@example-project.iam.gserviceaccount.com
" \
    --disable-cloud-data-lineage-integration

Paso 12. (Opcional) Configurar el cifrado de datos (CMEK)

De forma predeterminada, los datos de tu entorno se cifran con una clave proporcionada por Google.

Para usar claves de cifrado gestionadas por el cliente (CMEK) para cifrar datos en tu entorno, sigue las instrucciones que se indican en el artículo Usar claves de cifrado gestionadas por el cliente.

Paso 13. (Opcional) Usar el segmento de un entorno personalizado

Cuando creas un entorno, Cloud Composer crea automáticamente un segmento para tu entorno.

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

Para usar un bucket de entorno personalizado, sigue las instrucciones que se indican en Usar el bucket de un entorno personalizado.

Paso 14. (Opcional) Configurar la conservación de la base de datos

Si habilitas la conservación de bases de datos en tu entorno, Cloud Composer eliminará periódicamente de la base de datos de Airflow los registros relacionados con las ejecuciones de DAG y las sesiones de usuario que sean anteriores al periodo especificado. La información de la ejecución de DAG más reciente se conserva siempre.

De forma predeterminada, la retención de bases de datos está habilitada. Para configurar el periodo de conservación de un nuevo entorno o inhabilitar la conservación de la base de datos, sigue las instrucciones que se indican en Configurar la política de conservación de la base de datos. También puedes configurar la retención de la base de datos más adelante.

Paso 15. (Opcional) Especificar etiquetas de entorno

Puede asignar etiquetas a sus entornos para desglosar los costes de facturación en función de estas etiquetas.

Consola

En la página Crear entorno, vaya a la sección Etiquetas:

  1. Haz clic en Añadir etiqueta.

  2. En los campos Clave y Valor, especifique pares de clave y valor para las etiquetas de entorno.

gcloud

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

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-3-airflow-2.10.5-build.11 \
    --service-account "SERVICE_ACCOUNT" \
    --labels LABELS

Sustituye:

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

Ejemplo:

gcloud composer environments create example-environment \
    --location us-central1 \
    --image-version composer-3-airflow-2.10.5-build.11 \
    --service-account "
example-account@example-project.iam.gserviceaccount.com
" \
    --labels owner=engineering-team,env=production

API

Cuando crees un entorno, en el recurso Environment, especifica las etiquetas del entorno.

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

Sustituye:

  • LABEL_KEY con una clave de la etiqueta del entorno.
  • LABEL_VALUE con el 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 crees un entorno, especifica las 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"
  }

}

Sustituye:

  • LABEL_KEY con una clave de la etiqueta del entorno.
  • LABEL_VALUE con el 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"
  }

}

Siguientes pasos