Kubernetes ServiceAccount не может перечислить узлы - PullRequest
0 голосов
/ 02 мая 2020

Я пытаюсь дать моей учетной записи службы foo разрешения на получение списка узлов в кластере (через kubectl get nodes). Я создал кластерную роль и привязку роли со следующими разрешениями:

apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
 name: foo-cluster-role
rules:
  - apiGroups: [""]
    resources: ["nodes"]
    verbs: ["get", "list", "watch"]

Когда я запускаю модуль с этой учетной записью службы, я не могу запустить kubectl get nodes:

root@debugger:/# kubectl get nodes
Error from server (Forbidden): nodes is forbidden: User "system:serviceaccount:default:foo" cannot list resource "nodes" in API group "" at the cluster scope

Странно , когда я спрашиваю через kubectl auth can-i, он говорит мне, что у меня должен быть доступ:

root@debugger:/# kubectl auth can-i get nodes
Warning: resource 'nodes' is not namespace scoped
yes

Как мне настроить учетную запись службы, чтобы у меня был доступ к списку узлов в кластере?

edit clusterrolebinding выглядит так:

kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: foo-binding
subjects:
- kind: ServiceAccount
  name: foo
roleRef:
  kind: ClusterRole
  name: foo-cluster-role
  apiGroup: ""

1 Ответ

3 голосов
/ 02 мая 2020

Вы должны создать ClusterRoleBinding. Пожалуйста, проверьте следующее.

    apiVersion: rbac.authorization.k8s.io/v1beta1
    kind: ClusterRole
    metadata:
      name: foo-cluster-role
    rules:
    - apiGroups: [""]
      resources: ["nodes"]
      verbs: ["get", "watch", "list"]

    ---
    apiVersion: rbac.authorization.k8s.io/v1beta1
    kind: ClusterRoleBinding
    metadata:
      name: foo-binding
    subjects:
    - kind: ServiceAccount
      name: foo
    roleRef:
      kind: ClusterRole
      name: foo-cluster-role
      apiGroup: rbac.authorization.k8s.io
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...