11.5. OpenStack 移行元プロバイダーからの移行
コマンドラインインターフェイス (CLI) を使用して、OpenStack ソースプロバイダーから移行できます。
手順
移行元プロバイダーの認証情報の
Secret
マニフェストを作成します。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
Copy to Clipboard Copied! - 1
ownerReferences
セクションはオプションです。- 2
- OpenStack ユーザーを指定します。
- 3
- OpenStack ユーザーのパスワードを指定します。
- 4
- 証明書の検証をスキップするには
"true"
を指定し、証明書を検証するには"false"
を指定します。指定されていない場合はデフォルトで"false"
になります。証明書の検証をスキップすると、安全でない移行が続行され、証明書は不要になります。セキュアではない移行とは、転送されたデータがセキュアではない接続を介して送信され、機密性の高いデータが公開される可能性があることを意味します。 - 5
- このフィールドが設定されておらず、skip certificate verification が無効になっている場合、MTV はシステム CA の使用を試みます。
- 6
- API エンドポイント URL を指定します (例:
https://<identity_service>/v3)
。
移行元プロバイダーの
Provider
マニフェストを作成します。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
Copy to Clipboard Copied!
移行元ネットワークと移行先ネットワークをマッピングする
NetworkMap
マニフェストを作成します。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
Copy to Clipboard Copied!
StorageMap
マニフェストを作成し、移行元ストレージと移行先ストレージをマッピングします。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
Copy to Clipboard Copied! オプション:
Hook
マニフェストを作成し、Plan
CR で指定されたフェーズ中に仮想マシンでカスタムコードを実行します。cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Hook metadata: name: <hook> namespace: <namespace> spec: image: quay.io/kubev2v/hook-runner serviceAccount:<service account> playbook: | LS0tCi0gbm... EOF
$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Hook metadata: name: <hook> namespace: <namespace> spec: image: quay.io/kubev2v/hook-runner serviceAccount:<service account>
1 playbook: | LS0tCi0gbm...
2 EOF
Copy to Clipboard Copied! 注記デフォルトの
hook-runner
イメージを使用するか、カスタムイメージを指定することができます。カスタムイメージを指定する場合は、Playbook を指定する必要はありません。
次のコマンドを入力して、MTV 移行に使用される転送ネットワークのネットワーク接続定義 (NAD) を作成します。
この定義を使用して、Dynamic Host Configuration Protocol (DHCP) から、または静的に、インターフェイスの IP アドレスを設定します。
IP アドレスを設定すると、インターフェイスが設定されたゲートウェイに到達できるようになります。
oc edit NetworkAttachmentDefinitions <name_of_the_NAD_to_edit>
$ oc edit NetworkAttachmentDefinitions <name_of_the_NAD_to_edit> apiVersion: k8s.cni.cncf.io/v1 kind: NetworkAttachmentDefinition metadata: name: <name_of_transfer_network> namespace: <namespace> annotations: forklift.konveyor.io/route: <IP_address>
Copy to Clipboard Copied! 移行の
Plan
マニフェストを作成します。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_vm1> - name: <source_vm2> 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_vm1>
8 - name: <source_vm2> hooks:
9 - hook: namespace: <namespace> name: <hook>
10 step: <step>
11 EOF
Copy to Clipboard Copied! - 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
マニフェストを作成します。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
Copy to Clipboard Copied! 注記カットオーバー時間を指定する場合は、UTC 時間オフセットを含む ISO 8601 形式を使用します (例:
2024-04-04T01:23:45.678+09:00)
。
11.5.1. コマンドラインインターフェイスからの移行のキャンセル
移行の進行中に、コマンドラインインターフェイス (CLI) を使用して、移行全体または特定の仮想マシン (VM) の移行をキャンセルできます。
移行全体のキャンセル
Migration
CR を削除します。oc delete migration <migration> -n <namespace>
$ oc delete migration <migration> -n <namespace>
1 Copy to Clipboard Copied! - 1
Migration
CR の名前を指定します。
特定の仮想マシンの移行のキャンセル
Migration
マニフェストのspec.cancel
ブロックに特定の仮想マシンを追加します。2 つの仮想マシンの移行をキャンセルするための YAML の例
cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Migration metadata: name: <migration> namespace: <namespace> ... spec: cancel: - id: vm-102 - id: vm-203 name: rhel8-vm EOF
$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: Migration metadata: name: <migration> namespace: <namespace> ... spec: cancel: - id: vm-102
1 - id: vm-203 name: rhel8-vm EOF
Copy to Clipboard Copied! - 1
id
キーまたはname
キーを使用して仮想マシンを指定できます。
id
キーの値は、VMware 仮想マシンの場合は Managed Object Reference、RHV 仮想マシンの場合は VM UUID です。残りの仮想マシンの進捗をモニタリングするための
Migration
CR を取得します。oc get migration/<migration> -n <namespace> -o yaml
$ oc get migration/<migration> -n <namespace> -o yaml
Copy to Clipboard Copied!