Acceder a la interfaz web de Airflow

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

Apache Airflow incluye una interfaz de usuario web llamada interfaz de usuario de Airflow, que puedes usar para gestionar DAGs de Airflow, ver registros de ejecuciones de DAGs, monitorizar Airflow y realizar acciones administrativas.

Acerca del servidor web de Airflow

Cada entorno de Cloud Composer tiene un servidor web que ejecuta la interfaz de usuario de Airflow. El servidor web forma parte de la arquitectura del entorno de Cloud Composer.

El servidor web analiza los archivos de definición de DAG en la carpeta dags/ y debe poder acceder a los datos y recursos de un DAG para cargarlo y atender las solicitudes HTTP.

El servidor web actualiza los DAGs cada 60 segundos, que es el valor predeterminado worker_refresh_interval en Cloud Composer. Se puede producir un error del servidor web si este no puede analizar todos los DAGs en el intervalo de actualización.

Si se tarda más de 60 segundos en cargar los DAGs, puede deberse a que hay un gran número de archivos DAG o a que la carga de trabajo para cargar los archivos DAG no es trivial. Para asegurarse de que el servidor web siga siendo accesible independientemente del tiempo de carga del DAG, puede configurar la carga asíncrona de DAGs para analizar y cargar los DAGs en segundo plano a un intervalo preconfigurado (disponible en composer-1.7.1-airflow-1.10.2 y versiones posteriores). Esta configuración también puede reducir el tiempo de actualización del DAG.

Aparte de superar el intervalo de actualización del trabajador, el servidor web puede gestionar correctamente los errores de carga de DAG en la mayoría de los casos. Los DAGs que provocan que el servidor web falle o se cierre pueden provocar que se devuelvan errores en el navegador. Para obtener información, consulta Solucionar problemas de DAGs.

Si sigues teniendo problemas con el servidor web debido al análisis de DAGs, te recomendamos que uses la carga asíncrona de DAGs.

Antes de empezar

  • Debes tener un rol que pueda ver los entornos de Cloud Composer. Para obtener más información, consulta Control de acceso.

  • Durante la creación del entorno, Cloud Composer configura la URL del servidor web que ejecuta la interfaz de usuario de Airflow. La URL no se puede personalizar.

  • La función Control de acceso a la interfaz de usuario de Airflow (control de acceso basado en roles de Airflow) de la interfaz de usuario de Airflow se admite en entornos de Cloud Composer que ejecuten la versión 1.13.4 o posterior de Composer, la versión 1.10.10 o posterior de Airflow y Python 3.

Acceder a la interfaz de usuario de Airflow

El servicio del servidor web de Airflow se despliega en el dominio appspot.com y proporciona acceso a la interfaz de usuario de Airflow. Cloud Composer 1 proporciona acceso a la interfaz en función de las identidades de los usuarios y de los enlaces de políticas de gestión de identidades y accesos definidos para los usuarios. Cloud Composer 1 usa Identity-Aware Proxy para ello.

Después de crear un entorno de Cloud Composer, la interfaz de usuario tarda hasta 25 minutos en terminar de alojarse y estar accesible.

Acceder a la interfaz de usuario de Airflow desde la Google Cloud consola

Para acceder a la interfaz de usuario de Airflow desde la consola Google Cloud , sigue estos pasos:

  1. En la Google Cloud consola, ve a la página Entornos.

    Ir a Entornos

  2. En la columna Servidor web de Airflow, siga el enlace Airflow de su entorno.

  3. Inicia sesión con una cuenta de Google que tenga los permisos adecuados.

Obtener la URL de la interfaz de usuario de Airflow con Google Cloud CLI

Puedes acceder a la interfaz de usuario de Airflow desde cualquier navegador web. Para obtener la URL de la interfaz de usuario de Airflow, ejecuta el siguiente comando en la CLI de Google Cloud:

gcloud composer environments describe ENVIRONMENT_NAME \
  --location LOCATION

Haz los cambios siguientes:

  • ENVIRONMENT_NAME: el nombre de tu entorno.
  • LOCATION: la región en la que se encuentra el entorno.

El comando gcloud muestra las propiedades de un entorno de Cloud Composer, incluida la URL de la interfaz de usuario de Airflow. La URL se muestra como airflowUri.

config:
  airflowUri: https://example-tp.appspot.com

Configurar la carga asíncrona de DAGs

Cuando se habilita la carga asíncrona de DAGs, el servidor web de Airflow crea un nuevo proceso. Este proceso carga los DAGs en segundo plano, envía los DAGs recién cargados en intervalos definidos por la opción dagbag_sync_interval y, a continuación, se suspende.

El proceso se activa periódicamente para volver a cargar los DAGs. El intervalo se define mediante la opción collect_dags_interval.

Para habilitar la carga asíncrona de DAGs, sigue estos pasos:

  1. Inhabilita la serialización de DAGs. La carga asíncrona de DAGs no se puede usar con la serialización de DAGs. Si usas las opciones de configuración de async_dagbag_loader y store_serialized_dags Airflow, se producen errores HTTP 503 y tu entorno deja de funcionar.

  2. Anula las siguientes opciones de configuración de Airflow:

    Sección Clave Valor Notas
    webserver async_dagbag_loader True El valor predeterminado es False.
    webserver collect_dags_interval 30 El valor predeterminado es 30. Use un valor más pequeño para que las actualizaciones sean más rápidas.
    webserver dagbag_sync_interval 10 El valor predeterminado es 10.
    webserver worker_refresh_interval 3600 El valor predeterminado es 60. Con la carga asíncrona de DAGs, puedes usar un intervalo de actualización más largo.

Reiniciar el servidor web

Al depurar o solucionar problemas de entornos de Cloud Composer, algunos problemas se pueden resolver reiniciando el servidor web de Airflow. Puedes reiniciar el servidor web con la API restartWebServer o el comando restart-web-server en Google Cloud CLI:

gcloud composer environments restart-web-server ENVIRONMENT_NAME \
  --location=LOCATION

Haz los cambios siguientes:

  • ENVIRONMENT_NAME: el nombre de tu entorno.
  • LOCATION: la región en la que se encuentra el entorno.

Configurar el acceso a la red del servidor web

Los parámetros de acceso al servidor web de Airflow no dependen de la configuración de red de tu entorno. En su lugar, debes configurar el acceso al servidor web por separado. Por ejemplo, un entorno de IP privada puede seguir teniendo acceso a la interfaz de usuario de Airflow desde Internet.

No es posible configurar los intervalos de IP permitidos para que sean direcciones IP privadas.

Consola

  1. En la Google Cloud consola, ve a la página Entornos.

    Ir a Entornos

  2. En la lista de entornos, haz clic en el nombre del entorno. Se abrirá la página Detalles del entorno.

  3. Ve a la pestaña Configuración del entorno.

  4. En la sección Configuración de red, busca el elemento Control de acceso al servidor web y haz clic en Editar.

  5. En el cuadro de diálogo Control de acceso a la red del servidor web, haz lo siguiente:

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

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

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

gcloud

Cuando actualizas un entorno, los siguientes argumentos controlan los parámetros de acceso del servidor web:

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

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

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

gcloud composer environments update ENVIRONMENT_NAME \
    --location LOCATION \
    --update-web-server-allow-ip ip_range=WS_IP_RANGE,description=WS_RANGE_DESCRIPTION

Haz los cambios siguientes:

  • ENVIRONMENT_NAME: el nombre de tu entorno.
  • LOCATION: la región en la que se encuentra el entorno.
  • WS_IP_RANGE: el intervalo de IPs, en notación CIDR, que puede acceder a la interfaz de usuario de Airflow.
  • WS_RANGE_DESCRIPTION: la descripción del intervalo de IPs.

Ejemplo:

gcloud composer environments update example-environment \
    --location us-central1 \
    --update-web-server-allow-ip ip_range=192.0.2.0/24,description="example range" \
    --update-web-server-allow-ip ip_range=192.0.4.0/24,description="example range 2"

API

  1. Crea una solicitud a la API [environments.patch][api-patch].

  2. En esta solicitud:

    1. En el parámetro updateMask, especifique la máscara config.webServerNetworkAccessControl.

    2. En el cuerpo de la solicitud, especifica cómo se deben guardar los registros de tareas de Airflow:

      • Para proporcionar acceso a Airflow desde todas las direcciones IP, especifique un elemento config vacío (el elemento webServerNetworkAccessControl no debe estar presente).

      • 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, especifica un elemento webServerNetworkAccessControl vacío. El elemento webServerNetworkAccessControl debe estar presente, pero no debe contener ningún elemento allowedIpRanges.

{
  "config": {
    "webServerNetworkAccessControl": {
      "allowedIpRanges": [
        {
          "value": "WS_IP_RANGE",
          "description": "WS_RANGE_DESCRIPTION"
        }
      ]
    }
  }
}

Haz los cambios siguientes:

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

Ejemplo:

// PATCH https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.webServerNetworkAccessControl

{
  "config": {
    "webServerNetworkAccessControl": {
      "allowedIpRanges": [
        {
          "value": "192.0.2.0/24",
          "description": "example range"
        },
        {
          "value": "192.0.4.0/24",
          "description": "example range 2"
        }
      ]
    }
  }
}

Terraform

En el bloque allowed_ip_range, en web_server_network_access_control especifica los intervalos 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"
      }

    }

  }
}

Haz los cambios siguientes:

  • WS_IP_RANGE: el intervalo de IPs, en notación CIDR, que puede acceder a la interfaz de usuario de Airflow.
  • WS_RANGE_DESCRIPTION: 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 = "example range"
      },
      allowed_ip_range {
        value = "192.0.4.0/24"
        description = "example range 2"
      }

    }
}

Siguientes pasos