Kubernetes RBAC:具有多个名称空间的角色

Kubernetes RBAC:具有多个名称空间的角色,kubernetes,ansible,yaml,rbac,Kubernetes,Ansible,Yaml,Rbac,正在尝试编写我的第一组RBAC角色。因此,尝试找出为多个命名空间组件提供两个角色的最佳方法 管理员角色(3个名称空间的RW,如默认名称空间、ns1和ns2) 用户角色(3个名称空间只读,如默认名称空间、ns1和ns2) Was认为管理员/用户需要一个具有2个clusterRoles的服务帐户 apiVersion: rbac.authorization.k8s.io/v1 kind: ServiceAccount metadata: name: sa namespace: default

正在尝试编写我的第一组RBAC角色。因此,尝试找出为多个命名空间组件提供两个角色的最佳方法

管理员角色(3个名称空间的RW,如默认名称空间、ns1和ns2) 用户角色(3个名称空间只读,如默认名称空间、ns1和ns2)

Was认为管理员/用户需要一个具有2个clusterRoles的服务帐户

apiVersion: rbac.authorization.k8s.io/v1
kind: ServiceAccount
metadata:
  name: sa
  namespace: default

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: admin-master
rules:
- apiGroups:
    - batch
  resources:
    - pods
  verbs:
    - create
    - delete
    - deletecollection
    - get
    - list
    - patch
    - update
    - watch

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: user-master
rules:
- apiGroups:
    - batch
  resources:
    - pods
  verbs:
    - get
    - list
    - watch
然后利用角色索引:

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: admin-rw
  namespace: ns1
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: admin-master
subjects:
  - kind: ServiceAccount
    name: sa
    namespace: default
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: user-readonly
  namespace: ns1
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: user-master
subjects:
  - kind: ServiceAccount
    name: sa
    namespace: default

但不确定将角色admin rw/user readonly与命名空间2(ns2)绑定的最佳方式是什么?

角色的作用域是绑定到特定命名空间还是集群范围。对于命名空间范围的角色

这背后的想法是在集群中拥有分区权限,尽管这是一种更安全的做法

此外,在您的定义中,您试图将权限绑定到特定的名称空间,但是,您使用的是
ClusterRole
,这是一个。如果需要命名空间范围的权限,可能需要将其更改为
Role

你可能会发现这在这件事上很有用