我目前正在进行一个使用谷歌云的项目。在云计算中,我们使用CloudRun
来提供我们的服务。其中一个服务相当复杂,有许多不同的配置选项。为了验证这些配置如何影响结果的质量,并评估服务更改的质量,我想进行如下操作:
- 除了现有服务之外,我还部署了包含更改的服务的另一个实例
- 我镜像所有传入的请求,并让两个服务处理它们,只返回来自初始服务的响应,但存储来自两个服务的响应
这使我能够对两种服务之间的差异进行详细评估,而不必向用户提供可能更糟糕的响应。
对于实现,我设置了一个NGINX,它镜像请求。这也被部署为CloudRun服务。现在,它接受所有请求并负责身份验证。原始服务和镜像版本的配置方式使得它们只能在内部访问,因此应该通过VPC网络访问。
我已经尝试了所有可能的组合来配置这些部件,但我总是会出现403或502个错误。
我已经尝试过将NGINX服务设置为来自该服务的HTTP和HTTPS路由,并且我已经尝试了所有VPC连接器设置。当我将服务的入口设置为ALL
时,如果我在NGINX中使用HTTPS和端口443配置服务,它将完美工作。一旦我将入口设置为Internal
,我就会收到HTTPS错误->403并且具有HTTP->502.
有没有人有这方面的经验,可以给我如何解决这个问题的建议?非常感谢您的帮助。
如果您的云运行服务是内部可访问的(入口控制设置为仅内部(,您需要从VPC执行请求。
因此,正如您所做的那样,您在NGINX服务上插入了一个无服务器VPC连接器。
设置正确。现在,为什么当您将所有出口流量而不仅仅是私有流量路由到VPC连接器时,它会起作用?
事实上,Cloud Run是一个公共资源,有一个公共URL,即使您将入口设置为内部。这个参数说";流量必须到达VPC";而不是说";我用一个私有IP接入了专有网络;。
因此,要访问专有网络并访问公共资源(您的云运行服务(,您需要将所有流量路由到专有网络,甚至是公共流量。