apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: <datavolume-cloner> (1)
rules:
- apiGroups: ["cdi.kubevirt.io"]
resources: ["datavolumes/source"]
verbs: ["*"]
命名空间的隔离特性意味着用户默认情况下无法在命名空间之间克隆资源。
要允许用户将虚拟机克隆到另一个命名空间,具有cluster-admin
角色的用户必须创建一个新的集群角色。将此集群角色绑定到用户,以允许他们将虚拟机克隆到目标命名空间。
创建一个新的集群角色,允许对datavolumes
资源执行所有操作的权限。
您必须拥有集群管理员权限。
创建ClusterRole
清单
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: <datavolume-cloner> (1)
rules:
- apiGroups: ["cdi.kubevirt.io"]
resources: ["datavolumes/source"]
verbs: ["*"]
1 | 集群角色的唯一名称。 |
在集群中创建集群角色
$ oc create -f <datavolume-cloner.yaml> (1)
1 | 上一步中创建的ClusterRole 清单的文件名。 |
创建一个RoleBinding
清单,该清单适用于源和目标命名空间,并引用上一步中创建的集群角色。
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: <allow-clone-to-user> (1)
namespace: <Source namespace> (2)
subjects:
- kind: ServiceAccount
name: default
namespace: <Destination namespace> (3)
roleRef:
kind: ClusterRole
name: datavolume-cloner (4)
apiGroup: rbac.authorization.k8s.io
1 | 角色绑定的唯一名称。 |
2 | 源数据卷的命名空间。 |
3 | 克隆数据卷的目标命名空间。 |
4 | 上一步中创建的集群角色的名称。 |
在集群中创建角色绑定
$ oc create -f <datavolume-cloner.yaml> (1)
1 | 上一步中创建的RoleBinding 清单的文件名。 |