将来自云运行服务的请求镜像到其他云运行服务

Mirror requests from cloudrun service to other cloudrun service

我目前正在开展一个使用 Google 云的项目。在云中,我们使用 CloudRun 来提供我们的服务。其中一项服务相当复杂,有许多不同的配置选项。为了验证这些配置如何影响结果的质量以及评估服务更改的质量,我想进行如下操作:

这使我能够对两种服务之间的差异进行详细评估,而不必向用户提供可能更糟糕的响应。

为了实施,我设置了一个镜像请求的 NGINX。这也部署为 CloudRun 服务。这现在接受所有请求并负责身份验证。原始服务和镜像版本已经配置为只能在内部访问,因此应该通过 VPC 网络访问。

我已经尝试了所有可能的组合来配置这些部分,但我总是遇到 403 或 502 错误。

我已经尝试将 NGINX 服务设置为来自该服务的 HTTP 和 HTTPS 路由,并且我已经尝试了所有 VPC 连接器设置。当我将服务的入口设置为 ALL 时,如果我在 NGINX 中使用 HTTPS 和端口 443 配置服务,它会完美运行。一旦我将入口设置为 Internal,我就会收到 HTTPS -> 403 和 HTTP -> 502 的错误。

有没有人有这方面的经验,可以给我提示如何解决这个问题?非常感谢任何帮助。

如果您的 Cloud 运行 服务可在内部访问(入口控制设置为仅限内部),您需要从 VPC 执行您的请求。

因此,正如您所做的那样,您在 NGINX 服务上插入了一个无服务器 VPC 连接器。

设置正确。现在,为什么当您将所有出口流量路由到您的 VPC 连接器而不仅仅是私有流量时它会起作用?

事实上,云 运行 是一个 public 资源,具有 public URL,即使您将入口设置为内部。此参数表示“流量必须到达 VPC”,而不是表示“我使用私有 IP 连接到 VPC”。

因此,要转到您的 VPC 并访问 public 资源(您的云 运行 服务),您需要将所有流量路由到您的 VPC,甚至 public一.