【问题标题】:Access Cloud Run from Compute Engine in internal ingress mode以内部入口模式从 Compute Engine 访问 Cloud Run
【发布时间】:2021-04-07 21:20:43
【问题描述】:

我们正在尝试从计算引擎访问云运行服务 url。

Cloud Run 服务以 ingress 模式作为内部部署。

目前在访问服务 url 时会给出“禁止访问”状态。

但是,当入口模式设置为所有我可以访问但只想通过我的计算引擎在谷歌网络中访问它时。

我什至将计算引擎的计算服务帐户添加为云运行权限中的成员。

有什么解决办法吗?

更新

项目设置 我有一个共享的 vpc 设置(截至目前只有 us-central1 子网共享),主机项目的 vm 尝试访问云运行 url。从宿主项目的 vm 执行 Curl 失败并显示“禁止访问”。

但是,我尝试在存在云运行服务的同一个项目中创建一个临时虚拟机。我仍然从这个虚拟机看到同样的错误。

根据文档,设置内部入口将允许直接访问项目中的任何内容。但这似乎没有发生。

我什至为计算引擎的服务帐户添加了 roles/run.invoker 角色,作为云运行服务的成员。

Cloud Run 正在使用宿主项目的 Serverless vpc 连接器。

【问题讨论】:

  • 计算引擎和 Cloud Run 服务是否在同一个项目中?您能否分享更多关于您的 VM、子网和 Cloud Run 服务的配置?
  • @guillaumeblaquiere 我刚刚添加了与设置相关的更新
  • 我想知道这是否不是“网络”问题,您确实可以从计算引擎访问您的 Cloud Run 服务,但您无权调用它。作为测试,尝试将 Cloud Run 服务设置为允许未经身份验证。那么它会运行吗?
  • 您有身份验证吗?您是否尝试过使用 allow-unauthenticated 参数?
  • 我没有尝试使用共享 VPC,但只是在我的项目中使用 VPC 就可以了!最令人惊讶的是与 ingress=all 的正确通信。您对项目 VPC(不是共享 VPC)有相同的行为吗?

标签: google-cloud-run


【解决方案1】:

我正在处理与您类似的事情,并就这个问题联系了支持人员。起初他们甚至说有可能,但后来改变主意并给了我以下答复:

Cloud Run 确实是共享 VPC 的合格资源,但这仅适用于出站连接,这是 Cloud Run 通过 VPC 连接器(Cloud Run -> Shared VPC)调用共享 VPC 中的任何其他资源-> 谷歌云资源)。

对于入站连接(例如使用 GKE 集群调用 启用内部入口设置的 Cloud Run 服务,例如 GKE cluster -> Shared VPC -> Cloud Run),目前无法实现。 尽管如此,Cloud Run 产品团队仍致力于提供服务 私有 IP,一旦到位,内部服务将能够 使用其私有 IP 从共享 VPC 调用,但在那之前, 遗憾的是,这不受支持。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-14
    • 2020-05-06
    • 1970-01-01
    • 2021-05-28
    • 2020-07-19
    • 1970-01-01
    • 2014-05-18
    • 2021-10-19
    相关资源
    最近更新 更多