Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
En esta página, se explica cómo crear un entorno de Cloud Composer.
- Para obtener más información sobre los entornos, consulta Arquitectura del entorno.
- Si deseas obtener más información para crear un entorno con Terraform, consulta Crea entornos (Terraform).
Antes de comenzar
Habilitar la API de Cloud Composer. Para obtener la lista completa de los servicios que usa Cloud Composer, consulta Servicios requeridos por Cloud Composer.
El tiempo aproximado para crear un entorno es de 25 minutos.
Si creas un entorno con Terraform, la cuenta de servicio que usa Terraform debe tener una función con el permiso
composer.environments.createhabilitado.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.
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: Crea o elige una cuenta de servicio del entorno
Cuando creas un entorno, especificas una cuenta de servicio. Esta cuenta de servicio se denomina 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 usa una aplicación o una instancia de máquina virtual (VM), no una persona.
Luego, no puedes cambiar la cuenta de servicio de tu entorno.
Si aún no tienes una cuenta de servicio para los entornos de Cloud Composer en tu proyecto, créala.
Consulta Crea entornos (Terraform) para ver un ejemplo extendido de cómo crear una cuenta de servicio para tu entorno en Terraform.
Para crear una cuenta de servicio nueva para tu entorno, sigue estos pasos:
Crea una cuenta de servicio nueva como se describe en la documentación de Identity and Access Management.
Otorga un rol, como se describe en la documentación de Identity and Access Management. El rol requerido es Trabajador de Composer (
composer.worker).Para acceder a otros recursos en tu proyecto Google Cloud , otorga permisos adicionales a esta cuenta de servicio para acceder a esos recursos. En la mayoría de los casos, el rol Trabajador de Composer (
composer.worker) proporciona este conjunto de permisos necesarios. Agrega 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.
Console
En la consola de Google Cloud , ve a la página Crear entorno.
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.
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.
En la lista desplegable Versión de la imagen, selecciona una imagen de Cloud Composer con la versión requerida de Airflow.
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 Cómo crear o elegir una cuenta de servicio para el entorno.
gcloud
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version IMAGE_VERSION \
--service-account "SERVICE_ACCOUNT"
Reemplaza lo siguiente:
ENVIRONMENT_NAMEpor 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.
LOCATIONpor la región del entorno.Una ubicación es la región en la que se encuentra el entorno.
SERVICE_ACCOUNTpor la cuenta de servicio de tu entorno.IMAGE_VERSIONpor 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.16 \
--service-account "
example-account@example-project.iam.gserviceaccount.com
"
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"
},
"nodeConfig": {
"serviceAccount": "SERVICE_ACCOUNT"
}
}
}
Reemplaza lo siguiente:
PROJECT_IDpor el ID del proyecto.LOCATIONpor la región del entorno.Una ubicación es la región en la que se encuentra el entorno.
ENVIRONMENT_NAMEpor 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_VERSIONpor el nombre de una imagen de Cloud ComposerSERVICE_ACCOUNTpor 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.16"
},
"nodeConfig": {
"serviceAccount": "
example-account@example-project.iam.gserviceaccount.com
"
}
}
}
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"
}
node_config {
service_account = "SERVICE_ACCOUNT"
}
}
}
Reemplaza lo siguiente:
ENVIRONMENT_NAMEpor 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.
LOCATIONpor la región del entorno.Una ubicación es la región en la que se encuentra el entorno.
IMAGE_VERSIONpor el nombre de una imagen de Cloud ComposerSERVICE_ACCOUNTpor 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.16"
}
node_config {
service_account = "
example-account@example-project.iam.gserviceaccount.com
"
}
}
}
Paso 3: 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.
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 con un mayor rendimiento de la infraestructura. Por ejemplo, un entorno más grande aumenta la cantidad de entradas de registro de tareas de Airflow que tu entorno puede procesar con una demora mínima.
Configuración de las cargas de trabajo: Controla el escalamiento 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 del DAG, programa las 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.
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 altamente resilientes), puedes usar operadores diferibles en tus DAGs.
En Cloud Composer 3, el activador de Airflow está habilitado de forma predeterminada. Si deseas crear un entorno sin activador, establece la cantidad de activadores en cero.
Procesador de DAG de Airflow: Procesa archivos de 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, 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.
Console
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:
En la sección Recursos del entorno, haz clic en Personalizados.
En la sección Scheduler, configura la cantidad de programadores que deseas usar y la asignación de recursos para su CPU, memoria y almacenamiento.
En la sección Activador, usa el campo Cantidad de activadores para ingresar la cantidad de activadores en tu entorno.
Si no quieres usar operadores diferibles en tus DAG, establece la cantidad de activadores en cero.
Si estableces al menos un activador para tu entorno, usa los campos CPU y Memoria para configurar la asignación de recursos para tus activadores.
En la sección Procesador de DAG, especifica la cantidad de procesadores de DAG en tu entorno y la cantidad de CPU, memoria y almacenamiento para cada procesador de DAG.
Los entornos altamente resilientes requieren al menos dos procesadores de DAG.
En la sección Servidor web, especifica la cantidad de CPU, memoria y almacenamiento para el servidor web.
En la sección Trabajador, 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
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 escalamiento y rendimiento del entorno.
--environment-sizeespecifica el tamaño del entorno.--scheduler-countespecifica la cantidad de programadores.--scheduler-cpuespecifica la cantidad de CPU para un programador de Airflow.--scheduler-memoryespecifica la cantidad de memoria para un programador de Airflow.--scheduler-storageespecifica la cantidad de espacio en disco para un programador de Airflow.--triggerer-countespecifica la cantidad de activadores de Airflow en tu entorno. El valor predeterminado de esta marca es0. Necesitas activadores si quieres usar operadores diferibles en tus DAGs.- Para los entornos de resiliencia estándar, usa un valor entre
0y10. - Para entornos altamente resilientes, usa
0o un valor entre2y10.
- Para los entornos de resiliencia estándar, usa un valor entre
--triggerer-cpuespecifica la cantidad de CPU para un activador de Airflow, en unidades de CPU virtuales. Valores permitidos:0.5,0.75,1. El valor predeterminado es0.5.--triggerer-memoryespecifica la cantidad de memoria para un activador de Airflow, en GB. El valor predeterminado es0.5.La memoria mínima requerida es igual a la cantidad de CPU asignadas a 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-cpuen1, el valor mínimo para--triggerer-memoryes1y el valor máximo es6.5.--dag-processor-countespecifica la cantidad de procesadores de DAG en tu entorno.Los entornos altamente resilientes requieren al menos dos procesadores de DAG.
--dag-processor-cpuespecifica la cantidad de CPU para el procesador de DAG.--dag-processor-memoryespecifica la cantidad de memoria para el procesador de DAG.--dag-processor-storageespecifica la cantidad de espacio en el disco para el procesador de DAG.--web-server-cpuespecifica la cantidad de CPU para el servidor web de Airflow.--web-server-memoryespecifica la cantidad de memoria para el servidor web de Airflow.--web-server-storageespecifica la cantidad de espacio en disco para el servidor web de Airflow.--worker-cpuespecifica la cantidad de CPU para un trabajador de Airflow.--worker-memoryespecifica la cantidad de memoria para un trabajador de Airflow.--worker-storageespecifica la cantidad de espacio en el disco para un trabajador de Airflow.--min-workersespecifica la cantidad mínima de trabajadores de Airflow. El clúster de tu entorno ejecuta al menos esta cantidad de trabajadores.--max-workersespecifica 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-3-airflow-2.10.5-build.16 \
--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
Reemplaza lo siguiente:
ENVIRONMENT_SIZEporsmall,mediumolarge.SCHEDULER_COUNTpor la cantidad de programadores.SCHEDULER_CPUpor la cantidad de CPU para un programador, en unidades de CPU virtual.SCHEDULER_MEMORYpor la cantidad de memoria para un programador.SCHEDULER_STORAGEpor el tamaño del disco de un programador.TRIGGERER_COUNTpor la cantidad de activadores.TRIGGERER_CPUpor la cantidad de CPU para un activador, en unidades de CPU virtual.TRIGGERER_MEMORYpor la cantidad de memoria para un activador, en GB.DAG_PROCESSOR_COUNTpor la cantidad de procesadores de DAG.DAG_PROCESSOR_CPUpor la cantidad de CPU para el procesador de DAG.DAG_PROCESSOR_MEMORYpor la cantidad de memoria para el procesador de DAG.DAG_PROCESSOR_STORAGEcon la cantidad de espacio en disco para el procesador de DAG.WEB_SERVER_CPUpor la cantidad de CPU para el servidor web, en unidades de CPU virtuales.WEB_SERVER_MEMORYpor la cantidad de memoria para el servidor web.WEB_SERVER_STORAGEpor la cantidad de memoria para el servidor web.WORKER_CPUpor la cantidad de CPU para un trabajador, en unidades de CPU virtual.WORKER_MEMORYpor la cantidad de memoria para un trabajador.WORKER_STORAGEpor el tamaño del disco de un trabajador.WORKERS_MINpor 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_MAXpor 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-3-airflow-2.10.5-build.16 \
--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 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
},
"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"
}
}
}
Reemplaza lo siguiente:
SCHEDULER_CPUpor la cantidad de CPU para un programador, en unidades de CPU virtual.SCHEDULER_MEMORYpor la cantidad de memoria para un programador, en GB.SCHEDULER_STORAGEpor el tamaño del disco de un programador, en GB.SCHEDULER_COUNTpor la cantidad de programadores.TRIGGERER_COUNTpor la cantidad de activadores. El valor predeterminado es0. Necesitas activadores si quieres usar operadores diferibles en tus DAGs.- Para los entornos de resiliencia estándar, usa un valor entre
0y10. - Para entornos altamente resilientes, usa
0o un valor entre2y10.
Si usas al menos un activador, también debes especificar los parámetros
TRIGGERER_CPUyTRIGGERER_MEMORY:- Para los entornos de resiliencia estándar, usa un valor entre
TRIGGERER_CPUespecifica la cantidad de CPU para un activador, en unidades de CPU virtuales. Valores permitidos:0.5,0.75,1.TRIGGERER_MEMORYconfigura la cantidad de memoria para un activador. La memoria mínima requerida es igual a la cantidad de CPUs asignadas a 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_CPUen1, el valor mínimo paraTRIGGERER_MEMORYes1y el valor máximo es6.5.DAG_PROCESSOR_COUNTpor la cantidad de procesadores de DAG.Los entornos altamente resilientes requieren al menos dos procesadores de DAG.
DAG_PROCESSOR_CPUpor la cantidad de CPU para el procesador de DAG, en unidades de CPU virtuales.DAG_PROCESSOR_MEMORYpor la cantidad de memoria para el procesador de DAG, en GB.DAG_PROCESSOR_STORAGEpor la cantidad de espacio en el disco para el procesador de DAG, en GB.WEB_SERVER_CPUpor la cantidad de CPU para el servidor web, en unidades de CPU virtuales.WEB_SERVER_MEMORYpor la cantidad de memoria para el servidor web, en GB.WEB_SERVER_STORAGEpor el tamaño del disco del servidor web, en GB.WORKER_CPUpor la cantidad de CPU para un trabajador, en unidades de CPU virtual.WORKER_MEMORYpor la cantidad de memoria para un trabajador, en GB.WORKER_STORAGEpor el tamaño del disco de un trabajador, en GB.WORKERS_MINpor 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_MAXpor 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_SIZEpor el tamaño del entorno,ENVIRONMENT_SIZE_SMALL,ENVIRONMENT_SIZE_MEDIUMoENVIRONMENT_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 escalamiento y rendimiento del entorno.
En el bloque
config, sucede lo siguiente:- El campo
environment_sizecontrola el tamaño del entorno.
- El campo
En el bloque
workloads_config, sucede lo siguiente:- El campo
scheduler.cpuespecifica la cantidad de CPU para un programador de Airflow. - El campo
scheduler.memory_gbespecifica la cantidad de memoria para un programador de Airflow. - El campo
scheduler.storage_gbespecifica la cantidad de espacio en el disco de un programador. - El campo
scheduler.countespecifica la cantidad de programadores en tu entorno. - El campo
triggerer.cpuespecifica la cantidad de CPU para un activador de Airflow. - El campo
triggerer.memory_gbespecifica la cantidad de memoria para un activador de Airflow. El campo
triggerer.countespecifica la cantidad de activadores en tu entorno.El campo
dag_processor.cpuespecifica la cantidad de CPU para un procesador de DAG.El campo
dag_processor.memory_gbespecifica la cantidad de memoria para un procesador de DAG.El campo
dag_processor.storage_gbespecifica la cantidad de espacio en el disco para un procesador de DAG.El campo
dag_processor.countespecifica la cantidad de procesadores de DAG.Los entornos altamente resilientes requieren al menos dos procesadores de DAG.
El campo
web_server.cpuespecifica la cantidad de CPU para el servidor web de Airflow.El campo
web_server.memory_gbespecifica la cantidad de memoria para el servidor web de Airflow.El campo
web_server.storage_gbespecifica la cantidad de espacio en el 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.
- El campo
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"
}
}
}
Reemplaza lo siguiente:
ENVIRONMENT_NAMEpor el nombre del entorno.LOCATIONpor la región en la que se encuentra el entorno.SERVICE_ACCOUNTpor la cuenta de servicio de tu entorno.SCHEDULER_CPUpor la cantidad de CPU para un programador, en unidades de CPU virtual.SCHEDULER_MEMORYpor la cantidad de memoria para un programador, en GB.SCHEDULER_STORAGEpor el tamaño del disco de un programador, en GB.SCHEDULER_COUNTpor la cantidad de programadores.TRIGGERER_COUNTpor la cantidad de activadores.TRIGGERER_CPUpor la cantidad de CPU para un activador, en unidades de CPU virtual.TRIGGERER_MEMORYpor la cantidad de memoria para un activador, en GB.DAG_PROCESSOR_CPUpor la cantidad de CPU para el procesador de DAG, en unidades de CPU virtuales.DAG_PROCESSOR_MEMORYpor la cantidad de memoria para el procesador de DAG, en GB.DAG_PROCESSOR_STORAGEpor la cantidad de espacio en el disco para el procesador de DAG, en GB.DAG_PROCESSOR_COUNTpor la cantidad de procesadores de DAG.WEB_SERVER_CPUpor la cantidad de CPU para el servidor web, en unidades de CPU virtuales.WEB_SERVER_MEMORYpor la cantidad de memoria para el servidor web, en GB.WEB_SERVER_STORAGEpor el tamaño del disco del servidor web, en GB.WORKER_CPUpor la cantidad de CPU para un trabajador, en unidades de CPU virtual.WORKER_MEMORYpor la cantidad de memoria para un trabajador, en GB.WORKER_STORAGEpor el tamaño del disco de un trabajador, en GB.WORKERS_MINpor 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_MAXpor 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_SIZEpor el tamaño del entorno,ENVIRONMENT_SIZE_SMALL,ENVIRONMENT_SIZE_MEDIUMoENVIRONMENT_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 resiliencia alta
Los entornos de Cloud Composer altamente resilientes (con alta disponibilidad) son aquellos que usan mecanismos integrados de redundancia y conmutación por error que reducen la susceptibilidad del entorno a las fallas zonales y las interrupciones por puntos únicos de fallo.
Un entorno altamente resiliente es multizonal y se ejecuta en al menos dos zonas de una región seleccionada. Los siguientes componentes se ejecutan en zonas separadas:
Exactamente dos programadores de Airflow
Al menos dos activadores (si la cantidad de activadores no está establecida en
0)Al menos dos procesadores de DAG
Dos servidores web
La cantidad mínima de trabajadores se establece en dos, y el clúster de tu entorno distribuye las instancias de trabajadores entre las zonas. En caso de una interrupción zonal, las instancias de trabajador afectadas se reprograman en una zona diferente. El componente de Cloud SQL de un entorno altamente resiliente tiene una instancia principal y una instancia en espera que se distribuyen entre las zonas.
Console
En la página Crear entorno:
En la sección Modo de resiliencia, selecciona Alta resiliencia.
En la sección Recursos del entorno, selecciona los parámetros de ajuste para un entorno altamente resiliente. Los entornos altamente resilientes requieren exactamente dos programadores, entre dos y diez activadores, y al menos dos trabajadores:
Haz clic en Personalizado.
En la lista desplegable Cantidad de programadores, selecciona
2.En la lista desplegable Cantidad de activadores, selecciona
0o un valor entre2y10. Configura la asignación de CPU y memoria para tus activadores.En la lista desplegable Cantidad mínima de trabajadores, selecciona
2o más, según la cantidad de trabajadores que necesites.
En la sección Configuración de red, haz lo siguiente:
En Tipo de red, selecciona Entorno de IP privada.
Si es necesario, especifica otros parámetros de redes.
gcloud
Cuando creas un entorno, el argumento --enable-high-resilience habilita el modo de alta resiliencia.
Establece los siguientes argumentos:
--enable-high-resilience--enable-private-environmenty otros parámetros de Herramientas de redes para un entorno de IP privada, si es necesario- De
--scheduler-counta2 --triggerer-counta0o un valor entre2y10. Si usas activadores, también se requieren las marcas--triggerer-cpu and--triggerer-memory` para la creación del entorno.Para obtener más información sobre las marcas
--triggerer-count,--triggerer-cpuy--triggerer-memory, consulta Configura la escala del entorno y los parámetros de rendimiento.De
--min-workersa2o más
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-3-airflow-2.10.5-build.16 \
--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 creas un entorno, en el recurso Environment > EnvironmentConfig, habilita el modo de alta capacidad de recuperación.
{
"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 en el 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: 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.
Console
En la página Crear entorno:
En la sección Configuración avanzada, expande el elemento Mostrar configuración avanzada.
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 preferida de Cloud SQL.
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-3-airflow-2.10.5-build.16 \
--service-account "SERVICE_ACCOUNT" \
--cloud-sql-preferred-zone SQL_ZONE
Reemplaza lo siguiente:
SQL_ZONE: Es la zona preferida de Cloud SQL. 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.16 \
--service-account "
example-account@example-project.iam.gserviceaccount.com
" \
--cloud-sql-preferred-zone us-central1-a
API
Cuando creas un entorno, en el recurso Environment > DatabaseConfig, especifica la zona preferida de Cloud SQL.
{
"name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"config": {
"databaseConfig": {
"zone": "SQL_ZONE"
},
"nodeConfig": {
"serviceAccount": "SERVICE_ACCOUNT"
}
}
}
Reemplaza lo siguiente:
SQL_ZONE: Es la zona preferida de Cloud SQL. 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 en el bloque database_config especifica la zona preferida de Cloud SQL.
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"
}
}
}
Reemplaza lo siguiente:
SQL_ZONE: Es la zona preferida de Cloud SQL. Esta zona debe estar ubicada en la región en la que se encuentra el entorno.
Paso 6. Configura las herramientas de redes de tu entorno (opcional)
Puedes configurar las redes de Cloud Composer 3 de las siguientes maneras:
- 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 y de IP pública se pueden conectar a tu red de VPC como una opción independiente.
- Puedes especificar el rango de IP interna de tu entorno. Este rango no se puede cambiar más adelante.
Puedes habilitar el acceso a Internet cuando instales paquetes de PyPI. Por ejemplo, tu entorno de IP privada aún puede instalar paquetes de PyPI desde el Índice de paquetes de Python si habilitas esta opción.
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.
Console
Asegúrate de que tu red esté configurada para el tipo de entorno que deseas crear.
En la sección Configuración de red, expande el elemento Mostrar configuración de red.
Si deseas conectar tu entorno a una red de VPC, en el campo Adjunto de red, selecciona un adjunto de red. También puedes crear un nuevo adjunto de red. Para obtener más información, consulta Conecta un entorno a una red de VPC.
Si quieres crear un entorno de IP privada, en la sección Tipo de red, selecciona la opción Entorno de IP privada.
Si deseas agregar etiquetas de red, consulta Agrega etiquetas de red para obtener más información.
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-environmenthabilita un entorno de IP privada.--networkespecifica el ID de la red de VPC.--subnetworkespecifica el ID de la subred de VPC.
--composer-internal-ipv4-cidr-blockespecifica el rango de IP interno del entorno. Cloud Composer usa este rango en el proyecto de usuario de tu entorno.
Ejemplo (entorno de IP privada con una red de VPC conectada)
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-3-airflow-2.10.5-build.16 \
--service-account "SERVICE_ACCOUNT" \
--enable-private-environment \
--network NETWORK_ID \
--subnetwork SUBNETWORK_ID \
Reemplaza lo siguiente:
NETWORK_IDpor el ID de la red de VPC.SUBNETWORK_IDpor el ID de la subred de VPC.
Paso 7: (Opcional) Agrega etiquetas de red
Las etiquetas de red se aplican a todas las VMs del nodo en el clúster de tu entorno. Las etiquetas se usan para identificar fuentes o destinos válidos para los 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 de un entorno de IP privada con reglas de firewall.
Console
En la página Crear entorno:
- Busca la sección Configuración de red.
- En el campo Etiquetas de red, ingresa las etiquetas de red para tu entorno.
gcloud
Cuando creas un entorno, los siguientes argumentos controlan las etiquetas de red:
--tagsespecifica una lista separada por comas de etiquetas de red aplicadas a todas las VMs del nodo.
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-3-airflow-2.10.5-build.16 \
--service-account "SERVICE_ACCOUNT" \
--tags TAGS
Reemplaza lo siguiente:
TAGSpor 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.16 \
--tags group1,production
API
Cuando creas un entorno, en el recurso Environment > EnvironmentConfig, especifica etiquetas de red para tu entorno.
{
"name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"config": {
"nodeConfig": {
"tags": [
"TAG"
],
"serviceAccount": "SERVICE_ACCOUNT"
}
}
}
Reemplaza lo siguiente:
TAGcon 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 para tu entorno:
- En el campo
tagsdel bloquenode_config, se especifica una lista separada por comas de etiquetas de red que se aplican a todas las VMs del nodo.
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
node_config {
tags = ["TAGS"]
service_account = "SERVICE_ACCOUNT"
}
}
}
Reemplaza lo siguiente:
TAGSpor 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: 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.
No puedes configurar los rangos de IP permitidos con direcciones IP privadas.
Console
En la página Crear entorno:
En la sección Configuración de red, expande el elemento Mostrar configuración de red.
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 el acceso solo desde direcciones IP específicas y haz clic en Borrar elemento junto a la entrada de rango vacía.
gcloud
Cuando creas un entorno, los siguientes argumentos controlan el nivel de acceso del servidor web:
--web-server-allow-allproporciona acceso a Airflow desde todas las direcciones IP. Esta es la opción predeterminada.--web-server-allow-iprestringe 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-allprohí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.16 \
--web-server-allow-ip ip_range=WS_IP_RANGE,description=WS_RANGE_DESCRIPTION
Reemplaza lo siguiente:
WS_IP_RANGEpor el rango de IP, en la notación CIDR, que puede acceder a la IU de AirflowWS_RANGE_DESCRIPTIONpor la descripción del rango de IP
Ejemplo:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-3-airflow-2.10.5-build.16 \
--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 creas 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 rangos de IP específicos, especifica uno o más rangos en
allowedIpRanges.Para prohibir el acceso a todas las direcciones IP, agrega
allowedIpRangesy conviértelo en una lista vacía. No especifiques rangos de IP en él.
{
"name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"config": {
"webServerNetworkAccessControl": {
"allowedIpRanges": [
{
"value": "WS_IP_RANGE",
"description": "WS_RANGE_DESCRIPTION"
}
]
},
"nodeConfig": {
"serviceAccount": "SERVICE_ACCOUNT"
}
}
}
Reemplaza lo siguiente:
WS_IP_RANGEpor el rango de IP, en la notación CIDR, que puede acceder a la IU de AirflowWS_RANGE_DESCRIPTIONpor 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"
}
]
},
"nodeConfig": {
"serviceAccount": "
example-account@example-project.iam.gserviceaccount.com
"
}
}
}
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"
}
}
node_config {
service_account = "SERVICE_ACCOUNT"
}
}
}
Reemplaza lo siguiente:
WS_IP_RANGEpor el rango de IP, en la notación CIDR, que puede acceder a la IU de AirflowWS_RANGE_DESCRIPTIONpor 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"
}
}
node_config {
service_account = "
example-account@example-project.iam.gserviceaccount.com
"
}
}
Paso 9. 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:
Console
En la página Crear entorno:
En la sección Variables de entorno, haz clic en Agregar variable de entorno.
Ingresa el Nombre y el Valor para la variable de entorno.
En la sección Anulaciones de configuración de Airflow, haz clic en Agregar anulación de configuración de Airflow.
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 webserverdag_orientationTB
gcloud
Cuando creas un entorno, los siguientes argumentos controlan las variables de entorno y las anulaciones de configuración de Airflow:
--env-variablesespecifica 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-configsespecifica 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-3-airflow-2.10.5-build.16 \
--service-account "SERVICE_ACCOUNT" \
--env-variables ENV_VARS \
--airflow-configs CONFIG_OVERRIDES
Reemplaza lo siguiente:
ENV_VARSpor una lista de paresNAME=VALUEseparados por comas para variables de entorno.CONFIG_OVERRIDESpor una lista de paresSECTION-KEY=VALUEseparados 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-3-airflow-2.10.5-build.16 \
--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 creas 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"
}
}
}
Reemplaza lo siguiente:
SECTIONpor la sección del archivo de configuración en la que se encuentra la opción de configuración de Airflow.KEYpor el nombre de la opción de configuración de Airflow.OVERRIDE_VALUEpor un valor de la opción de configuración de Airflow.VAR_NAMEpor el nombre de la variable de entorno.VAR_VALUEpor 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_variablesen el bloquesoftware_configespecifica 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_overridesdel bloquesoftware_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"
}
}
node_config {
service_account = "SERVICE_ACCOUNT"
}
}
}
Reemplaza lo siguiente:
SECTIONpor la sección del archivo de configuración en la que se encuentra la opción de configuración de Airflow.KEYpor el nombre de la opción de configuración de Airflow.OVERRIDE_VALUEpor un valor de la opción de configuración de Airflow.VAR_NAMEpor el nombre de la variable de entorno.VAR_VALUEpor 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
"
}
}
}
Paso 10. Especifica períodos de mantenimiento (opcional)
Los períodos de mantenimiento predeterminados en Cloud Composer 3 se definen de la siguiente manera:
- Todas las horas se indican en la zona horaria local de la región en la que se encuentra tu entorno, pero sin tener en cuenta el horario de verano.
- Los períodos de mantenimiento de martes, miércoles, jueves y viernes son de 00:00:00 a 02:00:00.
- Los períodos de mantenimiento de sábado, domingo y lunes son de 00:00:00 a 04:00:00.
Para especificar períodos de mantenimiento personalizados para tu entorno, haz lo siguiente:
Console
En la página Crear entorno
Busca la sección Períodos de mantenimiento.
En la lista desplegable Zona horaria, elige una zona horaria para los períodos de mantenimiento.
Establece la Hora de inicio, los Días y la Duración de modo que se cumplan las siguientes condiciones:
Se asignan al menos 12 horas en una sola semana.
Puedes usar varios intervalos de tiempo, pero la duración de cada uno debe ser de al menos 4 horas.
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-startestablece la hora de inicio de un período de mantenimiento.--maintenance-window-endestablece la hora de finalización de un período de mantenimiento.--maintenance-window-recurrenceestablece la recurrencia del período de mantenimiento.
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-3-airflow-2.10.5-build.16 \
--service-account "SERVICE_ACCOUNT" \
--maintenance-window-start 'DATETIME_START' \
--maintenance-window-end 'DATETIME_END' \
--maintenance-window-recurrence 'MAINTENANCE_RECURRENCE'
Reemplaza lo siguiente:
ENVIRONMENT_NAMEpor el nombre del entorno.DATETIME_STARTpor 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_ENDpor 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_RECURRENCEpor una RULE RFC 5545 para la recurrencia de los períodos de mantenimiento. Cloud Composer admite dos formatos:El formato
FREQ=DAILYespecifica una recurrencia diaria.El formato
FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SAespecifica 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 7:00 (UTC) los miércoles, sábados y domingos. Se ignora la fecha del 1 de enero de 2023.
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-3-airflow-2.10.5-build.16 \
--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 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"
},
"nodeConfig": {
"serviceAccount": "SERVICE_ACCOUNT"
}
}
}
Reemplaza lo siguiente:
DATETIME_STARTpor 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_ENDpor 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_RECURRENCEpor una RRULE RFC 5545 para la recurrencia de los períodos de mantenimiento. Cloud Composer admite dos formatos:El formato
FREQ=DAILYespecifica una recurrencia diaria.El formato
FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SAespecifica 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 7:00 (UTC) los miércoles, sábados y domingos. 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"
},
"nodeConfig": {
"serviceAccount": "SERVICE_ACCOUNT"
}
}
}
Terraform
El bloque maintenance_window especifica los períodos 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"
}
}
}
Reemplaza lo siguiente:
DATETIME_STARTpor 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_ENDpor 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_RECURRENCEpor una RRULE RFC 5545 para la recurrencia de los períodos de mantenimiento. Cloud Composer admite dos formatos:- El formato
FREQ=DAILYespecifica una recurrencia diaria. - El formato
FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SAespecifica una recurrencia en los días de la semana seleccionados.
- El formato
En el siguiente ejemplo, se especifica un período de mantenimiento de 6 horas entre las 1:00 y las 7:00 (UTC) los miércoles, sábados y domingos. 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 11. Integración del linaje de datos (opcional)
El linaje de datos es una función de Dataplex Universal Catalog que te permite hacer un seguimiento del 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 de Data Lineage está habilitada en tu proyecto. Para obtener más información, consulta Cómo habilitar la API de Data Lineage en la documentación de Dataplex Universal Catalog.
No se configuró un backend de linaje personalizado en Airflow.
Puedes inhabilitar la integración del linaje de datos cuando creas un entorno. Por ejemplo, si deseas anular el comportamiento automático o habilitar el linaje de datos más adelante, después de que se cree el entorno.
Console
Para inhabilitar la integración del linaje de datos, en la página Crear entorno, haz lo siguiente:
En la sección Configuración avanzada, expande el elemento Mostrar configuración avanzada.
En la sección Integración del linaje de datos de Dataplex, selecciona Inhabilitar la integración en 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.16 \
--service-account "SERVICE_ACCOUNT" \
--disable-cloud-data-lineage-integration
Reemplaza lo siguiente:
ENVIRONMENT_NAMEpor el nombre del entorno.LOCATIONpor 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.16 \
--service-account "
example-account@example-project.iam.gserviceaccount.com
" \
--disable-cloud-data-lineage-integration
Paso 12. 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 13 (Opcional) Usa el bucket de un entorno personalizado
Cuando creas un entorno, Cloud Composer crea un bucket para tu entorno automáticamente.
Como alternativa, puedes especificar un bucket de Cloud Storage personalizado de 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 que se describen en Usa un bucket de entorno personalizado.
Paso 14 (Opcional) Configura la retención de la base de datos
Si habilitas la retención de la base de datos en tu entorno, Cloud Composer quitará 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 período especificado. Siempre se conserva la información de la ejecución del DAG más reciente.
De forma predeterminada, la retención de la base de datos está habilitada. Para configurar el período de retención de un entorno nuevo o inhabilitar la retención de la base de datos, sigue las instrucciones que se describen en Configura la política de retención de la base de datos. También puedes configurar la retención de la base de datos más adelante.
Paso 15 Especifica etiquetas de entorno (opcional)
Puedes asignar etiquetas a tus entornos para desglosar los costos de facturación según estas etiquetas.
Console
En la página Crear entorno, en la sección Etiquetas, haz lo siguiente:
Haz clic en Agregar etiqueta.
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-3-airflow-2.10.5-build.16 \
--service-account "SERVICE_ACCOUNT" \
--labels LABELS
Reemplaza lo siguiente:
LABELSpor una lista de paresKEY=VALUEseparados por comas para etiquetas de entorno.
Ejemplo:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-3-airflow-2.10.5-build.16 \
--service-account "
example-account@example-project.iam.gserviceaccount.com
" \
--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_KEYpor una clave de la etiqueta del entorno.LABEL_VALUEpor 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_KEYpor una clave de la etiqueta del entorno.LABEL_VALUEpor 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?
- Solución de problemas de creación de entornos
- Configurar una VPC compartida
- Configura los controles del servicio de VPC
- Agregar y actualizar DAG
- Acceso a la IU de Airflow
- Actualiza y borra entornos
- Acerca de las versiones de Cloud Composer