7.16. 克隆虚拟机
7.16.1. 启用用户权限跨命名空间克隆数据卷
命名空间的隔离性质意味着用户默认无法在命名空间之间克隆资源。
要让用户将虚拟机克隆到另一个命名空间,具有 cluster-admin
角色的用户必须创建新的集群角色。将此集群角色绑定到用户,以便其将虚拟机克隆到目标命名空间。
7.16.1.1. 先决条件
-
只有具有
cluster-admin
角色的用户才能创建集群角色。
7.16.1.2. 关于数据卷
DataVolume
对象是 Containerized Data Importer (CDI) 项目提供的自定义资源。DataVolume 编配与底层持久性卷声明(PVC)关联的导入、克隆和上传操作。数据卷与 OpenShift Virtualization 集成,它们可在 PVC 准备好前阻止虚拟机启动。
7.16.1.3. 创建用于克隆数据卷的 RBAC 资源
创建一个新的集群角色,为 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
在集群中创建角色绑定:
$ oc create -f <datavolume-cloner.yaml> 1
- 1
- 上一步中创建的
RoleBinding
清单的文件名。