RoleBinding 主题确实有一个
namespace
字段,但是当我在一个命名空间中创建一个 RoleBinding,而主题在另一个命名空间中时,它似乎不起作用。
完整示例:
apiVersion: v1
kind: Namespace
metadata:
name: namespace1
---
apiVersion: v1
kind: Namespace
metadata:
name: namespace2
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: test-sa
namespace: namespace1
---
apiVersion: v1
kind: Secret
metadata:
name: test-secret
namespace: namespace2
type: Opaque
data:
foo: "Zm9vCg=="
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: test-secret-reader
namespace: namespace2
rules:
- apiGroups: [""]
resources: ["secret"]
verbs: ["get"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: test-secret-reader
namespace: namespace2
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: test-secret-reader
subjects:
- kind: ServiceAccount
name: test-sa
namespace: namespace1
使用
kubectl auth can-i
进行测试:
$ kubectl auth can-i get secret -n namespace2 --as system:serviceaccount:namespace1:test-sa
no
角色和角色绑定是命名空间范围的资源。它们仅在命名空间内工作。您不能在一个命名空间中拥有角色,而在另一命名空间中拥有主题。