5.3. 仮想マシンの移行
MTV カスタムリソース (CR) を作成して、仮想マシン (VM) をコマンドライン (CLI) から移行します。CR と移行手順は移行元プロバイダーによって異なります。
クラスタースコープの CR の名前を指定する必要があります。
namespace スコープの CR の名前と namespace の両方を指定する必要があります。
移行計画が定義されている OpenShift クラスターとは異なる OpenShift クラスターへの移行や、そこからの移行を行うには、cluster-admin
権限を持つ OpenShift Virtualization サービスアカウントトークンが必要です。
5.3.1. VMware vSphere 移行元プロバイダーからの移行
CLI を使用して VMware vSphere ソースプロバイダーから移行できます。
手順
移行元プロバイダーの認証情報の
Secret
マニフェストを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat << EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: <secret> namespace: <namespace> ownerReferences: - apiVersion: forklift.konveyor.io/v1beta1 kind: Provider name: <provider_name> uid: <provider_uid> labels: createdForProviderType: vsphere createdForResourceType: providers type: Opaque stringData: user: <user> password: <password> insecureSkipVerify: <"true"/"false"> cacert: | <ca_certificate> url: <api_end_point> EOF
$ cat << EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: <secret> namespace: <namespace> ownerReferences:
1 - apiVersion: forklift.konveyor.io/v1beta1 kind: Provider name: <provider_name> uid: <provider_uid> labels: createdForProviderType: vsphere createdForResourceType: providers type: Opaque stringData: user: <user>
2 password: <password>
3 insecureSkipVerify: <"true"/"false">
4 cacert: |
5 <ca_certificate> url: <api_end_point>
6 EOF
- 1
ownerReferences
セクションはオプションです。- 2
- vCenter ユーザーまたは ESX/ESXi ユーザーを指定します。
- 3
- vCenter ユーザーまたは ESX/ESXi ユーザーのパスワードを指定します。
- 4
"true"
を指定して証明書の検証を省略し、"false"
を指定して証明書を検証します。指定されていない場合はデフォルトで"false"
になります。証明書の検証をスキップすると、安全でない移行が続行され、証明書は不要になります。セキュアではない移行とは、転送されたデータがセキュアではない接続を介して送信され、機密性の高いデータが公開される可能性があることを意味します。- 5
- このフィールドが設定されておらず、skip certificate verification が無効になっている場合、MTV はシステム CA の使用を試みます。
- 6
- vCenter または ESX/ESXi の API エンドポイント URL を指定します (例:
https://<vCenter_host>/sdk
)。
移行元プロバイダーの
Provider
マニフェストを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Provider metadata: name: <source_provider> namespace: <namespace> spec: type: vsphere url: <api_end_point> settings: vddkInitImage: <VDDK_image> sdkEndpoint: vcenter secret: name: <secret> namespace: <namespace> EOF
$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Provider metadata: name: <source_provider> namespace: <namespace> spec: type: vsphere url: <api_end_point>
1 settings: vddkInitImage: <VDDK_image>
2 sdkEndpoint: vcenter
3 secret: name: <secret>
4 namespace: <namespace> EOF
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: <namespace> spec: provider: namespace: <namespace> 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: <namespace> spec: provider: namespace: <namespace> name: <source_provider>
1 id: <source_host_mor>
2 ipAddress: <source_network_ip>
3 EOF
- 1
- VMware vSphere
Provider
CR の名前を指定します。 - 2
- VMware vSphere ホストの Managed Object Reference (moRef) を指定します。moRef を取得するには、VMware vSphere moRef の取得 を参照してください。
- 3
- VMware vSphere 移行ネットワークの IP アドレスを指定します。
移行元ネットワークと移行先ネットワークをマッピングする
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: <namespace> spec: map: - destination: name: <network_name> 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: <namespace> destination: name: <destination_provider> namespace: <namespace> EOF
$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: NetworkMap metadata: name: <network_map> namespace: <namespace> spec: map: - destination: name: <network_name> type: pod
1 source:
2 id: <source_network_id> name: <source_network_name> - destination: name: <network_attachment_definition>
3 namespace: <network_attachment_definition_namespace>
4 type: multus source: id: <source_network_id> name: <source_network_name> provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> EOF
- 1
- 使用できる値は
Pod
およびmultus
です。 - 2
id
パラメーター またはname
パラメーターのいずれかを使用して、ソースネットワークを指定できます。id
には、VMware vSphere ネットワーク Managed Object Reference (moRef) を指定します。moRef を取得するには、VMware vSphere moRef の取得 を参照してください。- 3
- 追加の OpenShift Virtualization ネットワークごとにネットワークアタッチメント定義を指定します。
- 4
type
がmultus
の場合に限り必要です。OpenShift Virtualization のネットワークアタッチメント定義の namespace を指定します。
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: <namespace> spec: map: - destination: storageClass: <storage_class> accessMode: <access_mode> source: id: <source_datastore> provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> EOF
$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: StorageMap metadata: name: <storage_map> namespace: <namespace> spec: map: - destination: storageClass: <storage_class> accessMode: <access_mode>
1 source: id: <source_datastore>
2 provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> EOF
- 1
- 使用できる値は
ReadWriteOnce
およびReadWriteMany
です。 - 2
- VMware vSphere データストアの moRef を指定します。たとえば、
f2737930-b567-451a-9ceb-2887f6207009
です。moRef を取得するには、VMware vSphere moRef の取得 を参照してください。
オプション:
Hook
マニフェストを作成し、Plan
CR で指定されたフェーズ中に仮想マシンでカスタムコードを実行します。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: <namespace> 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: <namespace> spec: image: quay.io/konveyor/hook-runner playbook: | LS0tCi0gbmFtZTogTWFpbgogIGhvc3RzOiBsb2NhbGhvc3QKICB0YXNrczoKICAtIG5hbWU6IExv YWQgUGxhbgogICAgaW5jbHVkZV92YXJzOgogICAgICBmaWxlOiAiL3RtcC9ob29rL3BsYW4ueW1s IgogICAgICBuYW1lOiBwbGFuCiAgLSBuYW1lOiBMb2FkIFdvcmtsb2FkCiAgICBpbmNsdWRlX3Zh cnM6CiAgICAgIGZpbGU6ICIvdG1wL2hvb2svd29ya2xvYWQueW1sIgogICAgICBuYW1lOiB3b3Jr bG9hZAoK EOF
ここでは、以下のようになります。
Playbook
は、任意の Base64 でエンコードされた Ansible Playbook を参照します。Playbook を指定する場合は、image
がhook-runner
である必要があります。注記デフォルトの
hook-runner
イメージを使用するか、カスタムイメージを指定することができます。カスタムイメージを指定する場合は、Playbook を指定する必要はありません。
移行の
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: <namespace> spec: warm: false provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> map: network: name: <network_map> namespace: <namespace> storage: name: <storage_map> namespace: <namespace> targetNamespace: <target_namespace> vms: - id: <source_vm> - name: <source_vm> hooks: - hook: namespace: <namespace> name: <hook> step: <step> EOF
$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Plan metadata: name: <plan>
1 namespace: <namespace> spec: warm: false
2 provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> map:
3 network:
4 name: <network_map>
5 namespace: <namespace> storage:
6 name: <storage_map>
7 namespace: <namespace> targetNamespace: <target_namespace> vms:
8 - id: <source_vm>
9 - name: <source_vm> hooks:
10 - hook: namespace: <namespace> name: <hook>
11 step: <step>
12 EOF
- 1
Plan
CR の名前を指定します。- 2
- 移行がウォーム (
true
) かコールド (false
) かを指定します。Migration
マニフェストでcutover
パラメーターの値を指定せずにウォーム移行を指定すると、プレコピーステージのみが実行します。 - 3
- プランごとにネットワークマップとストレージマップを 1 つだけ指定します。
- 4
- 移行する仮想マシンがネットワークに割り当てられていない場合でも、ネットワークマッピングを指定します。この場合、マッピングは空にできます。
- 5
NetworkMap
CR の名前を指定します。- 6
- 移行する仮想マシンにディスクイメージが割り当てられていない場合でも、ストレージマッピングを指定します。この場合、マッピングは空にできます。
- 7
StorageMap
CR の名前を指定します。- 8
id
パラメーター またはname
パラメーターのいずれかを使用して、ソース仮想マシンを指定することができます。
- 9
- VMware vSphere 仮想マシンの moRef を指定します。moRef を取得するには、VMware vSphere moRef の取得 を参照してください。
- 10
- オプション: 仮想マシンのフックを最大 2 つ指定できます。各フックは個別の移行ステップで実行する必要があります。
- 11
Hook
CR の名前を指定します。- 12
- 使用できる値は、移行計画が開始される前の
PreHook
、または移行が完了した後のPostHook
です。
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: <name_of_migration_cr> namespace: <namespace> spec: plan: name: <name_of_plan_cr> namespace: <namespace> cutover: <optional_cutover_time> EOF
$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Migration metadata: name: <name_of_migration_cr> namespace: <namespace> spec: plan: name: <name_of_plan_cr> namespace: <namespace> cutover: <optional_cutover_time> EOF
注記カットオーバー時間を指定する場合は、UTC 時間オフセットを含む ISO 8601 形式を使用します (例:
2024-04-04T01:23:45.678+09:00)
。
5.3.2. Red Hat Virtualization 移行元プロバイダーからの移行
CLI を使用して、Red Hat Virtualization (RHV) 移行元プロバイダーから移行できます。
前提条件
ダイレクト LUN ディスクを使用して仮想マシンを移行する場合は、仮想マシン実行先の OpenShift Virtualization クラスター内のノードがバックエンドストレージにアクセスできることを確認してください。
- 移行元プロバイダーから移行先プロバイダーに コピーされる ディスクイメージとは異なり、LUN は移行元プロバイダーの仮想マシンから 切り離され ますが、削除 されず、ターゲットプロバイダーで作成された仮想マシン (VM) にアタッチされます。
- 移行元プロバイダーへのフォールバックが必要な場合に備えて、移行中に LUN は移行元プロバイダーから削除されません。ただし、LUN を移行元プロバイダーの仮想マシンに再接続する前に、LUN がターゲット環境上の仮想マシンによって同時に使用されていないことを確認してください。同時に使用されていると、データの破損が発生する可能性があります。
手順
移行元プロバイダーの認証情報の
Secret
マニフェストを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat << EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: <secret> namespace: <namespace> ownerReferences: - apiVersion: forklift.konveyor.io/v1beta1 kind: Provider name: <provider_name> uid: <provider_uid> labels: createdForProviderType: ovirt createdForResourceType: providers type: Opaque stringData: user: <user> password: <password> insecureSkipVerify: <"true"/"false"> cacert: | <ca_certificate> url: <api_end_point> EOF
$ cat << EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: <secret> namespace: <namespace> ownerReferences:
1 - apiVersion: forklift.konveyor.io/v1beta1 kind: Provider name: <provider_name> uid: <provider_uid> labels: createdForProviderType: ovirt createdForResourceType: providers type: Opaque stringData: user: <user>
2 password: <password>
3 insecureSkipVerify: <"true"/"false">
4 cacert: |
5 <ca_certificate> url: <api_end_point>
6 EOF
- 1
ownerReferences
セクションはオプションです。- 2
- RHV Manager ユーザーを指定します。
- 3
- ユーザーパスワードを指定します。
- 4
"true"
を指定して証明書の検証を省略し、"false"
を指定して証明書を検証します。指定されていない場合はデフォルトで"false"
になります。証明書の検証をスキップすると、安全でない移行が続行され、証明書は不要になります。セキュアではない移行とは、転送されたデータがセキュアではない接続を介して送信され、機密性の高いデータが公開される可能性があることを意味します。- 5
- サードパーティーの証明書に置き換えられていない限り、Manager CA 証明書を入力します。その場合は、Manager Apache CA 証明書を入力します。Manager CA 証明書は、https://<engine_host>/ovirt-engine/services/pki-resource?resource=ca-certificate&format=X509-PEM-CA で取得できます。
- 6
- API エンドポイント URL を指定します (例:
https://<engine_host>/ovirt-engine/api)
。
移行元プロバイダーの
Provider
マニフェストを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Provider metadata: name: <source_provider> namespace: <namespace> spec: type: ovirt url: <api_end_point> secret: name: <secret> namespace: <namespace> EOF
$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Provider metadata: name: <source_provider> namespace: <namespace> spec: type: ovirt url: <api_end_point>
1 secret: name: <secret>
2 namespace: <namespace> 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: <namespace> spec: map: - destination: name: <network_name> 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: <namespace> destination: name: <destination_provider> namespace: <namespace> EOF
$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: NetworkMap metadata: name: <network_map> namespace: <namespace> spec: map: - destination: name: <network_name> type: pod
1 source:
2 id: <source_network_id> name: <source_network_name> - destination: name: <network_attachment_definition>
3 namespace: <network_attachment_definition_namespace>
4 type: multus source: id: <source_network_id> name: <source_network_name> provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> 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: <namespace> spec: map: - destination: storageClass: <storage_class> accessMode: <access_mode> source: id: <source_storage_domain> provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> EOF
$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: StorageMap metadata: name: <storage_map> namespace: <namespace> spec: map: - destination: storageClass: <storage_class> accessMode: <access_mode>
1 source: id: <source_storage_domain>
2 provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> EOF
オプション:
Hook
マニフェストを作成し、Plan
CR で指定されたフェーズ中に仮想マシンでカスタムコードを実行します。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: <namespace> 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: <namespace> spec: image: quay.io/konveyor/hook-runner playbook: | LS0tCi0gbmFtZTogTWFpbgogIGhvc3RzOiBsb2NhbGhvc3QKICB0YXNrczoKICAtIG5hbWU6IExv YWQgUGxhbgogICAgaW5jbHVkZV92YXJzOgogICAgICBmaWxlOiAiL3RtcC9ob29rL3BsYW4ueW1s IgogICAgICBuYW1lOiBwbGFuCiAgLSBuYW1lOiBMb2FkIFdvcmtsb2FkCiAgICBpbmNsdWRlX3Zh cnM6CiAgICAgIGZpbGU6ICIvdG1wL2hvb2svd29ya2xvYWQueW1sIgogICAgICBuYW1lOiB3b3Jr bG9hZAoK EOF
ここでは、以下のようになります。
Playbook
は、任意の Base64 でエンコードされた Ansible Playbook を参照します。Playbook を指定する場合は、image
がhook-runner
である必要があります。注記デフォルトの
hook-runner
イメージを使用するか、カスタムイメージを指定することができます。カスタムイメージを指定する場合は、Playbook を指定する必要はありません。
移行の
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: <namespace> preserveClusterCpuModel: true spec: warm: false provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> map: network: name: <network_map> namespace: <namespace> storage: name: <storage_map> namespace: <namespace> targetNamespace: <target_namespace> vms: - id: <source_vm> - name: <source_vm> hooks: - hook: namespace: <namespace> name: <hook> step: <step> EOF
$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Plan metadata: name: <plan>
1 namespace: <namespace> preserveClusterCpuModel: true
2 spec: warm: false
3 provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> map:
4 network:
5 name: <network_map>
6 namespace: <namespace> storage:
7 name: <storage_map>
8 namespace: <namespace> targetNamespace: <target_namespace> vms:
9 - id: <source_vm>
10 - name: <source_vm> hooks:
11 - hook: namespace: <namespace> name: <hook>
12 step: <step>
13 EOF
- 1
Plan
CR の名前を指定します。- 2
- 以下の注を参照してください。
- 3
- 移行がウォームまたはコールドであるかどうかを指定します。
Migration
マニフェストでcutover
パラメーターの値を指定せずにウォーム移行を指定すると、プレコピーステージのみが実行します。 - 4
- プランごとにネットワークマップとストレージマップを 1 つだけ指定します。
- 5
- 移行する仮想マシンがネットワークに割り当てられていない場合でも、ネットワークマッピングを指定します。この場合、マッピングは空にできます。
- 6
NetworkMap
CR の名前を指定します。- 7
- 移行する仮想マシンにディスクイメージが割り当てられていない場合でも、ストレージマッピングを指定します。この場合、マッピングは空にできます。
- 8
StorageMap
CR の名前を指定します。- 9
id
パラメーター またはname
パラメーターのいずれかを使用して、ソース仮想マシンを指定できます。- 10
- RHV 仮想マシンの UUID を指定します。
- 11
- オプション: 仮想マシンのフックを最大 2 つ指定できます。各フックは個別の移行ステップで実行する必要があります。
- 12
Hook
CR の名前を指定します。- 13
- 使用できる値は、移行計画が開始される前の
PreHook
、または移行が完了した後のPostHook
です。
注記-
移行されたマシンにカスタム CPU モデルが設定されている場合、
preserveClusterCpuModel
の設定に関係なく、移行先クラスターでもその CPU モデルが設定されます。 移行されたマシンにカスタム CPU モデルが 設定されていない 場合:
-
preserveClusterCpuModel
が 'true` に設定されている場合、MTV はクラスターの設定に基づいて、RHV で実行されている仮想マシンの CPU モデルをチェックし、移行された仮想マシンをその CPU モデルに設定します。 -
preserveClusterCpuModel
が 'false` に設定されている場合、MTV は CPU タイプを設定せず、仮想マシンが移行先クラスターのデフォルトの CPU モデルで設定されます。
-
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: <name_of_migration_cr> namespace: <namespace> spec: plan: name: <name_of_plan_cr> namespace: <namespace> cutover: <optional_cutover_time> EOF
$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Migration metadata: name: <name_of_migration_cr> namespace: <namespace> spec: plan: name: <name_of_plan_cr> namespace: <namespace> cutover: <optional_cutover_time> EOF
注記カットオーバー時間を指定する場合は、UTC 時間オフセットを含む ISO 8601 形式を使用します (例:
2024-04-04T01:23:45.678+09:00)
。
5.3.3. OpenStack 移行元プロバイダーからの移行
CLI を使用して OpenStack ソースプロバイダーから移行できます。
手順
移行元プロバイダーの認証情報の
Secret
マニフェストを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat << EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: <secret> namespace: <namespace> ownerReferences: - apiVersion: forklift.konveyor.io/v1beta1 kind: Provider name: <provider_name> uid: <provider_uid> labels: createdForProviderType: openstack createdForResourceType: providers type: Opaque stringData: user: <user> password: <password> insecureSkipVerify: <"true"/"false"> domainName: <domain_name> projectName: <project_name> regionName: <region_name> cacert: | <ca_certificate> url: <api_end_point> EOF
$ cat << EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: <secret> namespace: <namespace> ownerReferences:
1 - apiVersion: forklift.konveyor.io/v1beta1 kind: Provider name: <provider_name> uid: <provider_uid> labels: createdForProviderType: openstack createdForResourceType: providers type: Opaque stringData: user: <user>
2 password: <password>
3 insecureSkipVerify: <"true"/"false">
4 domainName: <domain_name> projectName: <project_name> regionName: <region_name> cacert: |
5 <ca_certificate> url: <api_end_point>
6 EOF
- 1
ownerReferences
セクションはオプションです。- 2
- OpenStack ユーザーを指定します。
- 3
- OpenStack ユーザーのパスワードを指定します。
- 4
"true"
を指定して証明書の検証を省略し、"false"
を指定して証明書を検証します。指定されていない場合はデフォルトで"false"
になります。証明書の検証をスキップすると、安全でない移行が続行され、証明書は不要になります。セキュアではない移行とは、転送されたデータがセキュアではない接続を介して送信され、機密性の高いデータが公開される可能性があることを意味します。- 5
- このフィールドが設定されておらず、skip certificate verification が無効になっている場合、MTV はシステム CA の使用を試みます。
- 6
- API エンドポイント URL を指定します (例:
https://<identity_service>/v3)
。
移行元プロバイダーの
Provider
マニフェストを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Provider metadata: name: <source_provider> namespace: <namespace> spec: type: openstack url: <api_end_point> secret: name: <secret> namespace: <namespace> EOF
$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Provider metadata: name: <source_provider> namespace: <namespace> spec: type: openstack url: <api_end_point>
1 secret: name: <secret>
2 namespace: <namespace> 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: <namespace> spec: map: - destination: name: <network_name> 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: <namespace> destination: name: <destination_provider> namespace: <namespace> EOF
$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: NetworkMap metadata: name: <network_map> namespace: <namespace> spec: map: - destination: name: <network_name> type: pod
1 source:
2 id: <source_network_id> name: <source_network_name> - destination: name: <network_attachment_definition>
3 namespace: <network_attachment_definition_namespace>
4 type: multus source: id: <source_network_id> name: <source_network_name> provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> 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: <namespace> spec: map: - destination: storageClass: <storage_class> accessMode: <access_mode> source: id: <source_volume_type> provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> EOF
$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: StorageMap metadata: name: <storage_map> namespace: <namespace> spec: map: - destination: storageClass: <storage_class> accessMode: <access_mode>
1 source: id: <source_volume_type>
2 provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> EOF
オプション:
Hook
マニフェストを作成し、Plan
CR で指定されたフェーズ中に仮想マシンでカスタムコードを実行します。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: <namespace> 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: <namespace> spec: image: quay.io/konveyor/hook-runner playbook: | LS0tCi0gbmFtZTogTWFpbgogIGhvc3RzOiBsb2NhbGhvc3QKICB0YXNrczoKICAtIG5hbWU6IExv YWQgUGxhbgogICAgaW5jbHVkZV92YXJzOgogICAgICBmaWxlOiAiL3RtcC9ob29rL3BsYW4ueW1s IgogICAgICBuYW1lOiBwbGFuCiAgLSBuYW1lOiBMb2FkIFdvcmtsb2FkCiAgICBpbmNsdWRlX3Zh cnM6CiAgICAgIGZpbGU6ICIvdG1wL2hvb2svd29ya2xvYWQueW1sIgogICAgICBuYW1lOiB3b3Jr bG9hZAoK EOF
ここでは、以下のようになります。
Playbook
は、任意の Base64 でエンコードされた Ansible Playbook を参照します。Playbook を指定する場合は、image
がhook-runner
である必要があります。注記デフォルトの
hook-runner
イメージを使用するか、カスタムイメージを指定することができます。カスタムイメージを指定する場合は、Playbook を指定する必要はありません。
移行の
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: <namespace> spec: provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> map: network: name: <network_map> namespace: <namespace> storage: name: <storage_map> namespace: <namespace> targetNamespace: <target_namespace> vms: - id: <source_vm> - name: <source_vm> hooks: - hook: namespace: <namespace> name: <hook> step: <step> EOF
$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Plan metadata: name: <plan>
1 namespace: <namespace> spec: provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> map:
2 network:
3 name: <network_map>
4 namespace: <namespace> storage:
5 name: <storage_map>
6 namespace: <namespace> targetNamespace: <target_namespace> vms:
7 - id: <source_vm>
8 - name: <source_vm> hooks:
9 - hook: namespace: <namespace> name: <hook>
10 step: <step>
11 EOF
- 1
Plan
CR の名前を指定します。- 2
- プランごとにネットワークマップとストレージマップを 1 つだけ指定します。
- 3
- 移行する仮想マシンがネットワークに割り当てられていない場合でも、ネットワークマッピングを指定します。この場合、マッピングは空にできます。
- 4
NetworkMap
CR の名前を指定します。- 5
- 移行する仮想マシンにディスクイメージが割り当てられていない場合でも、ストレージマッピングを指定します。この場合、マッピングは空にできます。
- 6
StorageMap
CR の名前を指定します。- 7
id
パラメーター またはname
パラメーターのいずれかを使用して、ソース仮想マシンを指定できます。- 8
- OpenStack 仮想マシン UUID を指定します。
- 9
- オプション: 仮想マシンのフックを最大 2 つ指定できます。各フックは個別の移行ステップで実行する必要があります。
- 10
Hook
CR の名前を指定します。- 11
- 使用できる値は、移行計画が開始される前の
PreHook
、または移行が完了した後のPostHook
です。
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: <name_of_migration_cr> namespace: <namespace> spec: plan: name: <name_of_plan_cr> namespace: <namespace> cutover: <optional_cutover_time> EOF
$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Migration metadata: name: <name_of_migration_cr> namespace: <namespace> spec: plan: name: <name_of_plan_cr> namespace: <namespace> cutover: <optional_cutover_time> EOF
注記カットオーバー時間を指定する場合は、UTC 時間オフセットを含む ISO 8601 形式を使用します (例:
2024-04-04T01:23:45.678+09:00)
。
5.3.4. Open Virtual Appliance (OVA) の移行元プロバイダーからの移行
CLI を使用して、移行元プロバイダーとして VMware vSphere によって作成された Open Virtual Appliance (OVA) ファイルから移行できます。
手順
移行元プロバイダーの認証情報の
Secret
マニフェストを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat << EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: <secret> namespace: <namespace> ownerReferences: - apiVersion: forklift.konveyor.io/v1beta1 kind: Provider name: <provider_name> uid: <provider_uid> labels: createdForProviderType: ova createdForResourceType: providers type: Opaque stringData: url: <nfs_server:/nfs_path> EOF
$ cat << EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: <secret> namespace: <namespace> ownerReferences:
1 - apiVersion: forklift.konveyor.io/v1beta1 kind: Provider name: <provider_name> uid: <provider_uid> labels: createdForProviderType: ova createdForResourceType: providers type: Opaque stringData: url: <nfs_server:/nfs_path>
2 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: <source_provider> namespace: <namespace> spec: type: ova url: <nfs_server:/nfs_path> secret: name: <secret> namespace: <namespace> EOF
$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Provider metadata: name: <source_provider> namespace: <namespace> spec: type: ova url: <nfs_server:/nfs_path>
1 secret: name: <secret>
2 namespace: <namespace> 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: <namespace> spec: map: - destination: name: <network_name> type: pod source: id: <source_network_id> - destination: name: <network_attachment_definition> namespace: <network_attachment_definition_namespace> type: multus source: id: <source_network_id> provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> EOF
$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: NetworkMap metadata: name: <network_map> namespace: <namespace> spec: map: - destination: name: <network_name> type: pod
1 source: id: <source_network_id>
2 - destination: name: <network_attachment_definition>
3 namespace: <network_attachment_definition_namespace>
4 type: multus source: id: <source_network_id> provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> 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: <namespace> spec: map: - destination: storageClass: <storage_class> accessMode: <access_mode> source: name: Dummy storage for source provider <provider_name> provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> EOF
$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: StorageMap metadata: name: <storage_map> namespace: <namespace> spec: map: - destination: storageClass: <storage_class> accessMode: <access_mode>
1 source: name: Dummy storage for source provider <provider_name>
2 provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> EOF
オプション:
Hook
マニフェストを作成し、Plan
CR で指定されたフェーズ中に仮想マシンでカスタムコードを実行します。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: <namespace> 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: <namespace> spec: image: quay.io/konveyor/hook-runner playbook: | LS0tCi0gbmFtZTogTWFpbgogIGhvc3RzOiBsb2NhbGhvc3QKICB0YXNrczoKICAtIG5hbWU6IExv YWQgUGxhbgogICAgaW5jbHVkZV92YXJzOgogICAgICBmaWxlOiAiL3RtcC9ob29rL3BsYW4ueW1s IgogICAgICBuYW1lOiBwbGFuCiAgLSBuYW1lOiBMb2FkIFdvcmtsb2FkCiAgICBpbmNsdWRlX3Zh cnM6CiAgICAgIGZpbGU6ICIvdG1wL2hvb2svd29ya2xvYWQueW1sIgogICAgICBuYW1lOiB3b3Jr bG9hZAoK EOF
ここでは、以下のようになります。
Playbook
は、任意の Base64 でエンコードされた Ansible Playbook を参照します。Playbook を指定する場合は、image
がhook-runner
である必要があります。注記デフォルトの
hook-runner
イメージを使用するか、カスタムイメージを指定することができます。カスタムイメージを指定する場合は、Playbook を指定する必要はありません。
移行の
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: <namespace> spec: provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> map: network: name: <network_map> namespace: <namespace> storage: name: <storage_map> namespace: <namespace> targetNamespace: <target_namespace> vms: - id: <source_vm> - name: <source_vm> hooks: - hook: namespace: <namespace> name: <hook> step: <step> EOF
$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Plan metadata: name: <plan>
1 namespace: <namespace> spec: provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> map:
2 network:
3 name: <network_map>
4 namespace: <namespace> storage:
5 name: <storage_map>
6 namespace: <namespace> targetNamespace: <target_namespace> vms:
7 - id: <source_vm>
8 - name: <source_vm> hooks:
9 - hook: namespace: <namespace> name: <hook>
10 step: <step>
11 EOF
- 1
Plan
CR の名前を指定します。- 2
- プランごとにネットワークマップとストレージマップを 1 つだけ指定します。
- 3
- 移行する仮想マシンがネットワークに割り当てられていない場合でも、ネットワークマッピングを指定します。この場合、マッピングは空にできます。
- 4
NetworkMap
CR の名前を指定します。- 5
- 移行する仮想マシンにディスクイメージが割り当てられていない場合でも、ストレージマッピングを指定します。この場合、マッピングは空にできます。
- 6
StorageMap
CR の名前を指定します。- 7
id
パラメーター またはname
パラメーターのいずれかを使用して、ソース仮想マシンを指定できます。- 8
- OVA 仮想マシン UUID を指定します。
- 9
- オプション: 仮想マシンのフックを最大 2 つ指定できます。各フックは個別の移行ステップで実行する必要があります。
- 10
Hook
CR の名前を指定します。- 11
- 使用できる値は、移行計画が開始される前の
PreHook
、または移行が完了した後のPostHook
です。
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: <name_of_migration_cr> namespace: <namespace> spec: plan: name: <name_of_plan_cr> namespace: <namespace> cutover: <optional_cutover_time> EOF
$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Migration metadata: name: <name_of_migration_cr> namespace: <namespace> spec: plan: name: <name_of_plan_cr> namespace: <namespace> cutover: <optional_cutover_time> EOF
注記カットオーバー時間を指定する場合は、UTC 時間オフセットを含む ISO 8601 形式を使用します (例:
2024-04-04T01:23:45.678+09:00)
。
5.3.5. Red Hat OpenShift Virtualization 移行元プロバイダーからの移行
Red Hat OpenShift Virtualization プロバイダーは、ソースプロバイダーまたは宛先プロバイダーとして使用できます。
手順
移行元プロバイダーの認証情報の
Secret
マニフェストを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat << EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: <secret> namespace: <namespace> ownerReferences: - apiVersion: forklift.konveyor.io/v1beta1 kind: Provider name: <provider_name> uid: <provider_uid> labels: createdForProviderType: openshift createdForResourceType: providers type: Opaque stringData: token: <token> password: <password> insecureSkipVerify: <"true"/"false"> cacert: | <ca_certificate> url: <api_end_point> EOF
$ cat << EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: <secret> namespace: <namespace> ownerReferences:
1 - apiVersion: forklift.konveyor.io/v1beta1 kind: Provider name: <provider_name> uid: <provider_uid> labels: createdForProviderType: openshift createdForResourceType: providers type: Opaque stringData: token: <token>
2 password: <password>
3 insecureSkipVerify: <"true"/"false">
4 cacert: |
5 <ca_certificate> url: <api_end_point>
6 EOF
- 1
ownerReferences
セクションはオプションです。- 2
cluster-admin
権限でサービスアカウントのトークンを指定します。トークン
とURL
の両方が空白のままの場合、ローカル OpenShift クラスターが使用されます。- 3
- ユーザーパスワードを指定します。
- 4
"true"
を指定して証明書の検証を省略し、"false"
を指定して証明書を検証します。指定されていない場合はデフォルトで"false"
になります。証明書の検証をスキップすると、安全でない移行が続行され、証明書は不要になります。セキュアではない移行とは、転送されたデータがセキュアではない接続を介して送信され、機密性の高いデータが公開される可能性があることを意味します。- 5
- このフィールドが設定されておらず、skip certificate verification が無効になっている場合、MTV はシステム CA の使用を試みます。
- 6
- API サーバーのエンドポイントの URL を指定します。
移行元プロバイダーの
Provider
マニフェストを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Provider metadata: name: <source_provider> namespace: <namespace> spec: type: openshift url: <api_end_point> secret: name: <secret> namespace: <namespace> EOF
$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Provider metadata: name: <source_provider> namespace: <namespace> spec: type: openshift url: <api_end_point>
1 secret: name: <secret>
2 namespace: <namespace> 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: <namespace> spec: map: - destination: name: <network_name> type: pod source: name: <network_name> type: pod - destination: name: <network_attachment_definition> namespace: <network_attachment_definition_namespace> type: multus source: name: <network_attachment_definition> namespace: <network_attachment_definition_namespace> type: multus provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> EOF
$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: NetworkMap metadata: name: <network_map> namespace: <namespace> spec: map: - destination: name: <network_name> type: pod
1 source: name: <network_name> type: pod - destination: name: <network_attachment_definition>
2 namespace: <network_attachment_definition_namespace>
3 type: multus source: name: <network_attachment_definition> namespace: <network_attachment_definition_namespace> type: multus provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> 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: <namespace> spec: map: - destination: storageClass: <storage_class> accessMode: <access_mode> source: name: <storage_class> provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> EOF
$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: StorageMap metadata: name: <storage_map> namespace: <namespace> spec: map: - destination: storageClass: <storage_class> accessMode: <access_mode>
1 source: name: <storage_class> provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> EOF
- 1
- 使用できる値は
ReadWriteOnce
およびReadWriteMany
です。
オプション:
Hook
マニフェストを作成し、Plan
CR で指定されたフェーズ中に仮想マシンでカスタムコードを実行します。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: <namespace> 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: <namespace> spec: image: quay.io/konveyor/hook-runner playbook: | LS0tCi0gbmFtZTogTWFpbgogIGhvc3RzOiBsb2NhbGhvc3QKICB0YXNrczoKICAtIG5hbWU6IExv YWQgUGxhbgogICAgaW5jbHVkZV92YXJzOgogICAgICBmaWxlOiAiL3RtcC9ob29rL3BsYW4ueW1s IgogICAgICBuYW1lOiBwbGFuCiAgLSBuYW1lOiBMb2FkIFdvcmtsb2FkCiAgICBpbmNsdWRlX3Zh cnM6CiAgICAgIGZpbGU6ICIvdG1wL2hvb2svd29ya2xvYWQueW1sIgogICAgICBuYW1lOiB3b3Jr bG9hZAoK EOF
ここでは、以下のようになります。
Playbook
は、任意の Base64 でエンコードされた Ansible Playbook を参照します。Playbook を指定する場合は、image
がhook-runner
である必要があります。注記デフォルトの
hook-runner
イメージを使用するか、カスタムイメージを指定することができます。カスタムイメージを指定する場合は、Playbook を指定する必要はありません。
移行の
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: <namespace> spec: provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> map: network: name: <network_map> namespace: <namespace> storage: name: <storage_map> namespace: <namespace> targetNamespace: <target_namespace> vms: - name: <source_vm> namespace: <namespace> hooks: - hook: namespace: <namespace> name: <hook> step: <step> EOF
$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Plan metadata: name: <plan>
1 namespace: <namespace> spec: provider: source: name: <source_provider> namespace: <namespace> destination: name: <destination_provider> namespace: <namespace> map:
2 network:
3 name: <network_map>
4 namespace: <namespace> storage:
5 name: <storage_map>
6 namespace: <namespace> targetNamespace: <target_namespace> vms: - name: <source_vm> namespace: <namespace> hooks:
7 - hook: namespace: <namespace> name: <hook>
8 step: <step>
9 EOF
- 1
Plan
CR の名前を指定します。- 2
- プランごとにネットワークマップとストレージマップを 1 つだけ指定します。
- 3
- 移行する仮想マシンがネットワークに割り当てられていない場合でも、ネットワークマッピングを指定します。この場合、マッピングは空にできます。
- 4
NetworkMap
CR の名前を指定します。- 5
- 移行する仮想マシンにディスクイメージが割り当てられていない場合でも、ストレージマッピングを指定します。この場合、マッピングは空にできます。
- 6
StorageMap
CR の名前を指定します。- 7
- オプション: 仮想マシンのフックを最大 2 つ指定できます。各フックは個別の移行ステップで実行する必要があります。
- 8
Hook
CR の名前を指定します。- 9
- 使用できる値は、移行計画が開始される前の
PreHook
、または移行が完了した後のPostHook
です。
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: <name_of_migration_cr> namespace: <namespace> spec: plan: name: <name_of_plan_cr> namespace: <namespace> cutover: <optional_cutover_time> EOF
$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Migration metadata: name: <name_of_migration_cr> namespace: <namespace> spec: plan: name: <name_of_plan_cr> namespace: <namespace> cutover: <optional_cutover_time> EOF
注記カットオーバー時間を指定する場合は、UTC 時間オフセットを含む ISO 8601 形式を使用します (例:
2024-04-04T01:23:45.678+09:00)
。