Google 云 运行 API - 内部访问端点

Google Cloud Run API - accessing endpoint internally

请耐心等待,我仍在使用 GCP 进行训练

场景

  1. 我有一个 Cloud 运行 实例服务于 API(供内部使用)
  2. 服务于 API 的云计算实例上的中间件 运行。这利用了 (1)
  3. 提供的 API

(2) 需要访问 (1)

我正在尝试找出如何发现内部 DNS 名称或 IP,以便可以配置中间件 (2) 以访问云 运行 服务 API (1)

目的是创建模板(环境配置文件),以便我最终可以自动部署所有层。

使用云 运行,您无法在首次部署之前知道服务的 URL。模式是

https://<serviceName>-<projectHash>.<region>.run.app

你也可以在开头有一个可选的标签,但这里不重要

不好的是部署前无法计算项目Hash(或者我不知道hash公式)。因此不可能在部署之前 URL 在 DNS 中注册。


但是,如果您使用像 terraform 这样的工具,您可以在部署后获取服务的 URL 作为输出,然后将其注册到您的 DNS 中,作为 CNAME (Cloud 运行 是托管服务,您没有静态 IP)。


您也可以使用 CLoud Run API to request the list of services on a project, pick the service that you want and get the URL of the service (get request to the service API)


撞墙之前的最后一句话,你谈论的是内部端点。云 运行 url 是 public,只有 public。因此,您的中间件需要访问互联网才能请求 Cloud 运行.

如果你的中间件部署在同一个项目上,你可以设置Cloud运行服务ingress to internal只允许当前项目VPC的资源访问Cloud运行 服务。

但是 URL 仍然是 public,您需要互联网接入才能解析和访问它。

如果您不想被服务发现和构建完整 URL 所困扰,您可以使用 runsd,这是我为 Cloud 运行 开发的解决方案,它允许您通过名称调用服务(例如 http://hello)。