Crea entornos

En esta página, se explica cómo crear un entorno de Cloud Composer y anular la configuración predeterminada del entorno de Airflow durante el proceso de creación.

Un entorno de Cloud Composer ejecuta el software Apache Airflow. Cuando creas un nuevo entorno en un proyecto de Google Cloud (GCP), puedes especificar varios parámetros, como el tipo de máquina de Compute Engine o la cantidad de nodos del clúster.

Antes de comenzar

Control de acceso

  • Se requieren los siguientes permisos para crear entornos de Cloud Composer: (1) composer.environments.create y (2) iam.serviceAccounts.actAs en la cuenta de servicio en la que se ejecutará el entorno. Para obtener más información, consulta Control de acceso de Cloud Composer.

  • De forma predeterminada, los entornos de Cloud Composer se ejecutan mediante la cuenta de servicio predeterminada de Compute Engine. Durante la creación del entorno, puedes especificar una cuenta de servicio personalizada. Como mínimo, esta cuenta de servicio requiere los permisos que la función composer.worker proporciona para acceder a los recursos en el entorno de Cloud Composer. También debes tener autorización para “actuar como” la cuenta de servicio y tener el permiso iam.serviceAccounts.actAs habilitado en la cuenta de servicio o en el proyecto que contiene la cuenta de servicio. Asegúrate de que se te haya otorgado una de las funciones que incluyen este permiso, como Usuario de cuenta de servicio, Propietario o Editor. Consulta cómo funcionan las cuentas de servicio para obtener más detalles.

  • Si tu cuenta de servicio personalizada necesita acceder a otros recursos en tu proyecto de Google Cloud durante la ejecución de la tarea, puedes otorgar las funciones necesarias a la cuenta de servicio. Como alternativa, puedes proporcionar las credenciales relevantes como una conexión de Airflow y, luego, hacer referencia a la conexión en el operador.

  • Es posible que veas algunas cuentas de servicio adicionales pertenecientes a Google en la Política de IAM de tu proyecto o en GCP Console (p. ej., service-<var>PROJECT_ID</var>@cloudcomposer-accounts.iam.gserviceaccount.com). Para obtener información sobre los tipos y funciones disponibles, consulta Cuentas de servicio.

  • En este momento, el uso compartido del dominio restringido de Cloud Composer se encuentra en versión Beta. Si habilitaste la política de uso compartido restringido del dominio, debes usar la API Beta cuando creas un entorno de Cloud Composer. Consulta Asistencia para funciones Beta a fin de obtener información sobre cómo implementar un entorno de Cloud Composer con la API Beta.

  • La asistencia para los Controles del servicio de VPC se encuentra actualmente en fase Beta. Consulta Configura los Controles del servicio de VPC para obtener información sobre cómo implementar entornos de Cloud Composer dentro de un perímetro de seguridad. Para obtener más información, consulta las limitaciones conocidas de los Controles del servicio de VPC.

Funciones Beta

En esta sección, se enumeran las funciones que están disponibles en la versión Beta.

  • Control de acceso a la red del servidor web: Esta función te permite especificar los rangos de IP que pueden acceder al servidor web de Airflow para tu entorno.

  • Tipo de máquina para el servidor web de Airflow: Este parámetro te permite especificar el tipo de máquina virtual de Google App Engine para ejecutar el servidor web de Airflow.

  • Tipo de máquina para la base de datos de Airflow: Este parámetro te permite especificar el tipo de máquina que se usará a fin de ejecutar la instancia de Cloud SQL que se usa para ejecutar la base de datos de Airflow.

Crea un entorno nuevo

Para crear un entorno de Cloud Composer, sigue estos pasos:

Console

  1. Abre la página Crear entorno en Google Cloud Console.

    Abrir la página Crear entorno

  2. Ingresa un nombre para tu entorno.

    El nombre debe comenzar con una letra minúscula seguida por un máximo de 63 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 depósito de Cloud Storage. Consulta los Lineamientos para asignación de nombres de depósitos a fin de obtener una lista de restricciones.

  3. En Configuración de nodo, especifica la configuración de los nodos en el clúster de Google Kubernetes Engine. Si no especificas una configuración, se usará la predeterminada.

    Configuración Descripción
    Recuento de nodos La cantidad de nodos de Google Kubernetes Engine que se usa para ejecutar el entorno. El valor predeterminado es 3 nodos. El recuento de nodos es la única configuración de clúster de Google Kubernetes Engine que puedes cambiar después de crear el entorno.
    Ubicación La región de Compute Engine donde se crea el entorno (obligatorio).
    Sufijo de zona La zona de Compute Engine donde se crean las instancias de máquinas virtuales que ejecutan Apache Airflow. Si no se especifica, se selecciona una zona al azar dentro de la ubicación.
    Tipo de máquina El tipo de máquina de Compute Engine utilizado para las instancias de clústeres. El tipo de máquina determina la cantidad de CPU y la cantidad de memoria de tu entorno. El tipo de máquina predeterminado es n1-standard-1.
    Tamaño del disco El tamaño de disco en GB utilizado para las instancias de VM del nodo. El tamaño mínimo es de 20 GB. El tamaño predeterminado es de 100 GB.
    Alcances de OAuth El conjunto de alcances de la API de Google disponible en todas las instancias de VM del nodo. El valor predeterminado es https://www.googleapis.com/auth/cloud-platform y debe incluirse en la lista de alcances especificados.
    Cuenta de servicio La cuenta de servicio de Google Cloud que usarán las instancias de VM del nodo. Si no se especifica, se utiliza la cuenta de servicio predeterminada de Compute Engine.
    Etiquetas La lista de etiquetas de instancia aplicadas a todas las instancias de VM del nodo. Las etiquetas se usan con el fin de identificar objetivos o fuentes válidos para firewalls de red. Cada etiqueta de la lista debe cumplir con RFC 1035.
    Versión de la imagen La versión de Cloud Composer que se usará para tu entorno (incluye Cloud Composer y la versión de Airflow). Para obtener información sobre la versión predeterminada, consulta Lista de versiones.
    Versión de Python La versión de Python que se usará en tu entorno. Las versiones compatibles son Python 2 y Python 3. La versión predeterminada es la 3.
  4. En Configuración de red, especifica la configuración de red para el clúster de Google Kubernetes Engine. Si no especificas una configuración, se usará la predeterminada.

    Configuración Descripción
    Habilitar VPC nativas (con un alias de IP) Crea un clúster de GKE de VPC nativa con IP de alias para tu entorno. El valor predeterminado es un clúster de GKE basado en rutas. Obligatorio para un entorno de IP privada de Cloud Composer.
    Red La red de nube privada virtual que se utiliza para las comunicaciones de la máquina. Se necesita la red para especificar una subred. Si no se especifica, se usa la red predeterminada. La VPC compartida requiere un proyecto host.
    Subred La subred de nube privada virtual que se utiliza para las comunicaciones de la máquina. Si tu red usa una red de modo personalizado, la subred es obligatoria.
    Asignación de direcciones IP del pod El rango secundario para asignar direcciones IP a los pods en el clúster de GKE. Si no se especifica, se crea un rango secundario nuevo. Esta configuración es permanente.
    Asignación de dirección IP del servicio El rango secundario para reservar espacio para los servicios de Cloud Composer. Si no se especifica, se crea un rango secundario nuevo. Esta configuración es permanente.
    Entorno de IP privada Habilita un entorno de IP privada de Cloud Composer. Está inhabilitado de forma predeterminada.
    Accede a la instancia principal de GKE mediante su dirección IP externa Habilita el acceso público a la instancia principal del clúster de GKE. Requiere un entorno de IP privada.
    Rango de IP de la instancia principal de GKE El rango privado de RFC 1918 para la  VPC de la instancia principal. Si no se especifica, se usa el valor predeterminado 172.16.0.0/28. Obligatorio para el entorno de IP privada.

    Asegúrate de que los rangos secundarios sean lo suficientemente grandes como para adaptarse al tamaño del clúster y el crecimiento previsto. Por ejemplo, los prefijos de red de los rangos secundarios para un entorno de Cloud Composer de 3 nodos no deben superar los siguientes valores:

    • Pods: /22
    • Servicios: /27

    Consulta Crea un clúster nativo de la VPC a fin de obtener pautas sobre la configuración de rangos secundarios para pods y servicios.

  5. (Beta) En Control de acceso a la red del servidor web, especifica los rangos de IP que pueden acceder al servidor web de Airflow para tu entorno.

    Configuración Descripción
    Permitir el acceso desde todas las direcciones IP (predeterminado) Todos los rangos de IP pueden acceder al servidor web de Airflow.
    Permitir el acceso solo desde direcciones IP específicas Solo los rangos de IP específicos pueden acceder al servidor web. Para agregar un rango nuevo, haz clic en Agregar rango de IP. Para quitar un rango, haz clic en el botón de papelera de esa fila. Para denegar todos los rangos de IP, borra todas las filas.
  6. Para cambiar o anular los valores predeterminados en el archivo de configuración de Airflow (airflow.cfg), haz clic en Agregar propiedad de configuración de Airflow (opcional).

  7. Para configurar las variables de entorno, haz clic en Agregar variable de entorno(opcional). Consulta Variables de entorno para conocer los requisitos.

  8. Para agregar una etiqueta, haz clic en Agregar etiquetas (opcional).

    Las claves de etiquetas y los valores de las etiquetas solo pueden contener letras, números, guiones y guiones bajos. Las claves de etiquetas deben comenzar con una letra o un número.

  9. Haga clic en Crear.

gcloud

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    OTHER_ARGUMENTS

Se requieren los siguientes parámetros:

  • ENVIRONMENT_NAME es el nombre del entorno. Debe coincidir con el patrón ^[a-z](?:[-0-9a-z]{0,62}[0-9a-z])?$. 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 depósito de Cloud Storage. Consulta los Lineamientos para asignación de nombres de depósitos a fin de obtener una lista de restricciones.
  • LOCATION es la región de Compute Engine donde se encuentra el entorno. Asegúrate de que en la ubicación que especificas Composer esté disponible.

Los parámetros que aparecen a continuación son opcionales:

  • airflow-configs es una lista de anulaciones de configuración de Airflow SECTION_NAME-PROPERTY_NAME=VALUE. El nombre de la sección y el nombre de la propiedad deben estar separados por un guion.
  • cloud-sql-machine-type es un tipo de máquina que se usa para la instancia de Cloud SQL que se usa como base de datos de Airflow. El tipo de máquina determina la cantidad de CPU y memoria de tu entorno. El tipo de máquina predeterminado es db-n1-standard-2. Este parámetro está en versión Beta y requiere el comando gcloud beta composer environments create. Los valores posibles de este parámetro son los siguientes: db-n1-standard-2, db-n1-standard-4, db-n1-standard-8 y db-n1-standard-16, y la especificación de estas máquinas se encuentran en la página de Cloud SQL.
  • disk-size es el tamaño del disco en GB que se usa para las VM del nodo. El tamaño mínimo es de 20 GB. El tamaño de disco predeterminado es de 100 GB.
  • env-variables es una lista de variables de entorno NAME=VALUE que se configuran en los procesos del programador, trabajador y servidor web de Airflow.
  • enable-private-environment habilita un entorno de IP privada de Cloud Composer.
    • master-ipv4-cidr es el rango de RFC 1918 privado de la VPC de la instancia principal. Obligatorio cuando enable-private-environment es verdadero.
  • enable-private-endpoint habilita el acceso público a la instancia principal del clúster de GKE. Requiere enable-private-environment.
  • enable-ip-alias habilita la VPC nativa con direcciones IP de alias. Obligatorio cuando enable-private environment es verdadero o para configurar rangos secundarios para pods y servicios:
    • cluster-secondary-range-name o cluster-ipv4-cidr configuran el rango secundario para los pods.
    • services-secondary-range-name o services-ipv4-cidr configuran el rango secundario para los servicios.
  • image-version es la versión composer-addon y la versión de Airflow que se usará para tu entorno en el formulario composer-a.b.c-airflow-x.y.z. Para obtener información sobre el alias de versión y la versión predeterminada, consulta Control de versiones de Cloud Composer.
  • labels son etiquetas especificadas por el usuario que se adjuntan al entorno y a tus recursos.
  • machine-type es el tipo de máquina de Compute Engine. El tipo de máquina determina la cantidad de CPU y memoria de tu entorno. El tipo de máquina predeterminado es n1-standard-1.
  • network es la red de nube privada virtual que se utiliza para las comunicaciones de la máquina.
    • Se necesita la red para especificar una subred. Si no se especifica, se usa la red predeterminada.
    • Cuando se usa una VPC compartida, se proporciona el nombre de recurso relativo de la red con el formato projects/HOST_PROJECT_ID/global/networks/NETWORK_ID. Para conocer los requisitos de subred de la VPC compartida, consulta subnetwork a continuación.
  • node-count es la cantidad de nodos de GKE que se usan para ejecutar el entorno. El recuento de nodos predeterminado es 3. El recuento de nodos es la única configuración de clúster de Google Kubernetes Engine que puedes cambiar después de crear el entorno.
  • oauth-scopes es el conjunto de alcances de la API de Google que está disponible en todas las VM de los nodos. El alcance de OAuth predeterminado es https://www.googleapis.com/auth/cloud-platform y debe incluirse en la lista de alcances si se especifica.
  • python-version es la versión de Python que se usará en tu entorno. Las versiones compatibles son Python 2 y Python 3. La versión predeterminada es la 2.
  • subnetwork es la subred de Compute Engine a la que se está conectado el entorno.
    • Si tu red usa una red de modo personalizado, la subred es obligatoria.
    • Cuando creas un entorno de VPC compartida con gcloud, debes usar los rangos de IP secundarios composer-pods y composer-services. Puedes especificar diferentes nombres de rangos secundarios mediantela API de Cloud Composer. El nombre de la subred también se debe especificar como un nombre de recurso relativo con el formato projects/HOST_PROJECT_ID/regions/REGION_ID/subnetworks/SUBNET_ID.
  • service-account es la cuenta de servicio de Google Cloud que deben usar las instancias de VM del nodo. Si no se especifica, se utiliza la cuenta de servicio predeterminada de Compute Engine.
  • tags es la lista de etiquetas de instancia que se aplica a todas las VM del nodo. Las etiquetas se usan con el fin de identificar objetivos o fuentes válidos para firewalls de red. Cada etiqueta de la lista debe cumplir con RFC 1035.
  • web-server-machine-type es un tipo de máquina que se usa para ejecutar el servidor web de Airflow. El tipo de máquina determina la cantidad de CPU y memoria de tu entorno. El tipo de máquina predeterminado es composer-n1-webserver-2. Este parámetro está en versión Beta y requiere el comando gcloud beta composer environments create. Los valores posibles de este parámetro son: composer-n1-webserver-2, composer-n1-webserver-4 y composer-n1-webserver-8.

En el siguiente ejemplo, se crea un entorno con la versión de la imagen compatible más reciente de Cloud Composer en la región us-central1 que usa el tipo de máquina n1-standard-2 con una etiqueta de entorno beta:

gcloud beta composer environments create test-environment \
    --location us-central1 \
    --zone us-central1-f \
    --machine-type n1-standard-2 \
    --image-version composer-latest-airflow-x.y.z \
    --labels env=beta  

El siguiente ejemplo de VPC compartida crea un entorno en el proyecto host. El entorno está en la región us-central1 y utiliza el tipo de máquina n1-standard-2 con una etiqueta de entorno beta:

gcloud beta composer environments create host-project-environment \
    --network vpc-network-name --subnetwork vpc-subnetwork-name
    --location us-central1 \
    --zone us-central1-f \
    --machine-type n1-standard-2 \
    --labels env=beta  

API

Para crear un entorno de Cloud Composer nuevo con la API de REST de Cloud Composer, crea una solicitud a la API environments.create completando el recurso Environment con la información de tu configuración.

Terraform

Para configurar este entorno con Terraform, agregue el siguiente bloque de recursos a su configuración de Terraform y ejecute terraform apply.

resource "google_composer_environment" "example-resource" {
  name   = "ENVIRONMENT_NAME"
  region = "LOCATION"
}

Se requieren los siguientes parámetros:

  • name, en el que ENVIRONMENT_NAME es el nombre del entorno. Debe coincidir con el patrón ^[a-z](?:[-0-9a-z]{0,62}[0-9a-z])?$. 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 depósito de Cloud Storage. Consulta los Lineamientos para asignación de nombres de depósitos a fin de obtener una lista de restricciones.
  • region, en el que LOCATION es la región de Compute Engine donde se encuentra el entorno. Asegúrate de que en la ubicación que especificas Composer esté disponible.

El uso de parámetros opcionales adicionales se define en la Referencia de argumentos de Terraform.

En el siguiente ejemplo, se crea un entorno que ejecuta la última versión admitida de la imagen de Cloud Composer en la región us-central1 que usa el tipo de máquina n1-standard-2 con una etiqueta de entorno beta. Para configurar este entorno con Terraform, agregue el siguiente bloque de recursos a su configuración de Terraform y ejecute terraform apply:

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

  config {
    node_config {
      zone = "us-central1-f"
      machine_type = "n1-standard-2"
    }
    software_config {
      image_version = "composer-latest-airflow-x.y.z"
    }
  }
  labels = {"env": "beta"}
}

El siguiente ejemplo de VPC compartida crea un entorno en el proyecto host. El entorno está en la región us-central1 y utiliza el tipo de máquina n1-standard-2 con una etiqueta de entorno beta: Para configurar este entorno con Terraform, agregue el siguiente bloque de recursos a su configuración de Terraform y ejecute terraform apply:

resource "google_composer_environment" "example-resource" {
  name   = "host-project-environment"
  region = "us-central1"

  config {
    node_config {
      zone = "us-central1-f"
      machine_type = "n1-standard-2"
      network = "vpc-network-name"
      subnetwork = "vpc-subnetwork-name"
    }
    software_config {
      image_version = "composer-latest-airflow-x.y.z"
    }
  }
  labels = {"env": "beta"}
}

Configura las notificaciones de correo electrónico

Configura los servicios de correo electrónico de SendGrid

Para recibir notificaciones, configura tus variables de entorno con el fin de enviar correos electrónicos a través del servicio de correo electrónico de SendGrid.

  1. Si aún no lo hiciste, regístrate en SendGrid a través de Google Cloud Console y crea una clave de API. Como desarrollador de Google Cloud, puedes comenzar con 12,000 correos electrónicos gratuitos por mes.

  2. En Cloud Console, abre la página Crear entorno.

    Abrir la página Crear entorno

  3. En Configuración de nodos, haz clic en Agregar variable de entorno.

  4. Ingresa las siguientes variables de entorno:

    Nombre Valor
    SENDGRID_MAIL_FROM El valor De: dirección de correo electrónico, como noreply-composer@<your-domain>.
    SENDGRID_API_KEY Tu clave de API de SendGrid.
  5. Para probar la configuración de SendGrid, sigue estos pasos:

    1. Crea un DAG de prueba que use EmailOperator.
    2. Sube el DAG a tu entorno y verifica que la tarea EmailOperator se realice correctamente.
    3. Accede a SendGrid con tus credenciales de SendGrid.
    4. En la IU de SendGrid, ve a la página Actividad.
    5. Busca el correo electrónico en la lista. Debería ver que SendGrid procesó y envió el correo electrónico.
    6. Si el correo electrónico no se procesó ni se envió, sigue estos pasos:
      • Comprueba tus configuraciones de SendGrid.
      • Verifica que las variables de entorno SENDGRID_MAIL_FROM y SENDGRID_API_KEY sean correctas.
      • Verifica el filtro de spam en tu cliente de correo electrónico.

Configura servicios SMTP de terceros

Para enviar correos electrónicos a través de un servicio SMTP de terceros, debes anular la configuración de Airflow email_backend.

  1. Abre la página Crear entorno.

    Abrir la página Crear entorno

  2. En Anulaciones de configuración de Airflow, haz clic en Agregar anulación de configuración de Airflow.
  3. Ingresa las siguientes propiedades de configuración:

    Sección Clave Valor
    email email_backend airflow.utils.email.send_email_smtp
    smtp smtp_host El nombre de host del servidor SMTP.
    smtp smtp_user El nombre de usuario en el servidor SMTP.
    smtp smtp_port Un puerto distinto del puerto 25. El puerto 25 está bloqueado.
    smtp smtp_password La contraseña de SMTP predeterminada para Airflow. No puedes configurar una nueva contraseña.
    smtp smtp_mail_from El valor De: dirección de correo electrónico, como noreply-composer@.
    smtp smtp_starttls Para mejorar la seguridad, configúralo como True.
    smtp smtp_ssl Para mejorar la seguridad, configúralo como True.

Para otras configuraciones de SMTP, consulta el archivo default_airflow.cfg de tu versión de Airflow.

Anula configuraciones de Airflow

Cuando crea o actualizas un entorno, puedes anular las propiedades de configuración de Apache Airflow. Algunas propiedades están bloqueadas.

Console

  1. Abre la página Crear entorno.

    Abrir la página Crear entorno

  2. En Anulaciones de configuración de Airflow, haz clic en Agregar anulación de configuración de Airflow.

  3. Ingresa la Sección, la Clave y el Valor nuevo para la configuración.

Por ejemplo:

Sección Clave Valor
webserver dag_orientation RL

gcloud

Para anular la configuración de Airflow al momento de crear un entorno, usa el siguiente comando:

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --airflow-configs=KEY=VALUE,KEY=VALUE,...

donde:

  • ENVIRONMENT_NAME es el nombre del entorno.
  • LOCATION es la región de Compute Engine donde se encuentra el entorno.
  • KEY=VALUE es la sección de configuración y el nombre de la propiedad separados por un guion, como core-print_stats_interval, y su valor correspondiente.

Por ejemplo:

gcloud composer environments create test-environment \
    --location us-central1 \
    --airflow-configs=core-load_example=True,webserver-dag_orientation=TB 

El comando termina cuando finaliza la operación. Para no tener que esperar, usa la marca --async. Consulta la página de referencia de “gcloud composer environments update” para obtener más ejemplos.

API

Para anular las propiedades de Airflow durante la creación del entorno de Cloud Composer con la API de REST de Cloud Composer, completa el campo opcional Environment del recurso airflowConfigOverrides al momento de construir la solicitud environments.create.

Qué sigue