即使在创建角色绑定后,Kubernetes 也无法在集群范围内的 API 组“”中创建资源 "namespaces"

Kubernetes cannot create resource "namespaces" in API group "" at the cluster scope even after creating rolebindings

我 运行 正在创建一个创建 kubernetes 命名空间的管道,但是当我 运行 它时,我得到:

Error from server (Forbidden): namespaces is forbidden: User "system:serviceaccount:gitlab-runner:default" cannot create resource "namespaces" in API group "" at the cluster scope

我创建了一个 ClusterRole 和一个 ClusterRoleBinding 以允许 gitlab-runner 命名空间中的服务用户 default 创建具有以下名称空间的命名空间:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: modify-namespace
rules:
  - apiGroups: [""]
    resources:
      - namespace
    verbs:
      - create

和:

ind: ClusterRoleBinding
metadata:
  name: modify-namespace-binding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: modify-namespace
subjects:
- kind: ServiceAccount
  name: default
  namespace: gitlab-runner

但这给了我同样的错误。 我做错了什么?

  • [""] 在 clusterrole 清单中它应该只是 ""。 因为 [""] 将是 apiGroups 需要字符串的数组。
  • resources 下应该是 namespaces 而不是 namespace 因为 :
kubectl api-resources | grep 'namespace\|NAME'
NAME                              SHORTNAMES   APIVERSION                             NAMESPACED   KIND
namespaces                        ns           v1                                     false        Namespace
  • 因此 clusterrole 清单应如下所示:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: modify-namespace
rules:
  - apiGroups: ""
    resources:
      - namespaces
    verbs:
      - create