无服务器 VPC 访问通道
通过无服务器 VPC 访问通道,您可以从无服务器环境(例如 Cloud Run、App Engine 或 Cloud Run functions)直接连接到 Virtual Private Cloud (VPC) 网络。通过配置无服务器 VPC 访问通道,无服务器环境可以使用内部 DNS 和内部 IP 地址(如 RFC 1918 和 RFC 6598 所定义)向 VPC 网络发送请求。对这些请求的响应也使用您的内部网络。
使用无服务器 VPC 访问通道有两个主要的好处:
- 发送到 VPC 网络的请求绝不会向互联网公开。
- 与互联网相比,通过无服务器 VPC 访问通道进行的通信延迟时间更短。
只有当内部流量是对从无服务器环境通过无服务器 VPC 访问通道连接器发送的请求的响应时,无服务器 VPC 访问通道才会将此内部流量发送到无服务器环境。如需了解如何将其他内部流量发送到无服务器环境,请参阅专用 Google 访问通道。
如需跨多个 VPC 网络和 Google Cloud 项目访问资源,您还必须配置共享 VPC 或 VPC 网络对等互连。
工作原理
无服务器 VPC 访问通道基于名为连接器的资源。连接器会处理无服务器环境与 VPC 网络之间的流量。在 Google Cloud 项目中创建连接器后,将其连接到特定的 VPC 网络和地区。然后,您可以配置无服务器服务,将此连接器用于出站网络流量。
IP 地址范围
您可以通过两种方式为连接器设置 IP 地址范围:
- 子网:您可以指定现有
/28
子网,前提是没有资源已使用该子网。 - CIDR 范围:您可以指定未使用的
/28
CIDR 范围。指定此范围时,请确保其不与任何已在使用的 CIDR 范围重叠。
通过连接器发送到 VPC 网络的流量来自您指定的子网或 CIDR 范围。
防火墙规则
防火墙规则对于连接器的运行以及其与其他资源(包括您网络中的资源)的通信至关重要。
适用于独立 VPC 网络或共享 VPC 主机项目中的连接器的防火墙规则
如果您在独立 VPC 网络或共享 VPC 网络的宿主项目中创建连接器,Google Cloud 会创建所有必要的防火墙规则。只要关联的连接器存在,这些防火墙规则就会存在。它们会显示在 Google Cloud 控制台中,但无法修改或删除。
防火墙规则用途 | 姓名格式 | 类型 | 操作 | 优先级 | 协议和端口 |
---|---|---|---|---|---|
允许从特定端口上的健康检查探测范围(35.191.0.0/16 、35.191.192.0/18 、130.211.0.0/22 )向连接器的虚拟机实例发送流量 |
aet-CONNECTOR_REGION-CONNECTOR_NAME-hcfw |
入站流量 | 允许 | 100 | TCP:667 |
允许在特定端口上从 Google 的底层无服务器基础架构 (35.199.224.0/19 ) 将流量转发到连接器的虚拟机实例 |
aet-CONNECTOR_REGION-CONNECTOR_NAME-rsgfw |
入站流量 | 允许 | 100 | TCP:667、UDP:665-666、ICMP |
允许在特定端口上从连接器的虚拟机实例到 Google 的底层无服务器基础架构 (35.199.224.0/19 ) 的流量 |
aet-CONNECTOR_REGION-CONNECTOR_NAME-earfw |
出站 | 允许 | 100 | TCP:667、UDP:665-666、ICMP |
对于所有其他端口,阻止从连接器的虚拟机实例到 Google 的底层无服务器基础架构 (35.199.224.0/19 ) 的流量 |
aet-CONNECTOR_REGION-CONNECTOR_NAME-egrfw |
出站 | 拒绝 | 100 | TCP:1-666、668-65535、UDP:1-664、667-65535 |
允许从连接器的虚拟机实例(基于其 IP 地址)到连接器 VPC 网络中的所有资源的所有流量 | aet-CONNECTOR_REGION-CONNECTOR_NAME-sbntfw |
入站流量 | 允许 | 1000 | TCP、UDP、ICMP |
允许从连接器的虚拟机实例(基于其网络标记)到连接器的 VPC 网络中的所有资源的所有流量 | aet-CONNECTOR_REGION-CONNECTOR_NAME-tagfw |
入站流量 | 允许 | 1000 | TCP、UDP、ICMP |
您可以使用 VPC 防火墙规则或防火墙政策中的规则来进一步限制连接器对其目标 VPC 网络中的资源的访问权限。添加防火墙规则时,请确保其优先级高于 100,以免与 Google Cloud 设置的隐藏防火墙规则冲突。如需了解详情,请参阅限制连接器虚拟机访问 VPC 网络资源。
共享 VPC 服务项目中的连接器的防火墙规则
但是,如果您在服务项目中创建连接器,并且该连接器连接宿主项目中的共享 VPC 网络,则需要添加防火墙规则,以便为连接器操作提供必要的流量。
您还可以使用 VPC 防火墙规则或防火墙政策中的规则来限制连接器对其目标 VPC 网络中的资源的访问权限。 如需了解详情,请参阅对 VPC 资源的访问权限。
吞吐量和扩缩
无服务器 VPC 访问通道连接器由连接器实例组成。连接器实例可以使用多种机器类型之一。机器类型越大,吞吐量越高。您可以在 Google Cloud 控制台和下表中查看每种机器类型的估算吞吐量和费用。
机器类型 | 估算的吞吐量范围 (Mbps)* | 价格 (连接器实例加上网络出站数据传输费用) |
---|---|---|
f1-micro |
100-500 | f1-micro 价格 |
e2-micro |
200-1000 | e2-micro 价格 |
e2-standard-4 |
3200-16000 | e2 standard 价格 |
* 最大吞吐量范围是根据常规操作估算的值。实际吞吐量取决于许多因素。请参阅虚拟机网络带宽。
您可以设置连接器的最小和最大连接器实例数量。最小值必须至少为 2。最大值最多可以为 10,并且必须大于最小值。如果您没有为连接器指定实例数下限和上限,则系统会应用默认最小值 2 和默认最大值 10。当 Google 执行每两周一次的维护(例如安全更新)时,连接器可能会暂时超出为实例数上限设置的值。在维护期间,可以添加其他实例以确保服务不会中断。维护后,连接器返回的实例数与进入维护时间段前的实例数相同。维护通常持续几分钟。为了减少维护期间的影响,请使用连接池,不要依赖于连接时长超过 1 分钟的连接。实例会在关闭前一分钟停止接受请求。
无服务器 VPC 访问通道会随着流量的增加自动横向扩容连接器中的实例数量。添加的实例属于您为连接器指定的类型。连接器不能混用机器类型。连接器不会缩容。为了防止连接器扩容超出您的预期,请将实例数上限设置为较小的数字。如果连接器已扩容,并且您希望减少实例数量,请使用所需的实例数量重新创建连接器。
示例
如果您选择 f1-micro
作为机器类型,并分别使用最小和最大实例数(分别为 2 和 10)的默认值,则连接器的估计吞吐量对于默认最小实例数为 100 Mbps,对于默认最大实例数为 500 Mbps。
吞吐量图表
您可以通过 Google Cloud 控制台中的“连接器详细信息”页面监控当前吞吐量。此页面上的吞吐量图表显示了连接器的吞吐量指标的详细视图。
网络标记
借助无服务器 VPC 访问通道网络标记,您可以在防火墙规则和路由中引用 VPC 连接器。
每个无服务器 VPC 访问通道连接器都会自动接收以下两个网络标记(有时称为“实例标记”):
通用网络标记 (
vpc-connector
):适用于所有现有连接器和未来的所有连接器。唯一网络标记 (
vpc-connector-REGION-CONNECTOR_NAME
):适用于 REGION 区域中的连接器 CONNECTOR_NAME。
无法删除这些网络标记。无法添加新的网络标记。
使用场景
您可以使用无服务器 VPC 访问通道访问 Compute Engine 虚拟机实例、Memorystore 实例以及具有内部 DNS 或内部 IP 地址的任何其他资源。以下是一些示例:
- 您使用 Memorystore 存储无服务器服务的数据。
- 您的无服务器工作负载使用您在 Compute Engine 虚拟机上运行的第三方软件。
- 您在 Compute Engine 中的托管式实例组中运行后端服务,并需要您的无服务器环境在不向互联网公开的情况下与此后端通信。
- 您的无服务器环境需通过 Cloud VPN 访问本地数据库中的数据。
示例
在此示例中,Google Cloud 项目跨以下无服务器环境运行多个服务:App Engine、Cloud Run functions 和 Cloud Run。
已创建无服务器 VPC 访问通道连接器并分配了 IP 地址范围 10.8.0.0/28
。因此,从连接器发送的任何请求的来源 IP 地址都在此范围内。
VPC 网络中有两个资源。其中一个资源具有内部 IP 地址 10.0.0.4
。另一个资源具有内部 IP 地址 10.1.0.2
,并且位于与无服务器 VPC 访问通道连接器不同的区域。
连接器处理直接来自这些内部 IP 地址的请求和响应的发送和接收。当连接器将请求发送到内部 IP 地址为 10.1.0.2
的资源时,需支付出站数据传输费用,因为该资源位于不同的区域。
无服务器环境与 VPC 网络中资源之间的所有请求和响应均在内部传输。
发送到外部 IP 地址的请求仍通过互联网传输,不使用无服务器 VPC 访问通道连接器。
下图展示了此配置。
价格
对于无服务器 VPC 访问通道价格,请参阅 VPC 价格页面上的无服务器 VPC 访问通道。
支持的服务
下表显示了可以使用无服务器 VPC 访问通道访问的网络类型:
连接服务 | 无服务器 VPC 访问通道支持 |
---|---|
VPC | |
共享 VPC | |
传统网络 | |
连接到 Cloud Interconnect 的网络 | |
连接到 Cloud VPN 的网络 | |
连接到 VPC 网络对等互连的网络 |
下表显示了支持无服务器 VPC 访问通道的无服务器环境:
无服务器环境 | 无服务器 VPC 访问通道支持 |
---|---|
Cloud Run | |
Knative serving* | |
Cloud Run 函数 | |
App Engine 标准环境 | 除 PHP 5 之外的所有运行时 |
App Engine 柔性环境* |
*如果您想要在从 Knative serving 或 App Engine 柔性环境连接时使用内部 IP 地址,则无需配置无服务器 VPC 访问通道。只需确保您的服务部署在与您想要访问的资源连接的 VPC 网络中。
支持的网络协议
下表显示了无服务器 VPC 访问通道连接器支持的网络协议。
协议 | 通过连接器仅将请求路由到专用 IP | 通过连接器路由所有流量 |
---|---|---|
TCP | ||
UDP | ||
ICMP | 仅支持外部 IP 地址 |
支持的区域
支持 Cloud Run、Cloud Run functions 或 App Engine 标准环境的每个区域均支持无服务器 VPC 访问通道连接器。
如需查看可用区域,请运行以下命令:
gcloud compute networks vpc-access locations list
后续步骤
- 如需配置无服务器 VPC 访问通道,请参阅配置无服务器 VPC 访问通道。