Данные, которые вы ищете (название кластера), доступны на уровне GCP. Само название является ресурсом в GKE, а не Kubernetes. Это означает, что эта указанная c информация недоступна при использовании client- go. Поэтому, чтобы получить эти данные, вы можете использовать клиентские библиотеки Google Cloud для Go, предназначенные для взаимодействия с GCP.
В качестве отправной точки вы можете обратиться к этому документ .
Сначала вы должны загрузить пакет container
:
➜ go get google.golang.org/api/container/v1
Перед тем, как вы запустите свой код, вы должны будете пройти аутентификацию для получения данных: у Google очень хороший документ как этого добиться.
В основном у вас есть сгенерированный a ServiceAccount
ключ и передача его в GOOGLE_APPLICATION_CREDENTIALS
среду:
➜ export GOOGLE_APPLICATION_CREDENTIALS=sakey.json
Что касается информации, которую вы хотите, вы можете получить информация о кластере (включая имя), следующая за этим примером .
Как только вы сделаете это, вы можете запустить свое приложение следующим образом:
➜ go run main.go -project <google_project_name> -zone us-central1-a
И результатом будет информация о вашем кластере:
Cluster "tom" (RUNNING) master_version: v1.14.10-gke.17 -> Pool "default-pool" (RUNNING) machineType=n1-standard-2 node_version=v1.14.10-gke.17 autoscaling=false%
Также стоит упомянуть, что если вы выполните эту команду:
curl http://metadata/computeMetadata/v1/instance/attributes/cluster-name -H "Metadata-Flavor: Google"
Вы также взаимодействуете с API GCP и можете go не аутентифицироваться до тех пор, пока поскольку он работает в GCE-машине / кластере GKE. Это обеспечило автоматическую c аутентификацию.
Подробнее об этом можно прочитать в google`s Хранение и извлечение метаданных экземпляра document.
Наконец, одно большое преимущество в выполнении Это связано с тем, что в облачных клиентских библиотеках он может запускаться извне (если он аутентифицирован) или внутри модулей в развертывании.
Дайте мне знать, если это поможет.