访问 Apache Airflow 网页界面

Cloud Composer 1 | Cloud Composer 2

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

Airflow Web 服务器

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

准备工作

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

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

  • Cloud Composer 2 支持 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 服务器访问参数不取决于环境类型。您可以单独配置 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 界面的 IP 范围(采用 CIDR 表示法)。
  • 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 界面的 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": "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"
      }

    }
}

后续步骤