无服务器 VPC 访问通道

通过无服务器 VPC 访问通道,您可以从无服务器环境(例如 Cloud Run、App Engine 或 Cloud Functions)直接连接到 Virtual Private Cloud 网络。通过配置无服务器 VPC 访问通道,无服务器环境可以使用内部 DNS 和内部 IP 地址(如 RFC 1918RFC 6598 所定义)向 VPC 网络发送请求。对这些请求的响应也使用您的内部网络。

使用无服务器 VPC 访问通道有两个主要的好处:

  • 发送到 VPC 网络的请求绝不会向互联网公开。
  • 与互联网相比,通过无服务器 VPC 访问通道进行的通信延迟时间更短。

只有当内部流量是对从无服务器环境通过无服务器 VPC 访问通道连接器发送的请求的响应时,无服务器 VPC 访问通道才会将此内部流量发送到无服务器环境。如需了解如何将其他内部流量发送到无服务器环境,请参阅专用 Google 访问通道

如需跨多个 VPC 网络和 Google Cloud 项目访问资源,您还必须配置共享 VPCVPC 网络对等互连

工作原理

无服务器 VPC 访问通道基于名为连接器的资源。连接器会处理无服务器环境与 VPC 网络之间的流量。在 Google Cloud 项目中创建连接器后,将其连接到特定的 VPC 网络和地区。然后,您可以配置无服务器服务,将此连接器用于出站网络流量。

IP 地址范围

您可以通过两种方式为连接器设置 IP 地址范围:

  • 子网:如果没有资源在使用现有的 /28 子网,则可以指定该子网。
  • CIDR 范围:您可以指定未使用的 /28 CIDR 范围。请确保此范围不与任何已在使用的 CIDR 范围重叠。

通过连接器发送到 VPC 网络的流量来自您指定的子网或 CIDR 范围。

防火墙规则

如果子网不是共享子网,则在 VPC 网络上创建了优先级为 1000 的隐式防火墙规则,以允许流量从连接器的 IP 范围进入网络中的所有目的地。隐式防火墙规则不会显示在 Google Cloud Console 中,并且仅在关联的连接器存在时存在。

扩缩

无服务器 VPC 访问通道连接器由连接器实例组成。无服务器 VPC 访问通道会根据通过连接器发送的流量自动预配连接器实例,并遵守 min-instancesmax-instances 设置。连接器实例只会扩容,而不会缩容。连接器实例可以使用多种机器类型之一。机器类型越大,吞吐量越高。您可以在 Google Cloud Console 中查看每种机器类型的估算吞吐量和费用。

网络标记

借助无服务器 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 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 访问通道支持
VPC
共享 VPC
传统网络
连接到 Cloud Interconnect 的网络
连接到 Cloud VPN 的网络
连接到 VPC 网络对等互连的网络

下表显示了支持无服务器 VPC 访问通道的无服务器环境:

无服务器环境 无服务器 VPC 访问通道支持
Cloud Run
Cloud Run for Anthos*
Cloud Functions
App Engine 标准环境 除 PHP 5 之外的所有运行时
App Engine 柔性环境*

*如果您想要在从 Cloud Run for Anthos 或 App Engine 柔性环境连接时使用内部地址,则无需配置无服务器 VPC 访问通道。只需确保您的服务部署在与您想要访问的资源连接的 VPC 网络中。

支持的网络协议

下表显示了无服务器 VPC 访问通道连接器支持的网络协议。

协议 仅路由通过 VPC 连接器向专用 IP 发送的请求 路由通过 VPC 连接器发送的所有流量
TCP
UDP
ICMP 仅支持外部 IP 地址

支持的区域

支持 Cloud Run、Cloud Functions 或 App Engine 标准环境的每个区域均支持无服务器 VPC 访问通道连接器。

如需查看可用区域,请运行以下命令:

gcloud compute networks vpc-access locations list

后续步骤