即使在创建角色绑定后,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
我 运行 正在创建一个创建 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