Как легко переключать учетные данные gcloud / kubectl - PullRequest
0 голосов
/ 21 февраля 2020

На работе мы используем Kubernetes, размещенный в GCP. У меня также есть побочный проект, размещенный в моей личной учетной записи GCP с помощью Google App Engine (развертывание с использованием gcloud app deploy).

Часто при попытке выполнить команду, например kubectl logs -f service-name, Я получаю сообщение об ошибке типа «Ошибка с сервера (запрещено): pods запрещены: пользователь« my_personal_email@gmail.com »не может перечислить« pods »ресурса в группе API« »в пространстве имен« WORK_NAMESPACE »: требуется разрешение« container.pods.list » «. а потом мне приходится часами бороться с kubectl, пытаясь заставить его работать.

Может кто-нибудь сломать его для такого медленного человека, как я, как gcloud и kubectl работают вместе и как я можно легко переключать учетные записи, чтобы я мог использовать gcloud команды для своих личных проектов и kubectl команды для своих рабочих проектов? Я счастлив обнулить весь свой конфиг и начать с нуля, если это то, что нужно. Я нашел различную документацию kubectl и gcloud, но она не имеет особого смысла или говорит по кругу.

Редактировать: это на Linux.

1 Ответ

0 голосов
/ 26 февраля 2020

Я в одной лодке с вами - приложения, развернутые в GKE для работы, и личные проекты, развернутые в моей личной учетной записи GCP.

gcloud хранит список зарегистрированных учетных записей, между которыми вы можете переключаться для связи со связанными проектами. Посмотрите на эти команды:

gcloud auth login
gcloud auth list
gcloud config set account
gcloud projects list

Для работы с конкретным c проектом под одной из ваших учетных записей вам необходимо настроить эту конфигурацию через gcloud config set project PROJECT_ID

kubectl имеет список "контекстов" на вашем локальном компьютере в ~/.kube/config. Текущий контекст - это кластер, с которым вы хотите запускать команды - аналогично активному аккаунту / проекту в gcloud.

В отличие от gcloud это кластер, заданный c и хранящий информацию о конечной точке кластера, пространствах имен по умолчанию, текущем контексте и т. Д. c. Вы можете иметь контексты из GCP, AWS, on-prem ... везде, где у вас есть кластер. У нас есть разные кластеры для dev, qa и prod (таким образом, разные контексты), и мы переключаемся между ними на тонну. Взгляните на [проект kubectx] [1] https://github.com/ahmetb/kubectx для более простого способа переключения между контекстами и пространствами имен.

kubectl будет использовать ключи от любой учетной записи GCP, которую вы вошли в систему с кластером, который установлен в качестве текущего контекста. т. е. из вышеприведенной ошибки: если ваша активная учетная запись для gcloud является вашей личной, но попытайтесь составить список модулей из кластера на работе, вы получите ошибку. Вам нужно либо установить активную учетную запись / проект для gcloud на свой рабочий адрес электронной почты, либо изменить контекст kubectl на кластер, который находится в вашей личной учетной записи / проекте GCP.

...