谷歌云运行API-内部访问端点



请耐心等待,我仍在GCP 的训练轮上

场景

  1. 我有一个为API服务的云运行实例(将在内部使用(
  2. 运行在云计算实例上的中间件,为API提供服务。这利用API,由(1(

(2(需要访问(1(

我试图弄清楚如何发现内部DNS名称或IP,以便中间件(2(可以配置为访问云运行服务的API(1(

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

使用Cloud Run,在第一次部署之前,您无法知道服务的URL。图案为

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

您也可以选择在开头有一个标记,但这在这里并不重要

糟糕的是,在部署之前无法计算项目哈希(或者我不知道哈希公式(。因此,不可能在部署之前在DNS中注册URL。


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


您还可以使用CLoud Run API请求项目上的服务列表,选择您想要的服务并获取服务的URL(获取对服务API的请求(


碰壁前的最后一句话,就是内部端点。Cloud Run url是公共的,并且仅为公共的。因此,您的中间件需要访问互联网才能请求Cloud Run。

如果您的中间件部署在同一个项目上,则可以将Cloud Run服务入口设置为内部,以仅允许当前项目的VPC中的资源访问Cloud Run服务。

但URL仍然是公共的,你需要一个互联网接入来解决和访问它。

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