访问 Apache Airflow 网页界面

Cloud Composer 1 |Cloud Composer 2 |Cloud Composer 3

Apache Airflow 包括 网页界面 可用于管理工作流 (DAG)、管理 Airflow 环境 和执行管理操作。例如,您可以使用该网页界面来查看 DAG 的进度,设置新的数据连接,或查看来自先前 DAG 运行的日志。

Airflow Web 服务器

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

准备工作

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

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

  • Cloud Composer 2 支持 Airflow 界面访问权限控制 (Airflow 基于角色的访问权限控制)功能,适用于 Airflow 网页界面。

  • 如果 Google Workspace 中启用了 API 控件 > 未配置的第三方应用 > 不允许用户访问任何第三方应用选项,并且未明确允许 Cloud Composer 中的 Apache Airflow 应用,则用户将无法访问 Airflow 界面,除非他们明确允许该应用。如需授予访问权限,请执行允许访问 Google Workspace 中的 Airflow 界面中提供的步骤。

访问 Airflow 网页界面

Airflow Web 服务器作为您环境集群中的工作负载运行。Web 服务器 部署到 composer.googleusercontent.com 网域,并提供对 Airflow 网页界面

Cloud Composer 2 会根据用户身份和为用户定义的 IAM 政策绑定来提供对该界面的访问权限。与 Cloud Composer 1 相比,Cloud Composer 2 使用了一种不同的机制,该机制不依赖于 Identity-Aware Proxy。

从 Google Cloud 控制台访问网页界面

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

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

    转到“环境”

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

限制对 Airflow Web 服务器的访问

Composer 环境可让您限制对 Airflow Web 服务器的访问:

  • 您可以禁止所有访问,或允许来自特定 IPv4 或 IPv6 的外部访问 IP 地址范围。
  • 无法使用专用 IP 配置允许的 IP 范围 地址。

通过 gcloud 命令行工具检索网页界面网址

您可以通过任何网络浏览器访问 Airflow 网页界面。如需获取该网页界面的网址,请输入以下 gcloud 命令:

gcloud composer environments describe ENVIRONMENT_NAME \
  --location LOCATION

替换以下内容:

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

gcloud 命令显示了 Cloud Composer 环境的属性,包括该网页界面的网址。这些网址 列为 airflowUriairflowByoidUri

  • airflowUri 网址由 Google 账号使用。
  • 如果您在项目中配置了员工身份联合,外部身份将使用 airflowByoidUri 网址。
config:
  airflowUri: https://example-dot-us-central1.composer.googleusercontent.com
  airflowByoidUri: https://example-dot-us-central1.composer.byoid.googleusercontent.com

重启 Web 服务器

调试或排查 Cloud Composer 环境时,部分问题可以通过重启 Airflow Web 服务器来解决。您可以使用 restartWebServer APIrestart-web-server gcloud 命令重启 Web 服务器:

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

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

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

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

控制台

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

    转到“环境”

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

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

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

  5. Web 服务器网络访问权限控制对话框中,执行以下操作:

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

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

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

gcloud

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

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

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

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

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

替换以下内容:

  • ENVIRONMENT_NAME:您的环境的名称。
  • LOCATION:环境所在的区域。
  • WS_IP_RANGE:可访问 Airflow 界面。
  • WS_RANGE_DESCRIPTION:IP 范围的说明。

示例:

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. 构建 [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 界面。
  • 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": "office net 1"
        },
        {
          "value": "192.0.4.0/24",
          "description": "office net 3"
        }
      ]
    }
  }
}

Terraform

allowed_ip_range 块的 web_server_network_access_control 中,指定可以访问 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 = "office net 1"
      },
      allowed_ip_range {
        value = "192.0.4.0/24"
        description = "office net 3"
      }

    }
}

后续步骤