如何将集群+项目值公开给 GKE 中的容器(或 k8s 中的当前上下文)
How to expose cluster+project values to container in GKE (or current-context in k8s)
我的容器代码需要知道它在 运行 GKE 上的哪个环境中,更具体地说是什么集群和项目。在标准 kubernetes 中,这可以从当前上下文值 (gke_<project>_<cluster>
) 中检索。
Kubernetes 有一个向下的 api 可以将 pod 信息推送到容器 - 参见 https://kubernetes.io/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/ - 但不幸的是没有来自“更高”实体的信息。
关于如何实现这一点有什么想法吗?
显然我不想在部署时显式推送任何信息(例如 env
在 configMap
中)。我宁愿使用 generic/common yaml 进行部署,并让代码在运行时从 env 或文件中检索信息并相应地进行分支。
您可以从您的代码中查询 GKE metadata server。在您的情况下,您需要查询 /computeMetadata/v1/instance/attributes/cluster-name
和 /computeMetadata/v1/project/project-id
端点以获取集群和项目。每种受支持语言的客户端库都有用于访问元数据的简单包装器 API。
我的容器代码需要知道它在 运行 GKE 上的哪个环境中,更具体地说是什么集群和项目。在标准 kubernetes 中,这可以从当前上下文值 (gke_<project>_<cluster>
) 中检索。
Kubernetes 有一个向下的 api 可以将 pod 信息推送到容器 - 参见 https://kubernetes.io/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/ - 但不幸的是没有来自“更高”实体的信息。
关于如何实现这一点有什么想法吗?
显然我不想在部署时显式推送任何信息(例如 env
在 configMap
中)。我宁愿使用 generic/common yaml 进行部署,并让代码在运行时从 env 或文件中检索信息并相应地进行分支。
您可以从您的代码中查询 GKE metadata server。在您的情况下,您需要查询 /computeMetadata/v1/instance/attributes/cluster-name
和 /computeMetadata/v1/project/project-id
端点以获取集群和项目。每种受支持语言的客户端库都有用于访问元数据的简单包装器 API。