【问题标题】:Cloud run service to service requests from within same project still being blocked by Ingress=Internal云运行服务到来自同一项目内的服务请求仍被 Ingress=Internal 阻止
【发布时间】:2021-05-23 23:46:09
【问题描述】:

我已经设置了 nodejs 和 python 云运行服务。 nodejs 前端调用 python 服务,当 ingress=all 时请求工作,但是当我更改为 ingress=internal 时,它会阻止我的服务来服务请求。

我尝试使用 VPC 连接器并通过 nodejs 服务中的 VPC 连接器路由所有出口,但这并不能解决问题。

我误解了 ingress=internal 应该如何工作吗?我认为它会阻止除来自同一项目中的服务的请求之外的任何内容。

任何人有任何想法,甚至我可以在哪里找到一些日志以至少帮助诊断问题?

【问题讨论】:

  • 这两个服务是否在同一个项目中?您是否已使用允许未经授权的参数进行部署?
  • 是的,它们都在同一个项目中,是的,我部署时允许未经授权。
  • 什么叫后端服务?浏览器中的 JS?
  • 是的,我正在从 React-Redux 操作发出 axios 请求

标签: google-cloud-platform cloud google-cloud-run platform docker-ingress


【解决方案1】:

您的问题来自您的请求的来源。当您尝试实现网络配置时,您需要注意这一点。

通过您的 cmets,我了解到您的前端服务在用户浏览器中提供 React-Redux 操作。现在,打印请求流

User Browser -> Frontend -> User Browser
(Load JS on user Browser)
User Browser -> Backend -> ERROR

确实,只有连接到项目 VPC 的资源才能访问后端。在您的情况下,执行请求的是用户浏览器,因此您会收到错误。


您执行的设置将在请求流中起作用

User Browser -> Frontend -> (serverless VPC Connector) -> Backend -> (serverless VPC Connector) -> Frontend ->User Browser

这意味着,请求必须全部到达一个可公开访问的服务(此处为前端),该服务连接到 VPC(通过无服务器 VPC 连接器),然后向仅限内部的服务执行请求。

【讨论】:

  • 非常感谢您的回答!节省了我很多浪费的精力。目前,我仍在争论我希望使用的请求流程。正如您所描述的那样,我仍然需要通过前端路由将我的后端 API 暴露给公共互联网。找到解决方案后,我将更新此问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-24
  • 2021-09-23
  • 2018-06-28
  • 1970-01-01
  • 1970-01-01
  • 2021-05-15
相关资源
最近更新 更多