Gcloud и Kubectl видят, что я вошел в систему как два разных пользователя

# #macos #gcloud #kubectl

#macos #gcloud #кубектл

Вопрос:

Мак здесь, на случай, если это что-то изменит. Я работаю над 2 отдельными проектами GCP/gcloud/GKE/Kubernetes, и для каждого из них у меня есть два разных gmail:

  • Проект 1: флим-флам, где моя электронная почта myuser1@gmail.example.com (притворись, что это gmail)
  • Проект 2: фу-бар, где находится моя электронная почта myuser2@gmail.example.com

Я захожу в свою myuser1@gmail.example.com учетную запись через gcloud auth login и подтверждаю, что я вошел в систему под этой учетной записью. Например, я захожу в консоль GCP и проверяю (в пользовательском интерфейсе), что я действительно вошел в систему как myuser1@gmail.example.com . Более того, когда я бегу gcloud config configurations list , я получаю:

 NAME IS_ACTIVE ACCOUNT PROJECT COMPUTE_DEFAULT_ZONE COMPUTE_DEFAULT_REGION flim-flam True myuser1@gmail.example.com flim-flam foo-bar False myuser2@gmail.example.com foo-bar  

В моем flim-flam проекте при запуске kubectl delete ns flimflam-app я получаю ошибки разрешений:

 Error from server (Forbidden): namespace "flimflam-app" is forbidden: User "myuser2@gmail.example.com" cannot delete resource "namespaces" in API group "" in the namespace "flimflam-app": requires one of ["container.namespaces.delete"] permission(s).  

Итак, gcloud думает, что я вошел в систему как myuser1 , но kubectl думает, что я вошел в систему как myuser2 . Как мне это исправить?

Комментарии:

1. Почему ДВ? Вопрос был по теме, не был обманом и был полностью воспроизводим. Подумайте о том, чтобы удалить DV и вместо этого предоставить комментарий с предложением по улучшению. Мои вопросы здесь на высшем уровне, так что.

Ответ №1:

gcloud и kubectl обмениваться удостоверениями пользователей, но их конфигурация находится в разных файлах.

Использование gcloud auth login не обновляет (!) существующие (!) kubectl конфигурации. Первые (в Linux) хранятся в ${HOME}/.config/gcloud , а вторые-в ${HOME}/.kube/config .

У меня нет копии под рукой, но , если вы проверите ${HOME}/.kube/config , она, скорее всего, ссылается на другую учетную запись Google. Вы можете либо дублировать users запись, либо ссылаться на нее из context . Или вы можете отредактировать существующую users запись.

На самом деле, еще лучше использовать gcloud container clusters get-credentials для обновления kubectl конфигурации с текущим активным gcloud пользователем. Эта команда обновляется ${HOME}/.kube/config для вас.