如何通过编程方式从其集群之一中获取当前的GKE项目ID?

时间:2019-05-28 19:21:36

标签: kubernetes google-cloud-platform google-kubernetes-engine google-api-java-client google-container-builder

我想通过Java客户端或GCloud API本身从其集群之一中获取当前的GKE项目ID。

  • 我正在特定Google Cloud项目的GKE集群中运行Java容器
  • 我使用适当的ClusterManagerClient初始化ClusterManagerSettings

->是否可以通过此客户端获取此特定项目ID?

(我希望每个GKE集群中都有一个全局上下文,我们可以知道我们正在运行的当前项目)。

谢谢

1 个答案:

答案 0 :(得分:2)

正如John Hanley在上面的评论中提到的那样,您可以在集群中的节点上使用实例元数据来确定该节点所属的项目。最简单的查看方法是使用外壳的卷曲(在节点上或在容器中)。

如果需要项目名称,可以在以下位置看到它:

curl "http://metadata.google.internal/computeMetadata/v1/project/project-id" -H "Metadata-Flavor: Google"

如果您需要项目编号,可以在以下位置看到它:

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

这不是容器API表面的一部分,因此ClusterManagerClient不是正确的API客户端。您需要创建一个客户端来获取实例元数据,我希望这可能是计算客户端库的一部分,或者如果您添加了正确的标头(如上所示),那么您就可以发出本地HTTP请求,因为您没有需要任何特殊的客户端身份验证/授权才能访问本地元数据。