6.12. 仮想マシンのクローン作成

6.12.1. 複数の namespace 間で DataVolume をクローン作成するためのユーザーパーミッションの有効化

namespace には相互に分離する性質があるため、ユーザーはデフォルトでは namespace をまたがってリソースのクローンを作成することができません。

ユーザーが仮想マシンのクローンを別の namespace に作成できるようにするには、cluster-admin ロールを持つユーザーが新規の ClusterRole を作成する必要があります。この ClusterRole をユーザーにバインドし、それらのユーザーが仮想マシンのクローンを宛先 namespace に対して作成できるようにします。

6.12.1.1. 前提条件

  • cluster-admin ロールを持つユーザーのみが ClusterRole を作成できます。

6.12.1.2. DataVolume について

DataVolume オブジェクトは、Containerized Data Importer (CDI) プロジェクトで提供されるカスタムリソースです。DataVolume は、基礎となる PersistentVolumeClaim (PVC) に関連付けられるインポート、クローン作成、およびアップロード操作のオーケストレーションを行います。DataVolume は KubeVirt に統合され、仮想マシンが PVC の作成前に起動することを防ぎます。

6.12.1.3. DataVolume のクローン作成のための RBAC リソースの作成

datavolumes リソースのすべてのアクションのパーミッションを有効にする新規の ClusterRole を作成します。

手順

  1. ClusterRole マニフェストを作成します。

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: <datavolume-cloner> 1
    rules:
    - apiGroups: ["cdi.kubevirt.io"]
      resources: ["datavolumes/source"]
      verbs: ["*"]
    1
    ClusterRole の一意の名前。
  2. クラスターに ClusterRole を作成します。

    $ oc create -f <datavolume-cloner.yaml> 1
    1
    直前の手順で作成された ClusterRole マニフェストのファイル名です。
  3. 移行元および宛先 namespace の両方に適用される RoleBinding マニフェストを作成し、直前の手順で作成した ClusterRole を参照します。

    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
    RoleBinding の一意の名前。
    2
    ソース DataVolume の namespace。
    3
    DataVolume のクローンが作成される namespace。
    4
    直前の手順で作成した ClusterRole の名前。
  4. クラスターに RoleBinding を作成します。

    $ oc create -f <datavolume-cloner.yaml> 1
    1
    直前の手順で作成された RoleBinding マニフェストのファイル名です。