从 Google 托管的 Kubernetes 集群中的容器检测 Google 云项目 ID

Detect Google Cloud Project Id from a container in Google hosted Kubernetes cluster

从 Google 托管的 Kubernetes 集群中的容器检测 Google 云项目 ID。

连接BigTable时;我需要提供 Google 项目 ID。有没有办法从 K8s 中自动检测到这一点?

您可以使用元数据服务。示例:

curl -H "Metadata-Flavor: Google" -w '\n' http://metadata.google.internal/computeMetadata/v1/project/numeric-project-id

这将在 Google Compute Engine 或 Container Engine 上的任何 VM 运行 上运行。

参见https://cloud.google.com/compute/docs/storing-retrieving-metadata

Google Compute Engine defines a set of default metadata entries that provide information about your instance or project. Default metadata is always defined and set by the server.

...

numeric-project-id The numeric project ID of the instance, which is not the same as the project name visible in the Google Cloud Platform Console. This value is different from the project-id metadata entry value.

project-id The project ID.

Google 也有一些库:ServiceOptions.getDefaultProjectId

https://googleapis.github.io/google-cloud-java/google-cloud-clients/index.html

https://github.com/googleapis/google-cloud-java/blob/master/google-cloud-clients/google-cloud-core/src/main/java/com/google/cloud/ServiceOptions.java

https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-core

在Python中,您可以通过这种方式找到项目ID:

import google.auth
_, PROJECT_ID = google.auth.default()

原来的问题没有提到使用的是什么编程语言,我也有同样的问题Python。