#kubernetes #google-kubernetes-engine #kubectl
#kubernetes #google-kubernetes-engine #kubectl
Вопрос:
Я пытаюсь kubectl
запустить виртуальную машину. Я выполнил приведенные здесь шаги и могу выполнить установку. Я скопировал свою локальную конфигурацию kubernetes (из /Users/me/.kube/config
) на виртуальную машину в .kube
каталоге. Однако, когда я запускаю любую команду, например, kubectl get nodes
она возвращает error: google: could not find default credentials. See https://developers.google.com/accounts/docs/application-default-credentials for more information
Есть ли способ, которым я могу работать kubectl
на виртуальной машине?
Комментарии:
1. Где размещен ваш кластер? это GKE? Похоже, что он ожидает, что вы выполните
gcloud auth login
.2. Вы могли
gcloud auth login
бы с виртуальной машины, но это будет использовать вашу личную идентификацию для всех вызовов, выполняемых с этой виртуальной машины. Безопаснее создать учетную запись службы для программного доступа (например, если она когда-либо скомпрометирована, вы можете просто отозвать разрешения учетной записи службы).
Ответ №1:
Чтобы использовать kubectl для взаимодействия с кластером Google Container Engine на виртуальной машине, отличной от Google, вы можете создать управляемую пользователем учетную запись службы IAM и использовать ее для аутентификации в своем кластере:
# Set these variables for your project
PROJECT_ID=my-project
SA_NAME=my-new-serviceaccount
SA_EMAIL=$SA_NAME@$PROJECT_ID.iam.gserviceaccount.com
KEY_FILE=~/serviceaccount_key.json
# Create a new GCP IAM service account.
gcloud iam service-accounts create $SA_NAME
# Download a json key for that service account.
gcloud iam service-accounts keys create $KEY_FILE --iam-account $SA_EMAIL
# Give that service account the "Container Engine Developer" IAM role for your project.
gcloud projects add-iam-policy-binding $PROJECT_ID --member serviceAccount:$SA_EMAIL --role roles/container.developer
# Configure Application Default Credentials (what kubectl uses) to use that service account.
export GOOGLE_APPLICATION_CREDENTIALS=$KEY_FILE
А затем продолжайте использовать kubectl, как обычно.
Комментарии:
1. Откуда
~/serviceaccount_key.json
берется? Редактировать: нашел егоAPI CONSOLE CREDENTIALS
здесь: developers.google.com/identity/protocols /…