【发布时间】:2021-05-05 11:34:18
【问题描述】:
我刚刚浪费了今天的大部分时间来尝试使用 gRPC 和 Python 连接部署在 Google Cloud Run 上的两个微服务。事实证明,如果我为我尝试调用的服务打开触发器入口以“允许所有流量”和“需要身份验证”,我可以从其他服务连接到它。
但是,当我将入口设置为“仅允许内部流量”(仍然设置“需要身份验证”)时,我的服务无法再连接到它并在日志中引发 Permissions Denied 错误:
status = StatusCode.PERMISSION_DENIED details = "收到状态为 403 的 http2 标头"
我在被调用的服务上看不到任何日志以表明它正在阻止或接收任何内容,并且由于唯一更改的是入口设置,我假设我在使用 IAM 用户时进行了身份验证服务是公开的不是问题。
在入口文档 (https://cloud.google.com/run/docs/securing/ingress) 中,我看到一条说明它只允许 VPC 流量,因此我开始创建 VPC 网络和无服务器 VPC 连接器并将它们附加到这两个服务(并将 IAM 服务帐户更新为允许访问连接器) - 仍然遇到同样的问题。
我现在要放弃了。我不喜欢公开我的内部服务的想法,但打开内部入口似乎不起作用。
有没有人设法在 Google Cloud Run 上连接两个服务,只有一个内部流量,如果是这样,我需要做什么才能让它工作??
谢谢!
【问题讨论】:
-
您在哪个服务上添加了无服务器 VPC 连接器?
-
我向两者都添加了 VPC 连接器。所以我的架构是: * Webapp 服务 - 所有流量,无身份验证,使用 VPC 连接器“内部” * 后端服务 - 仅限内部,使用身份验证,相同的 VPC 连接器“内部”连接到同一 VPC。希望有帮助!
标签: google-cloud-run