在 Google Cloud 运行 (gRPC/Python) 上连接两项服务
Connecting two services on Google Cloud Run (gRPC/Python)
我今天大部分时间都在尝试连接部署在 Google 云 运行 上的两个微服务,使用 gRPC 和 Python。事实证明,如果我打开我尝试调用的服务的触发器入口 'Allow all Traffic' 和 'Requires Authentication' 我可以从其他服务连接到它。
然而,当我将入口设置为 'Allow internal traffic only'('Requires Authentication' 仍然设置)时,我的服务无法再连接到它并在日志中抛出权限被拒绝的错误:
状态=StatusCode.PERMISSION_DENIED
details = "收到 http2 header 状态:403"
我在被调用的服务上看不到任何日志,表明它正在阻止或接收任何东西,因为唯一改变的是入口设置,我假设我正在使用 IAM 用户进行身份验证当服务 public 不是问题。
在 ingress 文档 (https://cloud.google.com/run/docs/securing/ingress) 中,我看到一个注释,它只允许 VPC 流量,所以我着手创建一个 VPC 网络和一个无服务器 VPC 连接器,并将它们附加到这两个服务(并更新IAM 服务帐户以允许访问连接器)- 仍然遇到同样的问题。
我现在要放弃了。我不喜欢拥有内部服务的想法 public,但打开内部入口似乎不起作用。
有没有人设法在 Google 云 运行 上连接两个服务,只有一个内部流量,如果是这样,我需要做什么才能让它工作??
谢谢!
在您的前端云 运行 服务中,您需要放置一个 VPC 连接器并将所有流量路由到它(出口 = 全部)。在后端服务上,您不需要无服务器 VPC 连接器。
更深入一点,即使您将入口设置为内部,也始终可以从 Internet 访问 Cloud 运行。事实上,有一个内部规则检查请求元数据(在 Google 内部网络内部)以验证流量是否来自您的项目 VPC。因为它 public 只能访问,所以您需要将所有出口流量路由到 VPC,否则 public 访问不会通过您的 VPC,您会收到 403。
我今天大部分时间都在尝试连接部署在 Google 云 运行 上的两个微服务,使用 gRPC 和 Python。事实证明,如果我打开我尝试调用的服务的触发器入口 'Allow all Traffic' 和 'Requires Authentication' 我可以从其他服务连接到它。
然而,当我将入口设置为 'Allow internal traffic only'('Requires Authentication' 仍然设置)时,我的服务无法再连接到它并在日志中抛出权限被拒绝的错误:
状态=StatusCode.PERMISSION_DENIED details = "收到 http2 header 状态:403"
我在被调用的服务上看不到任何日志,表明它正在阻止或接收任何东西,因为唯一改变的是入口设置,我假设我正在使用 IAM 用户进行身份验证当服务 public 不是问题。
在 ingress 文档 (https://cloud.google.com/run/docs/securing/ingress) 中,我看到一个注释,它只允许 VPC 流量,所以我着手创建一个 VPC 网络和一个无服务器 VPC 连接器,并将它们附加到这两个服务(并更新IAM 服务帐户以允许访问连接器)- 仍然遇到同样的问题。
我现在要放弃了。我不喜欢拥有内部服务的想法 public,但打开内部入口似乎不起作用。
有没有人设法在 Google 云 运行 上连接两个服务,只有一个内部流量,如果是这样,我需要做什么才能让它工作??
谢谢!
在您的前端云 运行 服务中,您需要放置一个 VPC 连接器并将所有流量路由到它(出口 = 全部)。在后端服务上,您不需要无服务器 VPC 连接器。
更深入一点,即使您将入口设置为内部,也始终可以从 Internet 访问 Cloud 运行。事实上,有一个内部规则检查请求元数据(在 Google 内部网络内部)以验证流量是否来自您的项目 VPC。因为它 public 只能访问,所以您需要将所有出口流量路由到 VPC,否则 public 访问不会通过您的 VPC,您会收到 403。