Acessar a interface da Web do Airflow

Airflow gerenciado (Geração 3) | Airflow gerenciado (Geração 2) | Airflow gerenciado (Geração 1 legada)

O Apache Airflow inclui uma interface de usuário da Web chamada Airflow UI, que pode ser usada para gerenciar DAGs do Airflow, visualizar registros de execução de DAGs, monitorar o Airflow e realizar ações administrativas.

Sobre o servidor da Web do Airflow

Cada ambiente do Airflow gerenciado tem um servidor da Web que executa a interface do Airflow. O servidor da Web faz parte da arquitetura do ambiente do Airflow gerenciado.

Antes de começar

  • Você precisa ter um papel que possa visualizar os ambientes do Airflow gerenciado. Para mais informações, consulte Controle de acesso.

  • Durante a criação do ambiente, o Airflow gerenciado configura o URL do servidor da Web que executa a interface do Airflow. Não é possível personalizar o URL.

  • O Airflow gerenciado (Geração 3) oferece suporte ao recurso de controle de acesso da interface do Airflow (controle de acesso baseado em papéis do Airflow) para a interface do Airflow.

  • Se a opção Controles de API > Apps de terceiros não configurados > Não permitir que os usuários acessem apps de terceiros estiver ativada no Google Workspace e o app Apache Airflow no Airflow gerenciado não estiver explicitamente permitido, os usuários não poderão acessar a interface do Airflow, a menos que permitam explicitamente o aplicativo. Para permitir o acesso, siga as etapas fornecidas em Permitir acesso à interface do Airflow no Google Workspace.

  • Se as vinculações de acesso baseado no contexto do Chrome Enterprise Premium forem usadas com níveis de acesso que dependem de atributos do dispositivo e o app Apache Airflow no Airflow gerenciado não estiver isento, não será possível acessar a interface do Airflow devido a um loop de login. Para permitir o acesso, siga as etapas fornecidas em Permitir acesso à interface do Airflow em vinculações de acesso baseado no contexto.

  • Se as regras de entrada forem configuradas em um perímetro do VPC Service Controls que protege o projeto e a regra de entrada que permite o acesso ao serviço do Airflow gerenciado usar o tipo de identidade ANY_SERVICE_ACCOUNT ou ANY_USER_ACCOUNT, os usuários não poderão acessar a interface do Airflow, resultando em um loop de login. Para mais informações sobre como resolver esse cenário, consulte Permitir acesso à interface do Airflow em regras de entrada do VPC Service Controls.

  • O Airflow gerenciado não oferece suporte ao uso de identidades de terceiros em regras de entrada e saída para permitir operações da interface do Apache Airflow. No entanto, é possível usar o tipo de identidade ANY_IDENTITY nas regras de entrada e saída para permitir o acesso a todas as identidades, incluindo as de terceiros. Para mais informações sobre o tipo de identidade ANY_IDENTITY, consulte Regras de entrada e saída.

Acessar a interface do Airflow

No Airflow gerenciado (Geração 3), o servidor da Web do Airflow é executado no projeto de locatário do seu ambiente. O servidor da Web é implantado no domínio composer.googleusercontent.com e fornece acesso à interface do Airflow.

O Airflow gerenciado (Geração 3) fornece acesso à interface com base nas identidades do usuário e nas vinculações de política do IAM definidas para os usuários.

Acessar a interface do Airflow no Google Cloud console

Para acessar a interface do Airflow no Google Cloud console:

  1. No Google Cloud console, acesse a página Ambientes.

    Acessar "Ambientes"

  2. Na coluna Servidor da Web do Airflow, siga o link Airflow do ambiente.

  3. Faça login com uma Conta do Google que tenha as permissões apropriadas.

Receber o URL da interface do Airflow com a Google Cloud CLI

É possível acessar a interface do Airflow usando qualquer navegador. Para receber o URL da interface do Airflow, execute o comando a seguir na Google Cloud CLI:

gcloud composer environments describe ENVIRONMENT_NAME \
  --location LOCATION

Substitua:

  • ENVIRONMENT_NAME: o nome do ambiente;
  • LOCATION: a região em que o ambiente está localizado.

O comando da CLI do Google Cloud mostra as propriedades de um ambiente do Airflow Gerenciado, incluindo os URLs da interface do Airflow. Os URLs são listados como airflowUri e airflowByoidUri:

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

Reiniciar o servidor da Web

Ao depurar ou solucionar problemas de ambientes do Airflow gerenciado, alguns problemas podem ser resolvidos com a reinicialização do servidor da Web do Airflow. Reinicie o servidor da Web usando a API restartWebServer ou o restart-web-server comando na Google Cloud CLI:

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

Substitua:

  • ENVIRONMENT_NAME: o nome do ambiente;
  • LOCATION: a região em que o ambiente está localizado.

Configurar o acesso à rede do servidor da Web

Os parâmetros de acesso do servidor da Web do Airflow não dependem da configuração de rede do ambiente. Em vez disso, você configura o acesso ao servidor da Web separadamente. Por exemplo, um ambiente de IP privado ainda pode ter a interface do Airflow acessível pela Internet.

Não é possível configurar os intervalos de IP permitidos para serem endereços IP particulares.

Console

  1. No Google Cloud console, acesse a página Ambientes.

    Acessar "Ambientes"

  2. Na lista de ambientes, clique no nome do seu ambiente. A página Detalhes do ambiente será aberta.

  3. Acesse a guia Configuração do ambiente.

  4. Na seção Configuração de rede, encontre o item Controle de acesso do servidor da Web e clique em Editar.

  5. Na caixa de diálogo Controle de acesso à rede do servidor da Web:

    • Para conceder acesso ao servidor da Web do Airflow de todos os endereços IP, selecione Permitir acesso de todos os endereços IP.

    • Para restringir o acesso somente a intervalos de IP específicos, selecione Permitir acesso apenas de endereços IP específicos. No campo Intervalo de IP, especifique um intervalo de IP na notação CIDR. No campo Descrição, especifique uma descrição opcional para este intervalo. Se você quiser especificar mais de um intervalo, clique em Adicionar intervalo de IP.

    • Para proibir o acesso de todos os endereços IP, selecione Permitir acesso somente de endereços IP específicos e clique em Excluir item ao lado da entrada de intervalo vazia.

gcloud

Quando você atualiza um ambiente, os seguintes argumentos controlam os parâmetros de acesso do servidor da Web:

  • --web-server-allow-all fornece acesso ao Airflow a partir de todos os endereços IP. Essa é a opção padrão.

  • --update-web-server-allow-ip restringe o acesso apenas a intervalos de IP de origem específicos. Para especificar vários intervalos de IP, use esse argumento várias vezes.

  • --web-server-deny-all proíbe o acesso a todos os endereços IP.

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

Substitua:

  • ENVIRONMENT_NAME: o nome do ambiente;
  • LOCATION: a região em que o ambiente está localizado.
  • WS_IP_RANGE: o intervalo de IP, na notação CIDR, que pode acessar a interface do Airflow.
  • WS_RANGE_DESCRIPTION: a descrição do intervalo de IP.

Exemplo:

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. Crie uma solicitação de API [environments.patch][api-patch].

  2. Nesta solicitação:

    1. No parâmetro updateMask, especifique a máscara config.webServerNetworkAccessControl.

    2. No corpo da solicitação, especifique como os registros de tarefas do Airflow precisam ser salvos:

      • Para fornecer acesso ao Airflow de todos os endereços IP, especifique um elemento config vazio (o elemento webServerNetworkAccessControl não pode estar presente).

      • Para restringir o acesso apenas a intervalos de IP específicos, especifique um ou mais intervalos em allowedIpRanges.

      • Para proibir o acesso de todos os endereços IP, especifique um elemento webServerNetworkAccessControl vazio. O elemento webServerNetworkAccessControl precisa estar presente, mas não pode conter um elemento allowedIpRanges.

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

Substitua:

  • WS_IP_RANGE: o intervalo de IP, na notação CIDR, que pode acessar a interface do Airflow.
  • WS_RANGE_DESCRIPTION: a descrição do intervalo de IP.

Exemplo:

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

No bloco allowed_ip_range, em web_server_network_access_control, especifique os intervalos de IP que podem acessar o servidor da 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"
      }

    }

  }
}

Substitua:

  • WS_IP_RANGE: o intervalo de IP, na notação CIDR, que pode acessar a interface do Airflow.
  • WS_RANGE_DESCRIPTION: a descrição do intervalo de IP.

Exemplo:

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

    }
}

A seguir