Accedere all'interfaccia web di Airflow

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

Apache Airflow include un'interfaccia utente web chiamata Airflow UI, che puoi utilizzare per gestire i DAG di Airflow, visualizzare i log di esecuzione dei DAG, monitorare Airflow ed eseguire azioni amministrative.

Informazioni sul server web Airflow

Ogni ambiente Cloud Composer ha un server web che esegue l'interfaccia utente di Airflow. Il server web fa parte dell'architettura dell'ambiente Cloud Composer.

Il server web analizza i file di definizione del DAG nella cartella dags/ e deve essere in grado di accedere ai dati e alle risorse di un DAG per caricarlo e gestire le richieste HTTP.

Il server web aggiorna i DAG ogni 60 secondi, che è il valore predefinitoworker_refresh_interval in Cloud Composer. Può verificarsi un errore del server web se il server web non riesce a analizzare tutti i DAG nell'intervallo di aggiornamento.

Il superamento dei 60 secondi per il caricamento dei DAG può verificarsi se esiste un numero elevato di file DAG o se il carico di lavoro per il caricamento dei file DAG è complesso. Per garantire che il server web rimanga accessibile indipendentemente dal tempo di caricamento del DAG, puoi configurare il caricamento asincrono dei DAG per analizzare e caricare i DAG in background a un intervallo preconfigurato (disponibile in composer-1.7.1-airflow-1.10.2 e versioni successive). Questa configurazione può anche ridurre il tempo di aggiornamento del DAG.

A parte il superamento dell'intervallo di aggiornamento del worker, nella maggior parte dei casi il server web può gestire in modo elegante gli errori di caricamento del DAG. I DAG che causano l'arresto anomalo o l'uscita del server web potrebbero causare la restituzione di errori nel browser. Per informazioni, consulta Risolvere i problemi relativi ai DAG.

Se continui a riscontrare problemi con il server web a causa dell'analisi del DAG, ti consigliamo di utilizzare il caricamento DAG asincrono.

Prima di iniziare

  • Devi disporre di un ruolo che consenta di visualizzare gli ambienti Cloud Composer. Per ulteriori informazioni, consulta Controllo dell'accesso.

  • Durante la creazione dell'ambiente, Cloud Composer configura l'URL per il server web che esegue l'interfaccia utente di Airflow. L'URL non è personalizzabile.

  • La funzionalità Controllo dell'accesso all'interfaccia utente di Airflow (Controllo dell'accesso basato sui ruoli di Airflow) per l'interfaccia utente di Airflow è supportata per gli ambienti Cloud Composer che eseguono Composer versione 1.13.4 o successive, Airflow versione 1.10.10 o successive e Python 3.

Accedere all'interfaccia utente di Airflow

Il servizio del server web di Airflow viene disegnato nel dominio appspot.com e fornisce accesso all'interfaccia utente di Airflow. Cloud Composer 1 fornisce accesso all'interfaccia in base alle identità utente e alle associazioni dei criteri IAM definite per gli utenti. A questo scopo, Cloud Composer 1 utilizza Identity-Aware Proxy.

Dopo aver creato un nuovo ambiente Cloud Composer, sono necessari fino a 25 minuti per il completamento dell'hosting dell'interfaccia utente e la sua accessibilità.

Accedere all'interfaccia utente di Airflow dalla console Google Cloud

Per accedere all'interfaccia utente di Airflow dalla console Google Cloud:

  1. Nella console Google Cloud, vai alla pagina Ambienti.

    Vai ad Ambienti

  2. Nella colonna Server web Airflow, segui il link Airflow per il tuo ambiente.

  3. Accedi con un Account Google che disponga delle autorizzazioni appropriate.

Ottenere l'URL dell'interfaccia utente di Airflow con Google Cloud CLI

Puoi accedere all'interfaccia utente di Airflow da qualsiasi browser web. Per ottenere l'URL per l'interfaccia utente di Airflow, esegui il seguente comando in Google Cloud CLI:

gcloud composer environments describe ENVIRONMENT_NAME \
  --location LOCATION

Sostituisci quanto segue:

  • ENVIRONMENT_NAME: il nome del tuo ambiente.
  • LOCATION: la regione in cui si trova l'ambiente.

Il comando gcloud mostra le proprietà di un ambiente Cloud Composer, incluso l'URL per l'interfaccia utente di Airflow. L'URL è elencato come airflowUri.

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

Configurare il caricamento asincrono del DAG

Quando il caricamento DAG asincrono è abilitato, il server web Airflow crea un nuovo processo. Questo processo carica i DAG in background, invia i DAG appena caricati a intervalli definiti dall'opzione dagbag_sync_interval e poi va in sospensione.

Il processo si riattiva periodicamente per ricaricare i DAG. L'intervallo è definito dall'opzione collect_dags_interval.

Per attivare il caricamento asincrono del DAG:

  1. Disattiva la serializzazione DAG. Il caricamento asincrono del DAG non può essere utilizzato con la serializzazione DAG. L'utilizzo delle opzioni di configurazione di Airflow async_dagbag_loader e store_serialized_dags genera errori HTTP 503 e danneggia l'ambiente.

  2. Esegui l'override delle seguenti opzioni di configurazione di Airflow:

    Sezione Chiave Valore Note
    webserver async_dagbag_loader True Il valore predefinito è False.
    webserver collect_dags_interval 30 Il valore predefinito è 30. Utilizza un valore più piccolo per aggiornamenti più rapidi.
    webserver dagbag_sync_interval 10 Il valore predefinito è 10.
    webserver worker_refresh_interval 3600 Il valore predefinito è 60. Con il caricamento asincrono del DAG, puoi utilizzare un intervallo di aggiornamento più lungo.

Riavvia il server web

Durante il debug o la risoluzione dei problemi degli ambienti Cloud Composer, alcuni problemi possono essere risolti riavviando il server web Airflow. Puoi riavviare il web server utilizzando l'API restartWebServer o il comando restart-web-server in Google Cloud CLI:

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

Sostituisci quanto segue:

  • ENVIRONMENT_NAME: il nome del tuo ambiente.
  • LOCATION: la regione in cui si trova l'ambiente.

Configurare l'accesso di rete al server web

I parametri di accesso del server web di Airflow non dipendono dalla configurazione di rete del tuo ambiente. Devi invece configurare l'accesso al server web separatamente. Ad esempio, un ambiente IP privato può comunque avere l'interfaccia utente di Airflow accessibile da internet.

Non è possibile configurare gli intervalli IP consentiti come indirizzi IP privati.

Console

  1. Nella console Google Cloud, vai alla pagina Ambienti.

    Vai ad Ambienti

  2. Nell'elenco degli ambienti, fai clic sul nome dell'ambiente. Viene visualizzata la pagina Dettagli dell'ambiente.

  3. Vai alla scheda Configurazione dell'ambiente.

  4. Nella sezione Configurazione di rete, individua l'elemento Controllo accesso server web e fai clic su Modifica.

  5. Nella finestra di dialogo Controllo dell'accesso di rete al server web:

    • Per fornire l'accesso al server web Airflow da tutti gli indirizzi IP, seleziona Consenti l'accesso da tutti gli indirizzi IP.

    • Per limitare l'accesso solo a intervalli IP specifici, seleziona Consenti l'accesso solo da indirizzi IP specifici. Nel campo Intervallo IP, specifica un intervallo IP in notazione CIDR. Nel campo Descrizione, specifica una descrizione facoltativa per questo intervallo. Se vuoi specificare più di un intervallo, fai clic su Aggiungi intervallo IP.

    • Per vietare l'accesso per tutti gli indirizzi IP, seleziona Consenti l'accesso solo da indirizzi IP specifici e fai clic su Elimina elemento accanto alla voce dell'intervallo vuota.

gcloud

Quando aggiorni un ambiente, i seguenti argomenti controllano i parametri di accesso al server web:

  • --web-server-allow-all fornisce l'accesso ad Airflow da tutti gli indirizzi IP. Questa è l'opzione predefinita.

  • --web-server-allow-ip limita l'accesso solo a intervalli IP di origine specifici. Per specificare più intervalli IP, utilizza questo argomento più volte.

  • --web-server-deny-all vieta l'accesso per tutti gli indirizzi IP.

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

Sostituisci quanto segue:

  • ENVIRONMENT_NAME: il nome del tuo ambiente.
  • LOCATION: la regione in cui si trova l'ambiente.
  • WS_IP_RANGE: l'intervallo IP, nella notazione CIDR, che può accedere all'interfaccia utente di Airflow.
  • WS_RANGE_DESCRIPTION: la descrizione dell'intervallo IP.

Esempio:

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

API

  1. Crea una richiesta API [environments.patch][api-patch].

  2. In questa richiesta:

    1. Nel parametro updateMask, specifica la maschera config.webServerNetworkAccessControl.

    2. Nel corpo della richiesta, specifica come devono essere salvati i log delle attività di Airflow:

      • Per fornire l'accesso ad Airflow da tutti gli indirizzi IP, specifica un elemento config vuoto (l'elemento webServerNetworkAccessControl non deve essere presente).

      • Per limitare l'accesso solo a intervalli IP specifici, specifica uno o più intervalli in allowedIpRanges.

      • Per vietare l'accesso per tutti gli indirizzi IP, specifica un elemento webServerNetworkAccessControl vuoto. L'elemento webServerNetworkAccessControl deve essere presente, ma non deve contenere un elemento allowedIpRanges.

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

Sostituisci quanto segue:

  • WS_IP_RANGE: l'intervallo IP, nella notazione CIDR, che può accedere all'interfaccia utente di Airflow.
  • WS_RANGE_DESCRIPTION: la descrizione dell'intervallo IP.

Esempio:

// 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

Nel blocco allowed_ip_range, in web_server_network_access_control specifica gli intervalli IP che possono accedere al server 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"
      }

    }

  }
}

Sostituisci quanto segue:

  • WS_IP_RANGE: l'intervallo IP, nella notazione CIDR, che può accedere all'interfaccia utente di Airflow.
  • WS_RANGE_DESCRIPTION: la descrizione dell'intervallo IP.

Esempio:

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"
      }

    }
}

Passaggi successivi