第5章 コマンドラインからの仮想マシンの移行
コマンドラインから仮想マシンを OpenShift Virtualization に移行できます。
-
cluster-admin
権限を持つユーザーとしてログインしている。 - VMware のみ: 最小限の VMware の権限 セットが必要です。
- VMware のみ:vCenter SHA-1 フィンガープリント が必要です。
- VMware のみ: VMware Virtual Disk Development Kit (VDDK) イメージを作成する必要があります。
- すべての 前提条件 を満たしていることを確認する必要があります。
5.1. 仮想マシンの移行
MTV カスタムリソース (CR) を作成して、仮想マシン (VM) をコマンドライン (CLI) から移行します。
クラスタースコープの CR の名前を指定する必要があります。
namespace スコープの CR の名前と namespace の両方を指定する必要があります。
前提条件
-
cluster-admin
権限を持つユーザーとしてログインしている。 - VMware のみ: すべてのクラスターがアクセスできるセキュアなレジストリーに VMware Virtual Disk Development Kit (VDDK) イメージを用意しておく。
手順
ソースプロバイダーの認証情報の
Secret
マニフェストを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat << EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: <secret> namespace: openshift-mtv type: Opaque stringData: user: <user> password: <password> cacert: | <engine_ca_certificate> thumbprint: <vcenter_fingerprint> EOF
$ cat << EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: <secret> namespace: openshift-mtv type: Opaque stringData: user: <user>
1 password: <password>
2 cacert: |
3 <engine_ca_certificate> thumbprint: <vcenter_fingerprint>
4 EOF
ソースプロバイダーの
Provider
マニフェストを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Provider metadata: name: <provider> namespace: openshift-mtv spec: type: <provider_type> url: <api_end_point> settings: vddkInitImage: <registry_route_or_server_path>/vddk:<tag> secret: name: <secret> namespace: openshift-mtv EOF
$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Provider metadata: name: <provider> namespace: openshift-mtv spec: type: <provider_type>
1 url: <api_end_point>
2 settings: vddkInitImage: <registry_route_or_server_path>/vddk:<tag>
3 secret: name: <secret>
4 namespace: openshift-mtv EOF
VMware のみ:
Host
マニフェストを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Host metadata: name: <vmware_host> namespace: openshift-mtv spec: provider: namespace: openshift-mtv name: <source_provider> id: <source_host_mor> ipAddress: <source_network_ip> EOF
$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Host metadata: name: <vmware_host> namespace: openshift-mtv spec: provider: namespace: openshift-mtv name: <source_provider>
1 id: <source_host_mor>
2 ipAddress: <source_network_ip>
3 EOF
移行元および宛先ネットワークをマッピングする
NetworkMap
マニフェストを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: NetworkMap metadata: name: <network_map> namespace: openshift-mtv spec: map: - destination: name: <pod> namespace: openshift-mtv type: pod source: id: <source_network_id> name: <source_network_name> - destination: name: <network_attachment_definition> namespace: <network_attachment_definition_namespace> type: multus source: id: <source_network_id> name: <source_network_name> provider: source: name: <source_provider> namespace: openshift-mtv destination: name: <destination_cluster> namespace: openshift-mtv EOF
$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: NetworkMap metadata: name: <network_map> namespace: openshift-mtv spec: map: - destination: name: <pod> namespace: openshift-mtv type: pod
1 source:
2 id: <source_network_id>
3 name: <source_network_name> - destination: name: <network_attachment_definition>
4 namespace: <network_attachment_definition_namespace>
5 type: multus source: id: <source_network_id> name: <source_network_name> provider: source: name: <source_provider> namespace: openshift-mtv destination: name: <destination_cluster> namespace: openshift-mtv EOF
StorageMap
マニフェストを作成し、ソースおよび宛先ストレージをマッピングします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: StorageMap metadata: name: <storage_map> namespace: openshift-mtv spec: map: - destination: storageClass: <storage_class> accessMode: <access_mode> source: id: <source_datastore> - destination: storageClass: <storage_class> accessMode: <access_mode> source: id: <source_datastore> provider: source: name: <source_provider> namespace: openshift-mtv destination: name: <destination_cluster> namespace: openshift-mtv EOF
$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: StorageMap metadata: name: <storage_map> namespace: openshift-mtv spec: map: - destination: storageClass: <storage_class> accessMode: <access_mode>
1 source: id: <source_datastore>
2 - destination: storageClass: <storage_class> accessMode: <access_mode> source: id: <source_datastore> provider: source: name: <source_provider> namespace: openshift-mtv destination: name: <destination_cluster> namespace: openshift-mtv EOF
オプション:
Hook
マニフェストを作成し、Plan
CR で指定されたフェーズ中に VM でカスタムコードを実行します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Hook metadata: name: <hook> namespace: openshift-mtv spec: image: quay.io/konveyor/hook-runner playbook: | LS0tCi0gbmFtZTogTWFpbgogIGhvc3RzOiBsb2NhbGhvc3QKICB0YXNrczoKICAtIG5hbWU6IExv YWQgUGxhbgogICAgaW5jbHVkZV92YXJzOgogICAgICBmaWxlOiAiL3RtcC9ob29rL3BsYW4ueW1s IgogICAgICBuYW1lOiBwbGFuCiAgLSBuYW1lOiBMb2FkIFdvcmtsb2FkCiAgICBpbmNsdWRlX3Zh cnM6CiAgICAgIGZpbGU6ICIvdG1wL2hvb2svd29ya2xvYWQueW1sIgogICAgICBuYW1lOiB3b3Jr bG9hZAoK EOF
$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Hook metadata: name: <hook> namespace: openshift-mtv spec: image: quay.io/konveyor/hook-runner
1 playbook: |
2 LS0tCi0gbmFtZTogTWFpbgogIGhvc3RzOiBsb2NhbGhvc3QKICB0YXNrczoKICAtIG5hbWU6IExv YWQgUGxhbgogICAgaW5jbHVkZV92YXJzOgogICAgICBmaWxlOiAiL3RtcC9ob29rL3BsYW4ueW1s IgogICAgICBuYW1lOiBwbGFuCiAgLSBuYW1lOiBMb2FkIFdvcmtsb2FkCiAgICBpbmNsdWRlX3Zh cnM6CiAgICAgIGZpbGU6ICIvdG1wL2hvb2svd29ya2xvYWQueW1sIgogICAgICBuYW1lOiB3b3Jr bG9hZAoK EOF
移行の
Plan
マニフェストを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Plan metadata: name: <plan> namespace: openshift-mtv spec: warm: true provider: source: name: <source_provider> namespace: openshift-mtv destination: name: <destination_cluster> namespace: openshift-mtv map: network: name: <network_map> namespace: openshift-mtv storage: name: <storage_map> namespace: openshift-mtv targetNamespace: openshift-mtv vms: - id: <source_vm> - name: <source_vm> hooks: - hook: namespace: openshift-mtv name: <hook> step: <step> EOF
$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Plan metadata: name: <plan>
1 namespace: openshift-mtv spec: warm: true
2 provider: source: name: <source_provider> namespace: openshift-mtv destination: name: <destination_cluster> namespace: openshift-mtv map: network:
3 name: <network_map>
4 namespace: openshift-mtv storage: name: <storage_map>
5 namespace: openshift-mtv targetNamespace: openshift-mtv vms:
6 - id: <source_vm>
7 - name: <source_vm> hooks:
8 - hook: namespace: openshift-mtv name: <hook>
9 step: <step>
10 EOF
- 1
Plan
CR の名前を指定します。- 2
- 移行がウォームまたはコールドであるかどうかを指定します。
Migration
CR マニフェストでcutover
パラメーターの値を指定せずにウォーム移行を指定する場合は、プレコピー段階のみが実行されます。 - 3
- 複数のネットワークマッピングを追加することができます。
- 4
NetworkMap
CR の名前を指定します。- 5
StorageMap
CR の名前を指定します。- 6
id
パラメーター またはname
パラメーターのいずれかを使用して、ソース仮想マシンを指定することができます。- 7
- VMware 仮想マシン MOR または RHV 仮想マシンの UUID を指定します。
- 8
- オプション: 仮想マシンのフックを最大 2 つ指定できます。各フックは個別の移行ステップで実行する必要があります。
- 9
Hook
CR の名前を指定します。- 10
- 移行完了後の移行プランの開始前または
PostHook
の前の許容値は、PreHook
です。
Plan
CR を実行するためのMigration
マニフェストを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Migration metadata: name: <migration> namespace: openshift-mtv spec: plan: name: <plan> namespace: openshift-mtv cutover: <cutover_time> EOF
$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Migration metadata: name: <migration>
1 namespace: openshift-mtv spec: plan: name: <plan>
2 namespace: openshift-mtv cutover: <cutover_time>
3 EOF
複数の
Migration
CR を単一のPlan
CR に関連付けることができます。移行が完了しない場合は、Plan
CR を変更せずに新規Migration
CR を作成して残りの仮想マシンを移行できます。移行の進捗をモニタリングするための
Migration
CR を取得します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get migration/<migration> -n openshift-mtv -o yaml
$ oc get migration/<migration> -n openshift-mtv -o yaml