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 de los entornos.
- Para obtener más información sobre cómo crear un entorno con Terraform, consulta Crear entornos (Terraform).
Antes de empezar
Habilita la API de Cloud Composer. Para ver la lista completa de servicios que usa Cloud Composer, consulta Servicios necesarios para Cloud Composer.
El tiempo aproximado para crear un entorno es de 25 minutos.
Si creas un entorno con Terraform, la cuenta de servicio que use Terraform debe tener un rol con el permiso
composer.environments.createhabilitado.Para obtener más información sobre la cuenta de servicio de Terraform, consulta la referencia de configuración del proveedor de Google.
Para obtener más información sobre cómo usar Terraform para crear un entorno de Cloud Composer, consulta la documentación de Terraform.
Para obtener más información sobre los parámetros adicionales, consulte la referencia de argumentos de Terraform.
IP privada: hay requisitos específicos de red y de emparejamiento para crear un entorno de IP privada. Para obtener más información, consulta el artículo sobre cómo configurar una IP privada.
VPC compartida: hay requisitos de red específicos para usar VPC compartida con Cloud Composer. Para obtener información, consulta Configurar una VPC compartida.
VPC SC: para desplegar entornos de Cloud Composer dentro de un perímetro de seguridad, consulta Configurar VPC SC. Cuando se usa con Cloud Composer, Controles de Servicio de VPC tiene varias limitaciones conocidas.
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:
Crea una cuenta de servicio como se describe en la documentación de Gestión de Identidades y Accesos.
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).Si tu entorno usa restricciones de ubicación de recursos o instala paquetes de PyPI desde un repositorio de Artifact Registry o desde un repositorio privado, otorga el rol Usuario de cuenta de servicio (
iam.serviceAccountUser) a la cuenta de servicio gestionada por el usuario que ejecuta tu entorno en sí misma (tanto la cuenta principal como el recurso son la misma cuenta de servicio).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
En la Google Cloud consola, ve a la página Crear entorno.
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 de las directrices de nomenclatura de segmentos.
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 imagen, selecciona una imagen de Cloud Composer con la versión de Airflow que necesites.
En la sección Configuración de nodo, 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_NAMEcon 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 de las directrices de nomenclatura de segmentos.
LOCATIONcon la región para proteger el medioambiente.Una ubicación es la región en la que se encuentra el entorno.
SERVICE_ACCOUNTcon la cuenta de servicio de tu entorno.IMAGE_VERSIONcon el nombre de una imagen de Cloud Composer.
Ejemplo:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-1.20.12-airflow-1.10.15 \
--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_IDcon el ID del proyecto.LOCATIONcon la región para proteger el medioambiente.Una ubicación es la región en la que se encuentra el entorno.
ENVIRONMENT_NAMEcon 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 de las directrices de nomenclatura de segmentos.
IMAGE_VERSIONcon el nombre de una imagen de Cloud Composer.SERVICE_ACCOUNTcon 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-1.20.12-airflow-1.10.15"
},
"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_NAMEcon 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 de las directrices de nomenclatura de segmentos.
LOCATIONcon la región para proteger el medioambiente.Una ubicación es la región en la que se encuentra el entorno.
IMAGE_VERSIONcon el nombre de una imagen de Cloud Composer.SERVICE_ACCOUNTcon 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-1.20.12-airflow-1.10.15"
}
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, indica el número de nodos del clúster de GKE de tu entorno y selecciona los tipos de máquina de los componentes del entorno.
Consola
En la página Crear entorno, haz lo siguiente:
En la sección Configuración de nodos:
Introduce el número de nodos.
El recuento de nodos es el número de nodos de Google Kubernetes Engine del clúster del entorno. De forma predeterminada, los entornos tienen 3 nodos.
Puedes cambiar este valor después de crear el entorno.
Elige Tipo de máquina para los nodos.
El tipo de máquina de los nodos es el tipo de máquina de Compute Engine que se usa para las instancias del clúster. Este parámetro determina el número de CPUs y la cantidad de memoria de tu entorno. El tipo de máquina predeterminado es
n1-standard-1.Para cambiar este valor después de crear el entorno, debes volver a configurar manualmente el clúster del entorno.
Introduce el tamaño del disco.
Tamaño del disco, en GB, de los nodos del entorno. Cada nodo de tu entorno tiene esta cantidad de espacio en disco. Selecciona un tamaño de disco mayor si tienes previsto almacenar un gran volumen de datos en carpetas sincronizadas con VMs de entorno. Por ejemplo, en la carpeta
/datadel bucket de tu entorno.El tamaño mínimo es de 30 GB. El tamaño predeterminado es de 100 GB. No puedes cambiar este parámetro después de crear un entorno.
Elige el Número de programadores.
Tu entorno puede ejecutar más de un programador de Airflow al mismo tiempo. Usa varios programadores para distribuir la carga entre varias instancias de programador y 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.
Despliega el elemento Redes, anulaciones de la configuración de Airflow y funciones adicionales.
En la sección Configuración de Cloud SQL, elija Tipo de máquina de Cloud SQL.
Este parámetro determina el tipo de máquina de la instancia de Cloud SQL que ejecuta la base de datos de Airflow. El tipo de máquina de Cloud SQL predeterminado es
db-n1-standard-2.En la sección Configuración del servidor web, elija Tipo de máquina del servidor web.
Este parámetro determina el tipo de máquina de la instancia de Compute Engine que ejecuta el servidor web de Airflow.
El tipo de máquina del servidor web predeterminado es
composer-n1-webserver-2.
gcloud
Cuando creas un entorno, los siguientes argumentos controlan los parámetros de escala y rendimiento del entorno:
--node-countespecifica el número de nodos de tu entorno.El recuento de nodos es el número de nodos de Google Kubernetes Engine del clúster del entorno. De forma predeterminada, los entornos tienen 3 nodos.
Puedes cambiar este valor después de crear el entorno.
--scheduler-countespecifica el número de programadores de tu entorno.Tu entorno puede ejecutar más de un programador de Airflow al mismo tiempo. Usa varios programadores para distribuir la carga entre varias instancias de programador y 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.
--disk-sizeespecifica el tamaño del disco de las VMs del entorno.Tamaño del disco, en GB, de los nodos del entorno. Cada nodo de tu entorno tiene esta cantidad de espacio en disco. Selecciona un tamaño de disco mayor si tienes previsto almacenar un gran volumen de datos en carpetas sincronizadas con VMs de entorno. Por ejemplo, en la carpeta
/datadel bucket de tu entorno.El tamaño mínimo es de 30 GB. El tamaño predeterminado es de 100 GB. No puedes cambiar este parámetro después de crear un entorno.
--machine-typeespecifica el tipo de máquina de las VMs de nodo.El tipo de máquina de los nodos es el tipo de máquina de Compute Engine que se usa para las instancias del clúster. Este parámetro determina el número de CPUs y la cantidad de memoria de tu entorno. El tipo de máquina predeterminado es
n1-standard-1.Para cambiar este valor después de crear el entorno, debes volver a configurar manualmente el clúster del entorno.
--cloud-sql-machine-typeespecifica el tipo de máquina de la instancia de Cloud SQL.Este parámetro determina el tipo de máquina de la instancia de Cloud SQL que ejecuta la base de datos de Airflow. El tipo de máquina de Cloud SQL predeterminado es
db-n1-standard-2.--web-server-machine-typeespecifica el tipo de máquina de la instancia del servidor web de Airflow.Este parámetro determina el tipo de máquina de la instancia de Compute Engine que ejecuta el servidor web de Airflow.
El tipo de máquina del servidor web predeterminado es
composer-n1-webserver-2.
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "SERVICE_ACCOUNT" \
--zone NODE_ZONE \
--node-count NODE_COUNT \
--scheduler-count SCHEDULER_COUNT \
--disk-size DISK_SIZE \
--machine-type NODE_MACHINE_TYPE \
--cloud-sql-machine-type SQL_MACHINE_TYPE \
--web-server-machine-type WS_MACHINE_TYPE
Sustituye:
NODE_COUNTcon el número de nodos.NODE_ZONEcon la zona de Compute Engine de las VMs de tu entorno.SCHEDULER_COUNTcon el número de programadores.DISK_SIZEcon el tamaño del disco de las VMs del entorno, en GB.NODE_MACHINE_TYPEcon el tipo de máquina de las VMs de nodo.SQL_MACHINE_TYPEcon el tipo de máquina de la instancia de Cloud SQL.WS_MACHINE_TYPEcon el tipo de máquina de la instancia del servidor web de Airflow.
Ejemplo:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "
example-account@example-project.iam.gserviceaccount.com
" \
--zone us-central1-a \
--node-count 6 \
--scheduler-count 1 \
--disk-size 50 \
--machine-type n1-standard-2 \
--cloud-sql-machine-type db-n1-standard-2 \
--web-server-machine-type composer-n1-webserver-2
API
Cuando crees un entorno, en el recurso Environment > EnvironmentConfig, especifica los parámetros de escala y rendimiento del entorno.
{
"name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"config": {
"nodeCount": NODE_COUNT,
"nodeConfig": {
"machineType": "NODE_MACHINE_TYPE",
"diskSizeGb": DISK_SIZE,
"serviceAccount": "SERVICE_ACCOUNT"
},
"softwareConfig": {
"schedulerCount": SCHEDULER_COUNT
},
"databaseConfig": {
"machineType": "SQL_MACHINE_TYPE"
},
"webServerConfig": {
"machineType": "WS_MACHINE_TYPE"
}
}
}
Sustituye:
NODE_COUNTcon el número de nodos.DISK_SIZEcon el tamaño del disco de las VMs del entorno, en GB.NODE_MACHINE_TYPEcon el tipo de máquina de las VMs de nodo. Este valor debe contener una zona para las VMs de tu entorno.SCHEDULER_COUNTcon el número de programadores.SQL_MACHINE_TYPEcon el tipo de máquina para la instancia de Cloud SQL.WS_MACHINE_TYPEcon el tipo de máquina de la instancia del servidor web de Airflow.
Ejemplo:
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
"name": "projects/example-project/locations/us-central1/environments/example-environment",
"config": {
"nodeCount": 6,
"nodeConfig": {
"machineType": "projects/example-project/zones/us-central1-a/machineTypes/n1-standard-2",
"diskSizeGb": 50,
"serviceAccount": "
example-account@example-project.iam.gserviceaccount.com
"
},
"softwareConfig": {
"schedulerCount": 1
},
"databaseConfig": {
"machineType": "db-n1-standard-2"
},
"webServerConfig": {
"machineType": "composer-n1-webserver-2"
}
}
}
Terraform
Cuando creas un entorno, los siguientes campos controlan los parámetros de escala y rendimiento del entorno:
node_counten el bloquenode_configespecifica el número de nodos de tu entorno.El recuento de nodos es el número de nodos de Google Kubernetes Engine del clúster del entorno. De forma predeterminada, los entornos tienen 3 nodos.
Puedes cambiar este valor después de crear el entorno.
disk_size_gben el bloquenode_configespecifica el tamaño del disco de las VMs del entorno.Tamaño del disco, en GB, de los nodos del entorno. Cada nodo de tu entorno tiene esta cantidad de espacio en disco. Selecciona un tamaño de disco mayor si tienes previsto almacenar un gran volumen de datos en carpetas sincronizadas con VMs de entorno. Por ejemplo, en la carpeta
/datadel bucket de tu entorno.El tamaño mínimo es de 30 GB. El tamaño predeterminado es de 100 GB. No puedes cambiar este parámetro después de crear un entorno.
machine_typeen el bloquenode_configespecifica el tipo de máquina de las VMs de nodo. Cuando especifiques este campo, también debes proporcionar una zona de Compute Engine para las VMs de tu entorno en el campozone.El tipo de máquina de los nodos es el tipo de máquina de Compute Engine que se usa para las instancias del clúster. Este parámetro determina el número de CPUs y la cantidad de memoria de tu entorno. El tipo de máquina predeterminado es
n1-standard-1.Para cambiar este valor después de crear el entorno, debes volver a configurar manualmente el clúster del entorno.
machine_typeen el bloquedatabase_configespecifica el tipo de máquina de la instancia de Cloud SQL.Este parámetro determina el tipo de máquina de la instancia de Cloud SQL que ejecuta la base de datos de Airflow. El tipo de máquina de Cloud SQL predeterminado es
db-n1-standard-2.machine_typeen el bloqueweb_server_configespecifica el tipo de máquina de la instancia del servidor web de Airflow.Este parámetro determina el tipo de máquina de la instancia de Compute Engine que ejecuta el servidor web de Airflow.
El tipo de máquina del servidor web predeterminado es
composer-n1-webserver-2.El campo
scheduler_countdel bloquesoftware_configespecifica el número de programadores de tu entorno. Tu entorno debe usar Airflow 2.
resource "google_composer_environment" "example" {
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
node_config {
node_count = NODE_COUNT
disk_size_gb = DISK_SIZE
machine_type = "NODE_MACHINE_TYPE"
zone = "NODE_ZONE"
service_account = "SERVICE_ACCOUNT"
}
software_config {
scheduler_count = SCHEDULER_COUNT
}
database_config {
machine_type = "SQL_MACHINE_TYPE"
}
web_server_config {
machine_type = "WS_MACHINE_TYPE"
}
}
}
Sustituye:
NODE_COUNTcon el número de nodos.DISK_SIZEcon el tamaño del disco de las VMs del entorno, en GB.NODE_MACHINE_TYPEcon el tipo de máquina para las VMs de nodo.NODE_ZONEcon la zona de Compute Engine de las VMs de tu entorno.SCHEDULER_COUNTcon el número de programadores.SQL_MACHINE_TYPEcon el tipo de máquina para la instancia de Cloud SQL.WS_MACHINE_TYPEcon el tipo de máquina de la instancia del servidor web de Airflow.
Ejemplo:
resource "google_composer_environment" "example" {
name = "example-environment"
region = "us-central1"
config {
node_config {
node_count = 4
disk_size_gb = 100
zone = "us-central1-a"
machine_type = "n1-standard-2"
service_account = "
example-account@example-project.iam.gserviceaccount.com
"
}
software_config {
scheduler_count = 2
}
database_config {
machine_type = "db-n1-standard-2"
}
web_server_config {
machine_type = "composer-n1-webserver-2"
}
}
}
Paso 4: (Opcional) Configurar la red de tu entorno
Los parámetros de red dependen del tipo de entorno que quieras crear:
Entorno de IP públicas. Usa los parámetros de red predeterminados.
Entorno de IP privada (emparejamientos de VPC). En esta configuración, tu entorno usa emparejamientos de VPC para la conectividad.
Configura tu entorno de IP privada:
- Configura la red de tu proyecto para entornos de IP privada.
- Especifica otros parámetros para tu entorno de IP privada, tal como se describe más adelante en esta sección.
En un entorno de IP privada con emparejamientos de VPC, debes saber lo siguiente:
- ID de tu red VPC
- El ID de tu subred de VPC
Dos intervalos de IP secundarios en tu subred de VPC:
- Intervalo de IP secundarias para pods
- Intervalo de IP secundario para servicios
Intervalos de IP de los componentes del entorno:
- Intervalo de IPs del plano de control de GKE.
- Intervalo de direcciones IP del servidor web.
- Intervalo de IPs de la instancia de Cloud SQL.
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.
En un entorno de VPC compartida, debes saber lo siguiente:
- ID de la red de VPC del proyecto host
ID de la subred de la VPC del proyecto host
Dos intervalos de IP secundarios en la subred de la VPC de tu proyecto host:
- Intervalo de IP secundarias para pods
- Intervalo de IP secundario para servicios
Cuando creas un entorno de VPC compartida con IP pública, debes especificar la red de VPC, la subred y los intervalos de IP secundarios del proyecto host para los pods y los servicios.
Para crear un entorno de Controles de Servicio de VPC, debes crear un perímetro de servicio y, a continuación, crear entornos de IP privada dentro de ese perímetro. Sigue las instrucciones que se indican en el artículo sobre cómo configurar Controles de Servicio de VPC.
Otras opciones de red para los entornos son las siguientes:
- Direcciones IP públicas usadas de forma privada. Si quieres usar más direcciones IP, tu entorno puede usar de forma privada determinados intervalos de direcciones IP públicas como intervalos de direcciones IP internas y de subred para pods y servicios.
- Redes autorizadas. Si quieres acceder al plano de control de tu entorno de IP privada mediante HTTPS, puedes usar redes autorizadas para especificar los intervalos CIDR que pueden hacerlo.
- Agente de enmascaramiento de IP. Si usas entornos con el agente de enmascaramiento de IP, puedes usar traducciones de direcciones IP de muchos a uno en las configuraciones de red de tu entorno. Para obtener más información sobre cómo crear entornos con el agente de enmascaramiento de IP, consulta Habilitar el agente de enmascaramiento de IP.
Consola
Para crear un entorno de IP privada, sigue estos pasos:
Asegúrate de que tu red esté configurada para el tipo de entorno que quieras crear.
Despliega el elemento Redes, anulaciones de la configuración de Airflow y funciones adicionales.
En la sección Configuración de red, selecciona la casilla Habilitar VPC nativa (mediante una IP de alias).
En la lista desplegable Red, selecciona el ID de tu red de VPC.
En la lista desplegable Subred, selecciona el ID de tu subred de VPC.
En la sección Asignación de direcciones IP de pods, especifica el intervalo de IP secundario de los pods. Puede usar un intervalo secundario que ya tenga en su red de VPC o especificar uno nuevo con la notación CIDR.
En la sección Asignación de direcciones IP de servicio, especifica el intervalo de IP secundario de los servicios. Puede usar un intervalo secundario que ya tenga en su red de VPC o especificar uno nuevo con la notación CIDR.
En la sección IP privada, selecciona la casilla Habilitar IP privada.
En la sección IP privada de la maestra del clúster de GKE, especifica un intervalo de IPs para el plano de control de GKE:
Para usar el intervalo de direcciones IP predeterminado de la región en la que se encuentra tu entorno, selecciona Intervalo de direcciones IP predeterminado.
Para especificar un intervalo de IP personalizado, selecciona Intervalo de IP personalizado e introduce un intervalo en notación CIDR en el campo IP privada de la maestra del clúster de GKE.
Selecciona el nivel de acceso del plano de control de GKE. El plano de control tiene dos endpoints. Un endpoint es privado y lo usan los nodos y las VMs del clúster. Otro endpoint es público. Puedes especificar el nivel de acceso del endpoint público:
Para habilitar el acceso al endpoint público desde redes autorizadas, selecciona la casilla Acceder al endpoint maestro con su dirección IP externa.
Si usas esta opción, el nivel de acceso del plano de control será "Acceso al endpoint público habilitado, redes autorizadas habilitadas". De esta forma, se restringe el acceso al plano de control desde redes autorizadas. De forma predeterminada, no se especifica ninguna dirección IP de origen. Puedes añadir redes autorizadas al clúster.
Para inhabilitar el acceso al endpoint público desde redes autorizadas, desmarca la casilla Acceder al endpoint maestro con su dirección IP externa.
Si usas esta opción, el nivel de acceso del plano de control será "Acceso al endpoint público inhabilitado". De esta forma, se impide el acceso a Internet del plano de control.
En la sección IP privada del servidor web, especifica un intervalo de IP para la instancia del servidor web de Airflow.
En la sección IP privada de Cloud SQL, especifica un intervalo de IP para la instancia de Cloud SQL.
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-environmenthabilita un entorno de IP privada.--enable-ip-aliashabilita la VPC nativa mediante direcciones IP de alias.Este parámetro es obligatorio cuando se usa
--enable-private-environmento cuando se configuran rangos secundarios para pods y servicios.--networkespecifica el ID de tu red de VPC.--subnetworkespecifica el ID de tu subred de VPC.--cluster-secondary-range-nameo--cluster-ipv4-cidrconfigura el intervalo secundario de los pods.--services-secondary-range-nameo--services-ipv4-cidrpara configurar el intervalo secundario de los servicios.--master-ipv4-cidrespecifica un intervalo para el plano de control de GKE.
--web-server-ipv4-cidrespecifica un intervalo para la instancia del servidor web de Airflow.--cloud-sql-ipv4-cidrespecifica un intervalo para la instancia de Cloud SQL.
--enable-private-endpointcontrola el nivel de acceso del plano de control de GKE. El plano de control tiene dos endpoints. Un endpoint es privado y lo usan los nodos y las VMs del clúster. Otro endpoint es público. Puedes especificar el nivel de acceso del endpoint público:Para habilitar el acceso al endpoint público desde redes autorizadas, omite el argumento
--enable-private-endpoint.Si usas esta opción, el nivel de acceso del plano de control será "Acceso al endpoint público habilitado, redes autorizadas habilitadas". De esta forma, se restringe el acceso al plano de control desde redes autorizadas. De forma predeterminada, no se especifica ninguna dirección IP de origen. Puedes añadir redes autorizadas al clúster.
Para inhabilitar el acceso al endpoint público desde redes autorizadas, especifica el argumento
--enable-private-endpoint.Si usas esta opción, el nivel de acceso del plano de control será "Acceso al endpoint público inhabilitado". De esta forma, se impide el acceso a Internet del plano de control.
Los argumentos
--enable-master-authorized-networksy--master-authorized-networksconfiguran las redes autorizadas de tu entorno.--enable-privately-used-public-ipsconfigura direcciones IP públicas usadas de forma privada para tu entorno.--enable-ip-masq-agenthabilita el agente de enmascaramiento de IP.
Ejemplo (entorno de IP privada )
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "SERVICE_ACCOUNT" \
--enable-private-environment \
--enable-ip-alias \
--network NETWORK_ID \
--subnetwork SUBNETWORK_ID \
--cluster-ipv4-cidr PODS_RANGE \
--services-ipv4-cidr SERVICES_RANGE \
--master-ipv4-cidr CONTROL_PLANE_RANGE \
--web-server-ipv4-cidr WEB_SERVER_RANGE \
--cloud-sql-ipv4-cidr SQL_RANGE
Sustituye:
NETWORK_IDcon el ID de tu red de VPC.SUBNETWORK_IDcon el ID de tu subred de VPC.PODS_RANGEcon el intervalo secundario de los pódcasts.SERVICES_RANGEcon el intervalo secundario de los servicios.CONTROL_PLANE_RANGEcon el intervalo secundario del plano de control de GKE.WEB_SERVER_RANGEcon el intervalo secundario de la instancia del servidor web de Airflow.SQL_RANGEcon el intervalo de la instancia de Cloud SQL.
Paso 5: (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:
- Busca la sección Configuración de nodos.
- En el campo Etiquetas, especifica las etiquetas de instancia de las VMs de nodo.
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 de nodo.
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "SERVICE_ACCOUNT" \
--tags TAGS
Sustituye:
TAGScon una lista de etiquetas de red separadas por comas.
Ejemplo:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-1.20.12-airflow-1.10.15 \
--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:
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 de tu entorno:
- El campo
tagsdel bloquenode_configespecifica 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:
TAGScon 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 6: (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, en la sección Configuración 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 acceso solo desde direcciones IP específicas y haz clic en Eliminar elemento junto a la entrada del intervalo vacío.
gcloud
Cuando creas un entorno, los siguientes argumentos controlan el nivel de acceso al servidor web:
--web-server-allow-allproporciona acceso a Airflow desde todas las direcciones IP. Es la opción predeterminada.--web-server-allow-iprestringe 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-allprohíbe el acceso a todas las direcciones IP.
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-1.20.12-airflow-1.10.15 \
--web-server-allow-ip ip_range=WS_IP_RANGE,description=WS_RANGE_DESCRIPTION
Sustituye:
WS_IP_RANGEcon el intervalo de IP, en notación CIDR, que puede acceder a la interfaz de usuario de Airflow.WS_RANGE_DESCRIPTIONcon la descripción del intervalo de IPs.
Ejemplo:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-1.20.12-airflow-1.10.15 \
--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
allowedIpRangesy 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_RANGEcon el intervalo de IP, en notación CIDR, que puede acceder a la interfaz de usuario de Airflow.WS_RANGE_DESCRIPTIONcon 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_RANGEcon el intervalo de IP, en notación CIDR, que puede acceder a la interfaz de usuario de Airflow.WS_RANGE_DESCRIPTIONcon 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
"
}
}
7. (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:
Despliega el elemento Redes, anulaciones de la configuración de Airflow y funciones adicionales.
En la sección Variables de entorno, haz clic en Añadir variable de entorno.
Introduce el nombre y el valor de la variable de entorno.
En la sección Anulaciones de configuración de Airflow, haga clic en Añadir anulación de configuración de Airflow.
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 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 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-configsespecifica 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-1.20.12-airflow-1.10.15 \
--service-account "SERVICE_ACCOUNT" \
--env-variables ENV_VARS \
--airflow-configs CONFIG_OVERRIDES
Sustituye:
ENV_VARScon una lista de paresNAME=VALUEseparados por comas para las variables de entorno.CONFIG_OVERRIDEScon una lista deSECTION-KEY=VALUEpares 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-1.20.12-airflow-1.10.15 \
--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:
SECTIONcon la sección del archivo de configuración en la que se encuentra la opción de configuración de Airflow.KEYcon el nombre de la opción de configuración de Airflow.OVERRIDE_VALUEcon el valor de la opción de configuración de Airflow.VAR_NAMEcon el nombre de la variable de entorno.VAR_VALUEcon 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_variablesdel bloquesoftware_configespecifica 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_overridesdel bloquesoftware_configespecifica 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:
SECTIONcon la sección del archivo de configuración en la que se encuentra la opción de configuración de Airflow.KEYcon el nombre de la opción de configuración de Airflow.OVERRIDE_VALUEcon el valor de la opción de configuración de Airflow.VAR_NAMEcon el nombre de la variable de entorno.VAR_VALUEcon 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 8: (Opcional) Especificar ventanas de mantenimiento
De forma predeterminada, los entornos de Cloud Composer 1 no tienen ventanas de mantenimiento definidas si los creas mediante la consola, la API o Terraform.Google Cloud Te recomendamos que especifiques ventanas de mantenimiento para tus entornos nuevos y actuales.
Si creas tu entorno con la CLI de gcloud, tendrá ventanas de mantenimiento predeterminadas de 00:00:00 a 04:00:00 (GMT) los viernes, sábados y domingos de cada semana.
Para especificar ventanas de mantenimiento personalizadas en tu entorno, sigue estos pasos:
Consola
En la página Crear entorno, haz lo siguiente:
Despliega el elemento Redes, anulaciones de la configuración de Airflow y funciones adicionales.
En la sección Ventanas de mantenimiento, marca la casilla Definir hora personalizada para las ventanas de mantenimiento.
En la lista desplegable Zona horaria, elige una zona horaria para las ventanas de mantenimiento.
Define Hora de inicio, Días y Duración para que el tiempo combinado de la programación especificada sea de al menos 12 horas en un periodo de 7 días. 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-startdefine la hora de inicio de una ventana de mantenimiento.--maintenance-window-enddefine la hora de finalización de una ventana de mantenimiento.--maintenance-window-recurrencedefine la recurrencia de la ventana de mantenimiento.
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "SERVICE_ACCOUNT" \
--maintenance-window-start 'DATETIME_START' \
--maintenance-window-end 'DATETIME_END' \
--maintenance-window-recurrence 'MAINTENANCE_RECURRENCE'
Sustituye:
ENVIRONMENT_NAMEcon el nombre del entorno.DATETIME_STARTcon 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_ENDcon 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_RECURRENCEcon una RRULE RFC 5545 para la periodicidad de las ventanas de mantenimiento. Cloud Composer admite dos formatos:El formato
FREQ=DAILYespecifica una repetición diaria.El formato
FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SAespecifica 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-1.20.12-airflow-1.10.15 \
--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_STARTcon 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_ENDcon 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_RECURRENCEcon una RRULE RFC 5545 para la periodicidad de las ventanas de mantenimiento. Cloud Composer admite dos formatos:El formato
FREQ=DAILYespecifica una repetición diaria.El formato
FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SAespecifica 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_STARTcon 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_ENDcon 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_RECURRENCEcon una RRULE RFC 5545 para la periodicidad de las ventanas de mantenimiento. Cloud Composer admite dos formatos:- El formato
FREQ=DAILYespecifica una repetición diaria. - El formato
FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SAespecifica una repetición en los días de la semana seleccionados.
- El formato
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 9: (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.
10. (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, haz lo siguiente:
Despliega el elemento Redes, anulaciones de la configuración de Airflow y funciones adicionales.
En la sección Etiquetas, haz clic en Añadir etiqueta.
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-1.20.12-airflow-1.10.15 \
--service-account "SERVICE_ACCOUNT" \
--labels LABELS
Sustituye:
LABELScon una lista de paresKEY=VALUEseparados por comas para las etiquetas del entorno.
Ejemplo:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-1.20.12-airflow-1.10.15 \
--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_KEYcon una clave de la etiqueta del entorno.LABEL_VALUEcon 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_KEYcon una clave de la etiqueta del entorno.LABEL_VALUEcon 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"
}
}
Paso 11. (Opcional) Configurar otros parámetros
Otros parámetros son:
Zona de los nodos de tu entorno
Zona de Compute Engine en la que se deben desplegar los nodos del clúster. En este parámetro, puedes seleccionar una zona específica de la ubicación de tu entorno.
De forma predeterminada, se selecciona una zona aleatoria automáticamente.
permisos de OAuth
Los permisos de OAuth son un conjunto de permisos de las APIs de Google que deben estar disponibles en todas las VMs de los nodos. Si está vacío, se asigna
https://www.googleapis.com/auth/cloud-platformde forma predeterminada.Si especificas permisos de OAuth personalizados, incluye
https://www.googleapis.com/auth/cloud-platformen la lista de permisos especificados.Versión de Python
Si tu entorno usa Airflow 1.10.* y versiones anteriores de Airflow, puedes hacer que tu entorno use Python 2. La versión predeterminada de Python es Python 3. Para obtener más información sobre la compatibilidad con Python 2 en Cloud Composer, consulta Versiones de Python compatibles.
Consola
En la página Crear entorno, haz lo siguiente:
En la sección Configuración de nodos:
En la lista desplegable Zona, selecciona una zona para los nodos de tu entorno.
No podrás cambiar la zona más adelante.
En el campo OAuth Scopes (Permisos de OAuth), especifica los permisos de OAuth de las VMs de nodo.
No podrás cambiar los ámbitos de OAuth más adelante.
Para especificar varios permisos de OAuth, proporcione una lista de valores separados por comas. Incluye
https://www.googleapis.com/auth/cloud-platformen la lista de ámbitos especificados.En el campo Versión de Python, elige la versión de Python.
No podrás cambiar la versión de Python más adelante.
gcloud
Cuando creas un entorno, los siguientes argumentos controlan varios parámetros del entorno:
--zoneespecifica una zona de Compute Engine para las VMs de tu entorno.--oauth-scopesespecifica una lista de permisos de OAuth separados por comas. Incluyehttps://www.googleapis.com/auth/cloud-platformen la lista de ámbitos especificados.--python-versionespecifica la versión de Python.
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "SERVICE_ACCOUNT" \
--zone ZONE \
--oauth-scopes OAUTH_SCOPES \
--python-version PYTHON_VERSION
Sustituye:
ZONEcon el nombre de la zona de Compute Engine.OAUTH_SCOPEScon una lista de permisos de OAuth separados por comas.PYTHON_VERSIONcon la versión de Python (3o2).
Ejemplo:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-1.20.12-airflow-1.10.15 \
--service-account "
example-account@example-project.iam.gserviceaccount.com
" \
--zone us-central1-a \
--oauth-scopes https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/bigquery \
--python-version 3
API
Cuando creas un entorno, en el recurso Environment > EnvironmentConfig, especifica parámetros varios de tu entorno.
{
"name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
"config": {
"nodeConfig": {
"location": "projects/PROJECT_ID/zones/ZONE",
"oauthScopes": [
"OAUTH_SCOPE"
],
"serviceAccount": "SERVICE_ACCOUNT"
},
"softwareConfig": {
"pythonVersion": "PYTHON_VERSION"
}
}
}
Sustituye:
ZONEcon el nombre de la zona de Compute Engine.OAUTH_SCOPEcon un permiso de OAuth. Para especificar ámbitos adicionales, añade el ámbitohttps://www.googleapis.com/auth/cloud-platform, seguido de los elementos de ámbito adicionales. scopes.PYTHON_VERSIONcon la versión de Python (3o2).
Ejemplo:
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
"name": "projects/example-project/locations/us-central1/environments/example-environment",
"config": {
"nodeConfig": {
"location": "projects/example-project/zones/us-central1-a",
"oauthScopes": [
"https://www.googleapis.com/auth/cloud-platform",
"https://www.googleapis.com/auth/bigquery"
],
"serviceAccount": "
example-account@example-project.iam.gserviceaccount.com
"
},
"softwareConfig": {
"pythonVersion": "3"
}
}
}
Terraform
Cuando creas un entorno, los siguientes campos controlan varios parámetros del entorno:
El campo
zonedel bloquenode_configespecifica una zona de Compute Engine para las VMs de tu entorno.El campo
oauth_scopesdel bloquenode_configespecifica una lista de permisos de OAuth separados por comas.El campo
python_versiondel bloquesoftware_configespecifica la versión de Python.
resource "google_composer_environment" "example" {
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
node_config {
zone = "ZONE"
oauth_scopes = "[OAUTH_SCOPES]"
service_account = "SERVICE_ACCOUNT"
}
software_config {
python_version = "PYTHON_VERSION"
}
}
}
Sustituye:
ZONEcon el nombre de la zona de Compute Engine.OAUTH_SCOPEScon una lista de permisos de OAuth separados por comas.PYTHON_VERSIONcon la versión de Python (3o2).
Ejemplo:
resource "google_composer_environment" "example" {
name = "example-environment"
region = "us-central1"
config {
node_config {
zone = "us-central1-a"
oauth_scopes = "[https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/bigquery]"
service_account = "
example-account@example-project.iam.gserviceaccount.com
"
}
software_config {
python_version = "3"
}
}
}
Paso 12: (Opcional) Exigir el uso de la versión beta de la API
Puedes hacer que tu entorno use explícitamente la API beta de Cloud Composer, aunque no tenga ninguna función de vista previa. Si lo hace, su entorno se creará con el endpoint de servicio v1beta1.
Consola
En la página Crear entorno, haz lo siguiente:
Despliega el elemento Redes, anulaciones de la configuración de Airflow y funciones adicionales.
En la sección API beta, marca la casilla Exigir el uso de la versión beta de la API.
gcloud
Crea tu entorno con el comando gcloud beta composer.
API
Crea tu entorno con el endpoint del servicio v1beta1.
Terraform
El proveedor de Terraform para Cloud Composer usa la versión beta de la API de forma predeterminada.
Siguientes pasos
- Solucionar problemas de creación de entornos
- Configurar VPC compartida
- Configurar Controles de Servicio de VPC
- Añadir y actualizar DAGs
- Acceder a la interfaz de usuario de Airflow
- Actualizar y eliminar entornos
- Acerca de las versiones de Cloud Composer