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` 清单的文件名。 |