Как развернуть ClusterRoleBinding в Google Kubernetes Engine для KubeIP - PullRequest
0 голосов
/ 28 марта 2019

Я вижу сбой RBAC при попытке развернуть KubeIP в GKE.

Я выделил проблему в следующем разделе KubeIP инфраструктуры :

kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: kubeip-sa
  namespace: kube-system
rules:
- apiGroups: [""]
  resources: ["nodes"]
  verbs: ["get","list","watch","patch"]
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get","list","watch"]

Я получаю следующую ошибку от kubectl и GKE:

Ошибка с сервера (запрещено): ошибка при создании «template.yml»: clusterroles.rbac.authorization.k8s.io «kubeip-sa» запрещена: попытка предоставить дополнительные привилегии: [{[get] [] [ узлы] [] []} {[список] [] [узлы] [] []} {[смотреть] [] [узлы] [] []} {[патч] [] [узлы] [] []} { [get] [] [pods] [] []} {[list] [] [pods] [] []} {[watch] [] [pods] [] []}] user = & {108986779198363313539 [system: аутентифицирован] карта [user-assertion.cloud.google.com: [AKUJVpldMDXqrDZ2slnJReDbLytxt6P2EEyEBbLNRB90oOATH4vIURo / lIhaBuAj9nnwwyxJDSxj2OdCyjjgBC / s5QxftIJnr8128ToTglCzk + e8Wybt4heIizRHugWnIhKNqkF + B0yiv0pIxgOfakma + SbkzbQbVzJPtgxsmHmak30YfPA58n / xyJ8R7oNVJ5dFUAWDFNsqHf / auolViw0Zd7Cr4aYYDXX4GScw ==]]} ownerrules = [{[создать] [authorization.k8s.io] [ selfsubjectaccessreviews swagger.json / swaggerapi / swaggerapi / * / version / version /]}] ruleResolutionErrors = []

Я создал соответствующий ~ / .kube / config, введя

gcloud container clusters get-credentials <cluster> \
  --zone <zone> \
  --project <project>

Используемая мной учетная запись службы gcloud была предоставлена ​​администратором кластера в рассматриваемом кластере GKE

kubectl create clusterrolebinding cluster-admin-binding \
  --clusterrole cluster-admin \
  --user $(gcloud config get-value account)

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

$ gcloud config get-value account
terraform@<project>.iam.gserviceaccount.com

$ kubectl describe clusterrolebinding cluster-admin-binding
Name:         cluster-admin-binding
Labels:       <none>
Annotations:  <none>
Role:
  Kind:  ClusterRole
  Name:  cluster-admin
Subjects:
  Kind  Name                                                Namespace
  ----  ----                                                ---------
  User  terraform@<project>.iam.gserviceaccount.com  

Согласно kubectl I должен быть в состоянии создать ClusterRoleBindings

$ kubectl auth can-i create clusterrolebinding
yes

Кто-нибудь видит, какой элемент GKE RBAC мне не хватает?

1 Ответ

0 голосов
/ 28 марта 2019

Ответ на этот вопрос " Создание ClusterRole в качестве учетной записи службы вычислений по умолчанию завершается неудачно с ошибкой дополнительных привилегий ". Это привело меня к решению.

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

kubectl create clusterrolebinding cluster-admin-binding \
  --clusterrole cluster-admin \
  --user $(gcloud iam service-accounts describe <service account email> --format="value(uniqueId)")
...