#kubernetes #google-kubernetes-engine
#kubernetes #google-kubernetes-engine
Вопрос:
Мой контейнерный код должен знать, в какой среде он работает на GKE, точнее, в каком кластере и проекте. В стандартном kubernetes это может быть получено из значения текущего контекста ( gke_<project>_<cluster>
).
У Kubernetes есть нисходящий API, который может передавать информацию о pod в контейнеры — см. https://kubernetes.io/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information / — но, к сожалению, ничего от «высших» сущностей.
Есть мысли о том, как этого можно достичь?
Очевидно, я не хочу явно передавать какую-либо информацию при развертывании (например, как env
в configMap
). Я предпочитаю развертывать с использованием общего / общего yaml и заставлять код во время выполнения извлекать информацию из env или файла и соответственно ветвиться.
Ответ №1:
Вы можете запросить сервер метаданных GKE из своего кода. В вашем случае вам нужно запросить /computeMetadata/v1/instance/attributes/cluster-name
/computeMetadata/v1/project/project-id
конечные точки и, чтобы получить кластер и проект. Все клиентские библиотеки для каждого поддерживаемого языка также имеют простые оболочки для доступа к API метаданных.
Комментарии:
1. Спасибо! Используется в bash
export PROJECT_ID=$(curl http://metadata.google.internal/computeMetadata/v1/project/project-id -H "Metadata-Flavor: Google")