访问 Airflow 网页界面

Managed Airflow(第 3 代) | Managed Airflow(第 2 代) | Managed Airflow(旧版第 1 代)

Apache Airflow 包含一个名为 Airflow 界面的 Web 用户界面,您可以使用该界面来管理 Airflow DAG、查看 DAG 运行日志、监控 Airflow 以及执行管理操作。

关于 Airflow Web 服务器

每个 Managed Airflow 环境都有一个 Web 服务器,该服务器用于运行 Airflow 界面。Web 服务器是 Managed Airflow 环境架构的一部分

准备工作

  • 您必须具有可以查看 Managed Airflow 环境的角色。 如需了解详情,请参阅访问权限控制

  • 在创建环境期间,Managed Airflow 会为运行 Airflow 界面的 Web 服务器配置网址。该网址不可自定义。

  • Managed Airflow(第 3 代)支持 Airflow 界面访问权限控制(Airflow 基于角色的访问权限 控制)功能,适用于 Airflow 界面。

  • 如果 Google Workspace 中启用了 API 控制项 > 未配置的第三方应用 > 不允许用户访问任何第三方应用 选项 ,并且未明确允许 Managed Airflow 应用中的 Apache Airflow,则用户无法访问 Airflow 界面,除非他们明确允许该 应用。如需允许访问,请执行 Google Workspace 中允许访问 Airflow 界面中所述的步骤。

  • 如果 Chrome 企业进阶版 情境感知访问权限绑定与依赖于设备属性的访问权限级别搭配使用,并且 Managed Airflow 应用中的 Apache Airflow 未被豁免,则由于登录循环,无法访问 Airflow 界面。如需允许访问,请执行 情境感知访问权限绑定中 允许访问 Airflow 界面中所述的步骤。

  • 如果在保护项目的 VPC Service Controls 边界中配置了入站规则,并且允许访问 Managed Airflow 服务的入站规则使用ANY_SERVICE_ACCOUNTANY_USER_ACCOUNT身份类型,则用户无法访问 Airflow 界面,最终会陷入登录循环。如需详细了解如何解决此场景,请参阅 VPC Service Controls 入站规则中允许访问 Airflow 界面

  • Managed Airflow 不支持在 入站和出站规则中使用 第三方身份来允许 Apache Airflow 界面操作。不过,您可以在入站和出站规则中使用 ANY_IDENTITY 身份类型来允许访问所有身份,包括第三方身份。如需详细了解 ANY_IDENTITY 身份类型,请参阅 入站和出站规则

访问 Airflow 界面

在 Managed Airflow(第 3 代)中,Airflow Web 服务器运行 在环境的租户项目中。Web 服务器部署到 composer.googleusercontent.com 网域,并提供对 Airflow 界面的访问权限。

Managed Airflow(第 3 代)根据用户身份和为用户定义的 IAM 政策绑定提供对界面的访问权限。

通过 Google Cloud 控制台访问 Airflow 界面

如需通过 Google Cloud 控制台访问 Airflow 界面,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往环境页面。

    转到“环境”

  2. Airflow Web 服务器 列中,点击与您的环境对应的 Airflow 链接。

  3. 使用具有相应权限的 Google 账号登录。

使用 Google Cloud CLI 获取 Airflow 界面网址

您可以通过任何网络浏览器访问 Airflow 界面。如需获取 Airflow 界面的网址,请在 Google Cloud CLI 中运行以下命令:

gcloud composer environments describe ENVIRONMENT_NAME \
  --location LOCATION

替换以下内容:

  • ENVIRONMENT_NAME:您的环境的名称。
  • LOCATION:环境所在的区域。

Google Cloud CLI 命令显示了 Managed Airflow 环境的属性,包括 Airflow 界面的网址。 这些网址被列为 airflowUriairflowByoidUri

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

重启 Web 服务器

调试或排查 Managed Airflow 环境时,部分问题可以通过重启 Airflow Web 服务器来解决。您可以使用 restartWebServer API 或 Google Cloud CLI 中的 restart-web-server 命令重启 Web 服务器:

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

替换以下内容:

  • ENVIRONMENT_NAME:您的环境的名称。
  • LOCATION:环境所在的区域。

配置 Web 服务器网络访问权限

Airflow Web 服务器访问参数不取决于您的环境的网络配置。您可以改为单独配置 Web 服务器访问权限。 例如,专用 IP 环境仍然可以通过互联网访问 Airflow 界面。

您无法将允许的 IP 范围配置为专用 IP 地址。

控制台

  1. 在 Google Cloud 控制台中,前往环境页面。

    转到“环境”

  2. 在环境列表中,点击您的环境名称。环境详情 页面会打开。

  3. 转到环境配置 标签页。

  4. 网络配置 部分中,找到 Web 服务器访问权限控制 项,然后点击修改

  5. Web 服务器网络访问权限控制 对话框中:

    • 如需提供从所有 IP 地址访问 Airflow Web 服务器的权限,请选择允许从所有 IP 地址访问

    • 如需只允许来自特定 IP 地址范围的访问,请选择仅允许来自特定 IP 地址的访问 。在 IP 范围字段中,以 CIDR 表示法指定 IP 范围。在说明字段中,指定此范围的可选说明。如果您想指定多个范围,请点击添加 IP 范围

    • 如需禁止从所有 IP 地址访问,请选择仅允许来自特定 IP 地址的访问 ,然后点击空范围条目旁边的删除项

gcloud

更新环境时,以下参数可控制 Web 服务器访问参数:

  • --web-server-allow-all 提供从所有 IP 地址访问 Airflow 的权限。 这是默认选项。

  • --update-web-server-allow-ip 仅允许来自特定来源 IP 地址范围的访问。如需指定多个 IP 范围,请多次使用此参数。

  • --web-server-deny-all 禁止从所有 IP 地址访问。

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

替换以下内容:

  • ENVIRONMENT_NAME:您的环境的名称。
  • LOCATION:环境所在的区域。
  • WS_IP_RANGE:可以访问 Airflow 界面的 IP 地址范围(采用 CIDR 表示法)。
  • WS_RANGE_DESCRIPTION:IP 地址范围的说明。

示例:

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. 构建 [environments.patch][api-patch] API 请求。

  2. 在此请求中:

    1. updateMask 参数中,指定 config.webServerNetworkAccessControl 掩码。

    2. 在请求正文中,指定 Airflow 任务日志的保存方式:

      • 如需提供从所有 IP 地址访问 Airflow 的权限,请指定一个空 config 元素(不得存在 webServerNetworkAccessControl 元素)。

      • 如需只允许从特定 IP 地址范围访问,请在 allowedIpRanges 中指定一个或多个范围。

      • 如需禁止从所有 IP 地址访问,请指定一个空 webServerNetworkAccessControl 元素。必须存在 webServerNetworkAccessControl 元素,但不得包含 allowedIpRanges 元素。

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

替换以下内容:

  • WS_IP_RANGE:可以访问 Airflow 界面的 IP 地址范围(采用 CIDR 表示法)。
  • WS_RANGE_DESCRIPTION:IP 地址范围的说明。

示例:

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

web_server_network_access_control 中的 allowed_ip_range 块中,指定可以访问 Web 服务器的 IP 地址范围。

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

    }

  }
}

替换以下内容:

  • WS_IP_RANGE:可以访问 Airflow 界面的 IP 地址范围(采用 CIDR 表示法)。
  • WS_RANGE_DESCRIPTION:IP 地址范围的说明。

示例:

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

    }
}

后续步骤