在 2 个 App Engine 灵活服务实例之间路由流量的最佳方式是什么(在 VPC 内?)?

What is the best way to route traffic between instances of 2 App Engine Flexible services (inside a VPC?)?

我们想在一个 Google 云项目中部署两个 App Engine 服务(一个处理外部 HTTPS 请求,另一个处理来自第一个服务的接收流量)。这两个服务之间的通信是通过 mTLS 使用自签名证书完成的(第二个服务根据握手期间提供的客户端证书对第一个服务进行身份验证)。

如果我理解正确,我们无法通过 VERSION_ID-dot-SERVICE_ID-dot-PROJECT_ID.REGION_ID.r.appspot.com 域名公开除 HTTP 流量以外的流量,服务之间的通信应使用内部网络 (VPC) 进行。这也降低了与暴露内部流量相关的安全风险(尽管流量是安全的)。

我们能够使用内部 IP 地址从第一个服务的一个实例连接到另一个服务的一个实例。但是我们不太了解如何将流量从第一个服务的实例正确路由到第二个服务的一个实例。这可以通过 VPC 连接器完成,还是应该有一些 TCP 负载平衡器?

你必须结合使用两者:

  • 在第一个服务上使用无服务器 VPC 连接器将源自第一个服务的所有流量路由到您的 VPC
  • 在第二个服务的子网范围内创建一个 NEG(网络端点组)
  • 使用内部全局负载均衡器将流量路由到第二个服务的 NEG

您也可以选择不这样做,只使用 IAP 来保护第二个服务。当然,IP 和 DNS 将是公开访问的,但只有明确授权的帐户才能访问它。 GFE (Google Front End) 将丢弃所有其他请求。

这种 "zero trust" 能力在 Google 很流行。你不依赖网络,而是依赖认证机制。我是它的粉丝!