【问题标题】:Private service to service communication for Google Cloud RunGoogle Cloud Run 的私有服务到服务通信
【发布时间】:2021-07-13 18:37:10
【问题描述】:

我想让我的 Google Cloud Run 服务通过非 HTTP 和/或无需在我的代码中添加不记名身份验证相互私下通信。

我知道this documentation from Google 描述了如何在服务之间进行经过身份验证的访问,尽管它显然仅适用于 HTTP。

我想我大概知道什么是必要的:

  1. 为我的项目创建自定义 VPC
  2. 启用Serverless VPC Connector

我不太清楚的是:

  • 这些有必要吗?同一项目中的 Cloud Run 服务是否可以相互看到?
  • 在此之后服务如何相互寻址?
    • 我是否能够使用更简单的按惯例 DNS 名称?例如,我是否可以在我的 VPC 上将 Cloud Run 清单中的每个服务作为一个单一的一级 DNS 名称,如 apioneapitwo,而不是我必须通过我的部署提示的更大的 DNS 名称?
    • 如果没有,是否有任何机制让服务发现名称?
  • 如果我将托管的 Cloud SQL postgres 数据库放在此网络上,我可以控制其 DNS 名称吗?

最后,我还有什么其他需要注意的问题吗?您可以假设我的用例非常简单,Cloud Run 上有两个或更多长期服务,进行非 HTTP TCP/UDP 通信。


我还发现了一个potentially related Google Cloud Run feature request,如果目前无法做到这一点,值得点赞。

【问题讨论】:

  • 非http通信我不清楚?是调用 Cloud Run 吗?还是 Cloud Run 发起的与您的 VPC 中运行的服务的通信?另外,如果使用 DNS,什么会在 DNS 中创建条目?你在期待什么?
  • 如云运行服务之间的非http。对于 DNS,我不知道,这就是我要问的问题。同一个区域、同一个项目中的云运行服务是否相互可见?

标签: google-cloud-platform google-cloud-run google-cloud-networking


【解决方案1】:

Cloud Run 服务只能通过 HTTP 请求访问。您不能使用其他网络协议(例如 SSH 登录实例,或 TCP/UDP 通信)。

但是,Cloud Run 可以启动与外部服务的此类连接(例如部署在您的 VPC 中的 Compute Engine 实例,这要归功于无服务器 VPC 连接器)。

无服务器 VPC 连接器可让您在 Google Cloud 托管环境(Cloud Run(和 Cloud Functions/App Engine)实例所在的环境)和您拥有自己的实例的项目的 VPC(计算引擎)之间架起一座桥梁, GKE 节点池,...)

因此,如果需要,您可以拥有一个 Cloud Run 服务,该服务通过 TCP 连接到达 GKE 上的 Kubernetes pod。


关于服务发现,目前还不是这样,但 Google 正在积极开展这项工作,而 Ahmet(Cloud Run 上的 Google Cloud Dev Advocate)has released recently a tool for that。但没有真正内置。

【讨论】:

    猜你喜欢
    • 2021-05-17
    • 2021-05-26
    • 2020-02-29
    • 2020-06-26
    • 2020-09-17
    • 2021-02-12
    • 2020-11-02
    • 2019-05-23
    • 2019-10-24
    相关资源
    最近更新 更多