Accede a la interfaz de usuario web de Apache Airflow

Cloud Composer 1 | Cloud Composer 2

Apache Airflow incluye una interfaz de usuario (IU) web que puedes usar para administrar flujos de trabajo (DAG), el entorno de Airflow y realizar acciones administrativas. Por ejemplo, puedes usar la interfaz web para revisar el progreso de un DAG, configurar una nueva conexión de datos o revisar los registros de ejecuciones anteriores del DAG.

Servidor web de Airflow

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

Antes de comenzar

  • Debes tener una función que pueda ver los entornos de Cloud Composer. Para obtener más información, consulta Guía de control de acceso.

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

  • Cloud Composer 2 es compatible con la función de control de acceso a la IU de Airflow (control de acceso basado en funciones de Airflow) para la interfaz web de Airflow.

  • Si la opción Controles de API > Apps de terceros no configuradas > No permitir que los usuarios accedan a ninguna app de terceros está habilitada en Google Workspace y Apache Airflow en la app de Cloud Composer no está permitido de forma explícita, los usuarios no pueden acceder a la IU de Airflow, a menos que permitan la aplicación de forma explícita. Para permitir el acceso, sigue los pasos que se indican en Permite el acceso a la IU de Airflow en Google Workspace.

Accede a la interfaz web de Airflow

El servidor web de Airflow se ejecuta como una carga de trabajo en el clúster de tu entorno. El servidor web se implementa en el dominio composer.googleusercontent.com y proporciona acceso a la interfaz web de Airflow.

Cloud Composer 2 proporciona acceso a la interfaz en función de las identidades de los usuarios y las vinculaciones de políticas de IAM definidas para los usuarios. En comparación con Cloud Composer 1, Cloud Composer 2 usa un mecanismo diferente que no depende de Identity-Aware Proxy.

Accede a la interfaz web desde la consola de Google Cloud

Sigue estos pasos para acceder a la interfaz web de Airflow desde la consola de Google Cloud:

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

    Ir a Entornos

  2. En la columna Servidor web de Airflow, sigue el vínculo de Airflow para tu entorno.

Limita el acceso al servidor web de Airflow

Los entornos de Composer te permiten limitar el acceso al servidor web de Airflow:

  • Puedes bloquear todo el acceso o permitir el acceso desde rangos de IP externas IPv4 o IPv6 específicos.
  • No es posible configurar los rangos de IP permitidos con direcciones IP privadas.

Recupera la URL de la interfaz web a través de la herramienta de línea de comandos de gcloud

Puedes acceder a la interfaz web de Airflow desde cualquier navegador web. Para obtener la URL de la interfaz web, ingresa el siguiente comando de gcloud:

gcloud composer environments describe ENVIRONMENT_NAME \
  --location LOCATION

Reemplaza lo siguiente:

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

El comando gcloud muestra las propiedades de un entorno de Cloud Composer, incluidas las URLs de la interfaz web. Las URLs se muestran como airflowUri y airflowByoidUri:

config:
  airflowUri: https://example-dot-us-central1.composer.googleusercontent.com
  airflowByoidUri: https://example-dot-us-central1.composer.byoid.googleusercontent.com

Reinicia el servidor web

Cuando depuras o solucionas problemas de entornos de Cloud Composer, puedes resolver algunos problemas si reinicias el servidor web de Airflow. Puedes reiniciar el servidor web con la API de RestartWebServer o el comando de gcloud restart-web-server:

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

Configura 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, debes configurar el acceso al servidor web por separado. Por ejemplo, un entorno de IP privada aún puede tener la IU de Airflow accesible desde Internet.

No es posible configurar los rangos de IP permitidos con direcciones IP privadas.

Console

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

    Ir a Entornos

  2. En la lista de entornos, haz clic en el nombre de tu 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 del 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 de Airflow desde todas las direcciones IP, selecciona Permitir el acceso desde todas las direcciones IP.

    • Para restringir el acceso solo a rangos de IP específicos, selecciona Permitir el acceso solo desde direcciones IP específicas. En el campo Rango de IP, especifica un rango de IP en la notación CIDR. En el campo Descripción, especifica una descripción opcional para este rango. Si deseas especificar más de un rango, haz clic en Agregar rango de IP.

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

gcloud

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

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

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

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

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

Reemplaza lo siguiente:

  • ENVIRONMENT_NAME: Es el nombre de tu entorno.
  • LOCATION: Es la región en la que se encuentra el entorno.
  • WS_IP_RANGE: Es el rango de IP, en la notación CIDR, que puede acceder a la IU de Airflow.
  • WS_RANGE_DESCRIPTION: Es la descripción del rango de IP.

Ejemplo:

gcloud composer environments update example-environment \
    --location us-central1 \
    --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

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

  2. En esta solicitud, realiza lo siguiente:

    1. En el parámetro updateMask, especifica 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, especifica un elemento config vacío (el elemento webServerNetworkAccessControl no debe estar presente).

      • Para restringir el acceso solo a rangos de IP específicos, especifica uno o más rangos en allowedIpRanges.

      • Para prohibir el acceso a todas las direcciones IP, especifica un elemento webServerNetworkAccessControl vacío. El elemento webServerNetworkAccessControl debe estar presente, pero no debe contener un elemento allowedIpRanges.

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

Reemplaza lo siguiente:

  • WS_IP_RANGE: Es el rango de IP, en la notación CIDR, que puede acceder a la IU de Airflow.
  • WS_RANGE_DESCRIPTION: Es la descripción del rango de IP.

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": "office net 1"
        },
        {
          "value": "192.0.4.0/24",
          "description": "office net 3"
        }
      ]
    }
  }
}

Terraform

En el bloque allowed_ip_range, en web_server_network_access_control, especifica los rangos de IP que pueden acceder al servidor web.

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

  config {

    web_server_network_access_control {

      allowed_ip_range {
        value = "WS_IP_RANGE"
        description = "WS_RANGE_DESCRIPTION"
      }

    }

  }
}

Reemplaza lo siguiente:

  • WS_IP_RANGE por el rango de IP, en la notación CIDR, que puede acceder a la IU de Airflow
  • WS_RANGE_DESCRIPTION por la descripción del rango de IP

Ejemplo:

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

  config {

    web_server_network_access_control {
      allowed_ip_range {
        value = "192.0.2.0/24"
        description = "office net 1"
      },
      allowed_ip_range {
        value = "192.0.4.0/24"
        description = "office net 3"
      }

    }
}

¿Qué sigue?