配置互联网访问和防火墙规则

本页面介绍如何为与 Dataflow 作业关联的网络提供路由并定义 Google Cloud 防火墙规则。

Dataflow 的互联网访问权限

Dataflow 工作器虚拟机 (VM) 需要能够访问 Google Cloud API 和服务。您可以为工作器虚拟机配置外部 IP 地址,使其满足互联网访问要求,也可以使用专用 Google 访问通道

专用 Google 访问通道可让仅具有内部 IP 地址的虚拟机访问 Google Cloud 和服务的特定公共 IP 地址。如需了解路由和防火墙规则要求以及配置步骤,请参阅配置专用 Google 访问通道

访问 Google Cloud 外部 API 和服务的作业需要访问互联网。例如,Python SDK 作业需要访问 Python Package Index (PyPI)。在这种情况下,您必须为工作器虚拟机配置外部 IP 地址,或者必须使用网络地址转换解决方案(例如 Cloud NAT)。如需了解详情,请参阅 Apache Beam 网站上的管理 Python 流水线依赖项

域名系统 (DNS) 限制

自定义 BIND 在使用 Dataflow 时不受支持。如需在将 Dataflow 与 VPC Service Controls 结合使用时自定义 DNS 解析,请使用 Cloud DNS 专用区域,而不是使用自定义 BIND 服务器。如需使用您自己的本地 DNS 解析,请考虑使用 Google Cloud DNS 转发方法

防火墙规则

防火墙规则使您可以允许或拒绝进出虚拟机的流量。本页面假设您熟悉 Google Cloud 防火墙规则的工作方式,如防火墙规则概览使用防火墙规则页面中所述,包括隐式防火墙规则

Dataflow 要求的防火墙规则

Dataflow 要求工作器虚拟机在您通过流水线选项指定的 VPC 网络中使用特定 TCP 端口相互通信。要允许此类通信,您需要在 VPC 网络中配置防火墙规则。

某些 VPC 网络(如自动创建的 default 网络)包含符合 Dataflow 防火墙要求的 default-allow-internal 规则。

由于所有工作器虚拟机都具有值为 dataflow 的网络标记,因此您可以为 Dataflow 创建更明确的防火墙规则。项目所有者、编辑者或安全管理员可以使用以下 gcloud 命令来创建入站流量允许规则,以允许 TCP 端口 12345 和 12346 上具有网络标记 dataflow 的虚拟机之间发送的流量:

gcloud compute firewall-rules create FIREWALL_RULE_NAME \
    --network NETWORK \
    --action allow \
    --direction DIRECTION \
    --target-tags dataflow \
    --source-tags dataflow \
    --priority 0 \
    --rules tcp:12345-12346

在上面的示例中,替换以下变量:

  • FIREWALL_RULE_NAME 替换为防火墙规则的名称
  • NETWORK 替换为工作器虚拟机使用的网络名称
  • DIRECTION 替换为防火墙规则的方向

如需进一步了解防火墙规则,请参阅使用防火墙规则。对于 Dataflow 使用的特定 TCP 端口,您可以查看项目容器清单。该容器清单会明确指定端口,以便将主机端口映射到容器。您也可以查看网络配置和活动,方法是在您的一个工作器上打开 SSH 会话,并运行 iproute2。如需了解详情,请参阅 iproute2 页面

指定网络标记

网络标记是您可以关联到 Compute Engine 虚拟机 (VM) 实例上的文本特性。通过标记,您可以将防火墙规则和路由应用于特定虚拟机实例。Dataflow 支持将网络标记添加到执行特定 Dataflow 作业的所有工作器虚拟机。

启用网络标记

您只能在作业的创建阶段设置标记。创建 Dataflow 作业后,您便无法更新正在运行的批处理或流处理流水线的标记。

JAVA

指定以下参数:

--experiments=use_network_tags=TAG-NAME

TAG-NAME 替换为您的标记名称。如果您添加多个标记,请用“;”分隔每个标记,格式如下所示:TAG-NAME-1;TAG-NAME-2;TAG-NAME-3;...

PYTHON

指定以下参数:

--experiments=use_network_tags=TAG-NAME

TAG-NAME 替换为您的标记名称。如果您添加多个标记,请用“;”分隔每个标记,格式如下所示:TAG-NAME-1;TAG-NAME-2;TAG-NAME-3;...

即使您不使用此参数,Dataflow 也始终在其所创建的每个工作器虚拟机中添加网络标记 dataflow

限制

以下限制适用于网络标记:

限制 说明
每台虚拟机的标记数上限 64 虚拟机的所有标记必须是唯一的。由于 Dataflow 始终添加 dataflow 标记,因此您可以为每个虚拟机最多分配 63 个附加标记。
每个标记的字符数上限 63
标记可接受的字符 小写字母、数字、短划线 此外:
• 标记必须以小写字母开头。
• 标记必须以数字或小写字母结尾。

通过 SSH 访问工作器虚拟机

Dataflow 不要求使用 SSH;但是,SSH 在排查问题时会相当实用。

如果工作器虚拟机具有外部 IP 地址,则您可以通过 Cloud Console 或使用 gcloud 命令行工具连接到虚拟机。如需使用 SSH 进行连接,您必须配置相应的防火墙规则,该规则至少要允许 TCP 端口 22 上来自以下系统 IP 地址的传入连接:运行 gcloud 的系统,或运行用于访问 Cloud Console 的网络浏览器的系统。

如果需要连接到仅具有内部 IP 地址的工作器虚拟机,请参阅连接到没有外部 IP 地址的实例