Google Cloud 运行 只能访问 http://metadata.google.internal 上的元数据子集

Google Cloud Run only has access to subset of metadata on http://metadata.google.internal

问题:Google 云 运行 仅提供已记录元数据的子集

我在 Google 云 运行 上有一个简单的基于 JVM 的应用程序 运行,它查询 http://metadata.google.internal 可用的元数据。

唯一可用的元数据位于以下路径:

根据 documentation, I was expecting more than this and hoping that I would be able to query the metadata server for the name of the Cloud Run service and the metadata requiredgeneric_node 配置 Stackdriver Monitoring。

我发现的一个线索是 server header 在查询元数据服务器的响应中给出了值:Metadata Server for Serverless

理论: Cloud 运行 处于测试阶段,Metadata Server for Serverless 与典型的元数据服务器分开,并且正在进行中。

问题:

  1. 这个理论成立吗?
  2. 是否在某处记录了此限制?
    • 是否有添加额外元数据的路线图?
  3. 是否有替代方法来确定配置 Stackdriver 所需的元数据?

我认为您不会找到太多信息来验证您的理论,因为这与产品的架构有关,我认为 Google 目前不会分享它,但是,根据您找到的证据,它似乎确实有效。

可以做的是打开 feature request 到 Google,这样他们就可以向元数据添加更多信息,从而满足您的需求。由于该产品处于测试阶段,他们应该可以进行一些更改。

希望你觉得这有用。

Compute Metadata service 您链接的仅适用于 Compute Engine 产品(例如 GCE、GKE)。其中的许多端点都是关于 VM 详细信息、VM metadata/tags、VM 启动脚本等。

这些概念不适用于无服务器计算环境。因此,我认为此处的功能请求不会成功。

App Engine、Cloud Functions 和 Cloud 运行 等无服务器产品支持元数据服务的最低版本,以便为 SDK 提供基本功能(例如 Google Cloud 客户端库、Stackdriver 或 OpenTelemetry/OpenCensus 客户端,或 gcloud CLI)。使用这些端点,Google 自己的客户端库可以自动获取身份验证令牌、发现项目 ID 等。

此外,这些无服务器产品在 GCE 上没有 运行,并且没有相同的概念。这就是为什么这些产品无法使用完整的元数据服务。

适用于无服务器环境的是您在问题中列出的端点。