访问 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 网页界面。

  • 如果 API 控件 > 未配置的第三方应用 > 不允许用户访问任何第三方应用选项 在 Google Workspace 中启用了 Apache Airflow, 未明确允许 Cloud Composer 应用,因此用户不会 访问 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 服务器访问参数不取决于您的应用类型, 环境您可以单独配置 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。 这是默认选项。

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

    }
}

后续步骤