Accedere all'interfaccia web di Airflow

Managed Airflow (terza generazione) | Managed Airflow (seconda generazione) | Managed Airflow (prima generazione legacy)

Apache Airflow include un'interfaccia utente web chiamata UI di Airflow, 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 di Airflow

Ogni ambiente Managed Airflow ha un server web che esegue la UI di Airflow. Il server web fa parte dell' architettura dell'ambiente Managed Airflow.

Prima di iniziare

  • Devi avere un ruolo che possa visualizzare gli ambienti Managed Airflow. Per ulteriori informazioni, consulta Controllo dell'accesso.

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

  • Managed Airflow (terza generazione) supporta la funzionalità di controllo dell'accesso alla UI di Airflow (controllo dell'accesso basato sui ruoli di Airflow) per la UI di Airflow.

  • Se l'opzione Controlli API > App di terze parti non configurate > Non consentire agli utenti di accedere ad app di terze parti è abilitata in Google Workspace e l'app Apache Airflow in Managed Airflow non è consentita in modo esplicito, gli utenti non possono accedere alla UI di Airflow a meno che non consentano esplicitamente l'applicazione. Per consentire l'accesso, segui i passaggi descritti in Consentire l'accesso alla UI di Airflow in Google Workspace.

  • Se i binding di accesso sensibile al contesto di Chrome Enterprise Premium Context-Aware Access bindings vengono utilizzati con livelli di accesso che si basano sugli attributi del dispositivo e l'app Apache Airflow in Managed Airflow non è esente, non è possibile accedere alla UI di Airflow a causa di un loop di accesso. Per consentire l'accesso, segui i passaggi descritti in Consentire l'accesso alla UI di Airflow nei binding di accesso sensibile al contesto.

  • Se le regole in entrata sono configurate in un perimetro dei Controlli di servizio VPC che protegge il progetto e la regola in entrata che consente l'accesso al servizio Managed Airflow utilizza il tipo di identità ANY_SERVICE_ACCOUNT o ANY_USER_ACCOUNT, gli utenti non possono accedere alla UI di Airflow, con conseguente loop di accesso. Per ulteriori informazioni su come risolvere questo scenario, consulta Consentire l'accesso alla UI di Airflow nelle regole in entrata dei Controlli di servizio VPC.

  • Managed Airflow non supporta l'utilizzo di identità di terze parti nelle regole in entrata e in uscita per consentire le operazioni della UI di Apache Airflow. Tuttavia, puoi utilizzare il tipo di identità ANY_IDENTITY nelle regole in entrata e in uscita per consentire l'accesso a tutte le identità, incluse quelle di terze parti. Per ulteriori informazioni sul tipo di identità ANY_IDENTITY, consulta Regole in entrata e in uscita.

Accedere alla UI di Airflow

In Managed Airflow (terza generazione), il server web di Airflow viene eseguito nel progetto tenant del tuo ambiente. Il server web viene deployment nel dominio composer.googleusercontent.com e fornisce l'accesso alla UI di Airflow.

Managed Airflow (terza generazione) fornisce l'accesso all'interfaccia in base alle identità utente e ai binding dei criteri IAM definiti per gli utenti.

Accedere alla UI di Airflow dalla Google Cloud console

Per accedere alla UI di Airflow dalla Google Cloud console:

  1. Nella Google Cloud console, 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 della UI di Airflow con Google Cloud CLI

Puoi accedere alla UI di Airflow da qualsiasi browser web. Per ottenere l'URL della UI 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 Google Cloud CLI mostra le proprietà di un ambiente Managed Airflow, inclusi gli URL per la UI di Airflow. Gli URL sono elencati come airflowUri e airflowByoidUri:

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

Riavviare il server web

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

gcloud 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 al server web di Airflow non dipendono dalla configurazione di rete dell'ambiente. Configura invece l'accesso al server web separatamente. Ad esempio, un ambiente IP privato può comunque avere la UI di Airflow accessibile da internet.

Non è possibile configurare gli intervalli IP consentiti in modo che siano indirizzi IP privati.

Console

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

    Vai ad Ambienti

  2. Nell'elenco degli ambienti, fai clic sul nome del tuo ambiente. Si apre la pagina Dettagli ambiente.

  3. Vai alla scheda Configurazione ambiente.

  4. Nella sezione Configurazione di rete, individua l'elemento Controllo dell'accesso al 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 di 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 a tutti gli indirizzi IP, seleziona Consenti l'accesso solo da indirizzi IP specifici e fai clic su Elimina elemento accanto alla voce dell'intervallo vuoto.

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.

  • --update-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 a tutti gli indirizzi IP.

gcloud composer environments update ENVIRONMENT_NAME \
    --location LOCATION \
    --update-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, in notazione CIDR, che può accedere alla UI di Airflow.
  • WS_RANGE_DESCRIPTION: la descrizione dell'intervallo IP.

Esempio:

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 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 a 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, in notazione CIDR, che può accedere alla UI 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, in notazione CIDR, che può accedere alla UI 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