Создание ClusterRole в качестве учетной записи службы вычислений по умолчанию завершается с ошибкой дополнительных привилегий - PullRequest
0 голосов
/ 19 февраля 2019

Я пытаюсь создать новое ClusterRole в частном кластере, которое я администрирую с помощью Jumpbox, но продолжаю нажимать на ошибку «Запрещено: попытка предоставить дополнительные привилегии».

Я прошел проверку подлинности с помощью gcloudкак учетная запись службы вычислений по умолчанию, и она имеет роль администратора Kubernetes Engine.

Я создал привязку роли кластера для учетной записи службы gcloud, используя

kubectl create ClusterRoleBinding sa-admin-binding --ClusterRole=cluster-admin --User=xxxxxxxx-service-account@xxxx.developer.gserviceaccount.com

Когда я пытаюсь создать кластерОднако для роли я получаю следующую ошибку.

Ошибка сервера (запрещена): ошибка при создании «role.yml»: clusterroles.rbac.authorization.k8s.io «pod-viewer» запрещен:попытка предоставить дополнительные привилегии: [{[list] [] [pods] [] []}] user = & { 115268482330004182284 [system: authenticated] map [user-assertion.cloud.google.com:[AKUJVpkbsn ........

Я не понимаю, почему ошибка возвращается с «нумерованной» учетной записью пользователя, а не с учетной записью службы, с которой я аутентифицировался.

Я могу добавитьClusterRoleBinding для cluster-admin, использующий мою собственную учетную запись gmail, проходит аутентификацию с моей собственной учетной записью, а затем без проблем создает новую роль, но при этом добавляется привязка кластера для учетной записи службы и выполняется аутентификация, поскольку эта учетная запись службы, по-видимому, не дает разрешениясоздайте роль.

Интересно, что я могу добавить кластерного связывания, используя номерную учетную запись в приведенной выше ошибке, и это также работает, но не помогает мне написать сценарий настройки, так как я не знаю, что это за номер заранееи ни откуда оно.

1 Ответ

0 голосов
/ 19 февраля 2019

хорошо ... Позже я обнаружил, что пронумерованная учетная запись на самом деле была уникальным идентификатором служебной учетной записи в консоли gamouds IAM.Не уверен, почему для служебных учетных записей он использует это, но для учетных записей пользователей он использует адрес электронной почты, но вот что я сейчас использую ..

CLUSTER_ADMIN_ID=`gcloud iam service-accounts describe <my-service-account>@<my-project>.iam.gserviceaccount.com --format="value(uniqueId)"`

, за которым следует

kubectl create ClusterRoleBinding <mybinding>-cluster-admin --clusterrole=cluster-admin --user=$CLUSTER_ADMIN_ID

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

...