我有以下内容:
apiVersion: v1
kind: ServiceAccount
metadata:
name: SomeServiceAccount
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: SomeClusterRole
rules:
- apiGroups:
- "myapi.com"
resources:
- 'myapi-resources'
verbs:
- '*'
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: SomeClusterRoleBinding
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: SomeClusterRole
subjects:
- kind: ServiceAccount
name: SomeServiceAccount
但是它抛出:
The ClusterRoleBinding "SomeClusterRoleBinding" is invalid: subjects[0].namespace: Required value
我认为"Cluster"RoleBinding
的要点是它不仅限于单个名称空间。有人可以解释吗?
Kubernetes版本1.13.12
Kubectl版本v1.16.2
谢谢。
答案 0 :(得分:1)
一个kubernetes服务帐户的作用域是一个命名空间。如果在创建服务帐户时未指定名称空间,则会在“默认”名称空间中创建服务帐户。
这使您可以在不同的名称空间中创建具有相同名称的服务帐户。即,创建名称空间时,所有名称空间都有一个名为“默认”的服务帐户。
要在命名空间中创建服务帐户,请执行以下操作:
kubectl create serviceaccount my-sa -n my-namespace
您必须在此处输入主题的名称空间是指“服务帐户所在的位置”,而不是“此群集角色绑定将资源访问绑定到的名称空间”。
答案 1 :(得分:0)
确实,是的,ClusterRoleBinding不应绑定到名称空间,而应 我认为主题可能会被束缚或束缚(这就是错误的意思)。您可以通过检查特定版本的Kubernetes API规范来调试它。
例如,在主题名称空间上的here上写着:If the object kind is non-namespace, such as "User" or "Group", and this value is not empty the Authorizer should report an error.
答案 2 :(得分:0)
ClusterRole在群集范围内的方面是规则中的资源在群集范围内。例如,您可以使用ClusterRole使主题可以访问所有名称空间中的所有Pod。使用角色,您只能授予主题访问特定命名空间中Pod的权限。
ClusterRoleBinding的整个群集范围方面不适用于绑定的主题。在您的示例中,您无法为所有名称空间中具有特定名称的所有服务帐户创建绑定。
答案 3 :(得分:0)
在创建ServiceAccount时不需要设置名称空间,这里的情况是在创建ClusterRoleBinding来选择服务帐户时,您需要指定服务帐户的名称空间。
ServiceAccounts是命名空间范围的主题,因此当您引用 它们,您必须指定服务帐户的名称空间 要绑定。 Source
例如,您可以在创建ClusterRoleBinding时使用默认名称空间。
这样做,您没有将ClusterRoleBinding绑定到任何名称空间,如本例所示。
$ kubectl get clusterrolebinding.rbac.authorization.k8s.io/tiller -o yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"rbac.authorization.k8s.io/v1","kind":"ClusterRoleBinding","metadata":{"annotations":{},"name":"tiller"},"roleRef":{"apiGroup":"rbac.authorization.k8s.io","kind":"ClusterRole","name":"cluster-admin"},"subjects":[{"kind":"ServiceAccount","name":"tiller","namespace":"kube-system"}]}
creationTimestamp: "2019-11-18T13:47:59Z"
name: tiller
resourceVersion: "66715"
selfLink: /apis/rbac.authorization.k8s.io/v1/clusterrolebindings/tiller
uid: 085ed826-0a0a-11ea-a665-42010a8000f7
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: tiller
namespace: kube-system