My container code needs to know in which environment it is running on GKE, more specifically what cluster and project. In standard kubernetes, this could be retrieved from current-context value (gke_<project>_<cluster>
).
Kubernetes has a downward api that can push pod info to containers - see https://kubernetes.io/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/ - but unfortunately nothing from "higher" entities.
Any thoughts on how this can be achieved ?
Obviously I do not want to explicit push any info at deployment (e.g. as env
in the configMap
). I rather deploy using a generic/common yaml and have the code at runtime retrieve the info from env or file and branch accordingly.
CodePudding user response:
You can query the GKE metadata server from within your code. In your case, you'd want to query the /computeMetadata/v1/instance/attributes/cluster-name
and /computeMetadata/v1/project/project-id
endpoints to get the cluster and project. The client libraries for each supported language all have simple wrappers for accessing the metadata API as well.