Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
Apache Airflow 包含一个名为 Airflow 界面的 Web 界面,您可以使用该界面管理 Airflow DAG、查看 DAG 运行日志、监控 Airflow 以及执行管理操作。
Airflow Web 服务器简介
每个 Cloud Composer 环境都有一个 Web 服务器,用于运行 Airflow 界面。Web 服务器是 Cloud Composer 环境架构的一部分。
准备工作
您必须具有可以查看 Cloud Composer 环境的角色。如需了解详情,请参阅访问权限控制。
在创建环境期间,Cloud Composer 会为运行 Airflow 界面的 Web 服务器配置网址。该网址不可自定义。
Cloud Composer 3 支持 Airflow 界面的 Airflow 界面访问权限控制(Airflow 基于角色的访问权限控制)功能。
如果 Google Workspace 中启用了 API 控件 > 未配置的第三方应用 > 不允许用户访问任何第三方应用选项,并且未明确允许 Cloud Composer 中的 Apache Airflow 应用,则用户将无法访问 Airflow 界面,除非他们明确允许该应用。如需授予访问权限,请执行允许访问 Google Workspace 中的 Airflow 界面中提供的步骤。
如果将 Chrome Enterprise 进阶版感知上下文的访问权限绑定与依赖于设备属性的访问权限级别搭配使用,并且未豁免 Cloud Composer 应用中的 Apache Airflow,则由于会出现登录循环,因此无法访问 Airflow 界面。如需允许访问,请执行允许在情境感知访问权限绑定中访问 Airflow 界面中提供的步骤。
如果在保护项目的 VPC Service Controls 边界中配置了入站规则,并且允许访问 Cloud Composer 服务的入站规则使用
ANY_SERVICE_ACCOUNT
或ANY_USER_ACCOUNT
身份类型,则用户将无法访问 Airflow 界面,最终会陷入登录循环。如需详细了解如何解决此场景,请参阅在 VPC Service Controls 入站规则中允许访问 Airflow 界面。
访问 Airflow 界面
在 Cloud Composer 3 中,Airflow Web 服务器在环境的租户项目中运行。网络服务器部署到 composer.googleusercontent.com
网域,并提供对 Airflow 界面的访问权限。
Cloud Composer 3 会根据用户身份和为用户定义的 IAM 政策绑定来提供对该界面的访问权限。
通过 Google Cloud 控制台访问 Airflow 界面
如需通过 Google Cloud 控制台访问 Airflow 界面,请执行以下操作:
在 Google Cloud 控制台中,前往环境页面。
在 Airflow Web 服务器列中,点击与您的环境对应的 Airflow 链接。
使用具有相应权限的 Google 账号登录。
使用 Google Cloud CLI 获取 Airflow 界面网址
您可以通过任何网络浏览器访问 Airflow 界面。如需获取 Airflow 界面的网址,请在 Google Cloud CLI 中运行以下命令:
gcloud composer environments describe ENVIRONMENT_NAME \
--location LOCATION
替换以下内容:
ENVIRONMENT_NAME
:您的环境的名称。LOCATION
:环境所在的区域。
Google Cloud CLI 命令会显示 Cloud Composer 环境的属性,包括 Airflow 界面的网址。网址分别列为 airflowUri
和 airflowByoidUri
:
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 API 或 Google Cloud CLI 中的 restart-web-server
命令重启 Web 服务器:
gcloud beta composer environments restart-web-server ENVIRONMENT_NAME \
--location=LOCATION
替换以下内容:
ENVIRONMENT_NAME
:您的环境的名称。LOCATION
:环境所在的区域。
配置 Web 服务器网络访问权限
Airflow 网站服务器访问参数不取决于您环境的网络配置。您可以改为单独配置网络服务器访问权限。例如,专用 IP 环境仍然可以通过互联网访问 Airflow 界面。
您无法将允许的 IP 范围配置为专用 IP 地址。
控制台
在 Google Cloud 控制台中,前往环境页面。
在环境列表中,点击您的环境名称。环境详情页面会打开。
转到环境配置标签页。
在网络配置部分中,找到网站服务器访问权限控制项目,然后点击修改。
在网络服务器网络访问权限控制对话框中:
如需提供从所有 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 界面的 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="example range" \
--web-server-allow-ip ip_range=192.0.4.0/24,description="example range 2"
API
构建 [
environments.patch
][api-patch] API 请求。在此请求中:
在参数
updateMask
中,指定config.webServerNetworkAccessControl
掩码。在请求正文中,指定 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
在 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 = "example range"
},
allowed_ip_range {
value = "192.0.4.0/24"
description = "example range 2"
}
}
}