Migration Toolkit for Virtualization のインストールおよび使用
VMware vSphere または Red Hat Virtualization から Red Hat OpenShift Virtualization への移行
概要
多様性を受け入れるオープンソースの強化
Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、用語の置き換えは、今後の複数のリリースにわたって段階的に実施されます。詳細は、Red Hat CTO である Chris Wright のメッセージ をご覧ください。
第1章 Migration Toolkit for Virtualization について
Migration Toolkit for Virtualization (MTV) を使用して、次の移行元プロバイダーから OpenShift Virtualization 移行先プロバイダーに仮想マシンを移行できます。
- VMware vSphere
- Red Hat Virtualization (RHV)
- OpenStack
- VMware vSphere によって作成された Open Virtual Appliances (OVA)
- リモートの OpenShift Virtualization クラスター
関連情報
1.1. コールド移行とウォーム移行
MTV は、以下からのコールド移行をサポートしています。
- VMware vSphere
- Red Hat Virtualization (RHV)
- OpenStack
- リモートの OpenShift Virtualization クラスター
MTV は、VMware vSphere および RHV からのウォーム移行をサポートします。
1.1.1. コールド移行
コールド移行は、デフォルトの移行タイプです。ソース仮想マシンは、データのコピー中にシャットダウンします。
1.1.2. ウォーム移行
ほとんどのデータは、ソース仮想マシン (VM) の実行中にプレコピー段階でコピーされます。
次に、仮想マシンがシャットダウンされ、残りのデータはカットオーバー段階でコピーされます。
プレコピー段階
仮想マシンはプレコピー段階ではシャットダウンされません。
仮想マシンディスクは、変更ブロックのトラッキング (CBT) スナップショットを使用して増分がコピーされます。スナップショットは、デフォルトでは 1 時間間隔で作成されます。forklift-controller
デプロイメントを更新して、スナップショットの間隔を変更できます。
各ソース仮想マシンおよび各仮想マシンディスクに対して CBT を有効にする必要があります。
仮想マシンは、最大 28 CBT スナップショットをサポートします。ソース仮想マシンの CBT スナップショットが多すぎて、Migration Controller
サービスが新規スナップショットを作成できない場合は、ウォーム移行に失敗する可能性があります。スナップショットが不要になると、Migration Controller
サービスは各スナップショットを削除します。
プレコピー段階は、カットオーバー段階を手動で開始するか、開始がスケジュールされるまで実行されます。
カットオーバー段階
カットオーバーの段階で仮想マシンはシャットダウンされ、残りのデータは移行されます。RAM に格納されたデータは移行されません。
MTV コンソールを使用してカットオーバー段階を手動で開始するか、Migration
マニフェストでカットオーバー時間をスケジュールできます。
第2章 前提条件
以下の前提条件を確認し、環境が移行用に準備されていることを確認します。
2.1. ソフトウェア要件
互換性のあるバージョン の Red Hat OpenShift および OpenShift Virtualization をインストールする必要があります。
2.2. ストレージのサポートとデフォルトモード
MTV は、サポートされているストレージに以下のデフォルトのボリュームおよびアクセスモードを使用します。
プロビジョナー | ボリュームモード | アクセスモード |
---|---|---|
kubernetes.io/aws-ebs | Block | ReadWriteOnce |
kubernetes.io/azure-disk | Block | ReadWriteOnce |
kubernetes.io/azure-file | ファイルシステム | ReadWriteMany |
kubernetes.io/cinder | Block | ReadWriteOnce |
kubernetes.io/gce-pd | Block | ReadWriteOnce |
kubernetes.io/hostpath-provisioner | ファイルシステム | ReadWriteOnce |
manila.csi.openstack.org | ファイルシステム | ReadWriteMany |
openshift-storage.cephfs.csi.ceph.com | ファイルシステム | ReadWriteMany |
openshift-storage.rbd.csi.ceph.com | Block | ReadWriteOnce |
kubernetes.io/rbd | Block | ReadWriteOnce |
kubernetes.io/vsphere-volume | Block | ReadWriteOnce |
OpenShift Virtualization ストレージが 動的プロビジョニング に対応していない場合は、以下の設定を適用する必要があります。
Filesystem
のボリュームモードFilesystem
ボリュームモードは、Block
ボリュームモードよりも遅くなります。ReadWriteOnce
アクセスモードReadWriteOnce
アクセスモードは、仮想マシンのライブマイグレーションをサポートしません。
ストレージプロファイルの編集に関する詳細は、静的にプロビジョニングされたストレージクラスの有効化 を参照してください。
移行で、EXT4 ファイルシステムで作成されたブロックストレージおよび永続ボリュームを使用する場合は、CDI のファイルシステムのオーバーヘッドを 10% 以上に増やします。CDI が想定するデフォルトのオーバーヘッドには、root パーティション用に予約された場所が完全に含まれていません。CDI のファイルシステムオーバーヘッドをこの量だけ増やさないと、移行が失敗する可能性があります。
OpenStack から移行する場合、または RHV から MTV がデプロイされている OCP クラスターへのコールド移行を実行する場合、移行では CDI なしで永続ボリュームが割り当てられます。このような場合は、ファイルシステムのオーバーヘッドの調整が必要になる場合があります。
設定されたファイルシステムのオーバーヘッド (デフォルト値は 10%) が低すぎる場合、スペース不足によりディスク転送は失敗します。このような場合は、ファイルシステムのオーバーヘッドを増やす必要があります。
ただし、場合によっては、ファイルシステムのオーバーヘッドを減らしてストレージの消費量を削減したい場合があります。
MTV Operator の設定 で説明されているように、forklift-controller
CR の spec
部分にある controller_filesystem_overhead
の値を変更することで、ファイルシステムのオーバーヘッドを変更できます。
2.3. ネットワークの前提条件
すべての移行に、以下の前提条件が適用されます。
- IP アドレス、VLAN、およびその他のネットワーク設定が、移行前または移行中に変更されていない。仮想マシンの MAC アドレスは移行時に保持されます。
- 移行元環境、OpenShift Virtualization クラスター、およびレプリケーションリポジトリー間のネットワーク接続が、信頼でき中断されない。
- 複数の移行元および移行先ネットワークをマッピングする場合は、追加の移行先ネットワークごとに ネットワークアタッチメント定義 が作成されている。
2.3.1. ポート
ファイアウォールは、以下のポートでトラフィックを有効にする必要があります。
ポート | プロトコル | 送信元 | 送信先 | 目的 |
---|---|---|---|---|
443 | TCP | OpenShift ノード | VMware vCenter | VMware プロバイダーインベントリー ディスク転送の認証 |
443 | TCP | OpenShift ノード | VMware ESXi ホスト | ディスク転送の認証 |
902 | TCP | OpenShift ノード | VMware ESXi ホスト | ディスク転送データのコピー |
ポート | プロトコル | 送信元 | 送信先 | 目的 |
---|---|---|---|---|
443 | TCP | OpenShift ノード | RHV エンジン | RHV プロバイダーインベントリー ディスク転送の認証 |
443 | TCP | OpenShift ノード | RHV ホスト | ディスク転送の認証 |
54322 | TCP | OpenShift ノード | RHV ホスト | ディスク転送データのコピー |
2.4. ソース仮想マシンの前提条件
すべての移行に、以下の前提条件が適用されます。
- ISO/CDROM ディスクをアンマウントしている。
- 各 NIC に、IPv4 アドレスおよび IPv6 アドレスが 1 つずつ、またはいずれか一方が 1 つ含まれている。
- 仮想マシンオペレーティングシステムは、OpenShift Virtualization でゲストオペレーティングシステム として使用するために、認定およびサポートされている。
-
仮想マシン名には、小文字 (
a-z
)、数字 (0-9
)、またはハイフン (-
) のみが含まれ、最大 253 文字である。最初と最後の文字は英数字にする必要があります。この名前には、大文字、スペース、ピリオド (.
)、または特殊文字を使用できません。 仮想マシン名が、OpenShift Virtualization 環境の仮想マシンの名前と重複していない。
注記Migration Toolkit for Virtualization は、ルールに準拠していない仮想マシンに新しい名前を自動的に割り当てます。
Migration Toolkit for Virtualization は、新しい仮想マシン名を自動的に生成するときに、次の変更を行います。
- 除外された文字を削除する。
- 大文字を小文字に切り替える。
-
アンダースコア (
_
) をダッシュ (-
) に変更する。
この機能により、ルールに準拠していない仮想マシン名を入力した場合でも、移行をスムーズに進めることができます。
2.5. Red Hat Virtualization の前提条件
Red Hat Virtualization の移行には、以下の前提条件が適用されます。
-
移行元プロバイダーを作成するには、少なくとも
UserRole
およびReadOnlyAdmin
ロールを持っている必要があります。これらは最低限必要な権限ですが、その他の管理者権限またはスーパーユーザー権限でも作成できます。
移行元プロバイダーの仮想マシンが移行されるまで、UserRole
ロールおよび ReadOnlyAdmin
ロールを保持する必要があります。そうでない場合、移行に失敗します。
仮想マシンを移行するには:
以下のいずれかが必要である。
- RHV の管理者権限。これらのパーミッションにより、システム内の仮想マシンを移行できます。
-
移行するすべての仮想マシンの
DiskCreator
およびUserVmManager
権限。
- 互換性のあるバージョン の Red Hat Virtualization を使用する。
サードパーティーの証明書に置き換えられていない限り、Manager CA 証明書を用意する。Manager CA 証明書を用意した場合は、Manager Apache CA 証明書を指定する。
ブラウザーで https://<engine_host>/ovirt-engine/services/pki-resource?resource=ca-certificate&format=X509-PEM-CA に移動して、Manager CA 証明書を取得できます。
- ダイレクト LUN ディスクを使用して仮想マシンを移行する場合は、仮想マシン実行先の OpenShift Virtualization クラスター内のノードがバックエンドストレージにアクセスできることを確認してください。
- 移行元プロバイダーから移行先プロバイダーに コピーされる ディスクイメージとは異なり、LUN は移行元プロバイダーの仮想マシンから 切り離され ますが、削除 されず、ターゲットプロバイダーで作成された仮想マシン (VM) にアタッチされます。
- 移行元プロバイダーへのフォールバックが必要な場合に備えて、移行中に LUN は移行元プロバイダーから削除されません。ただし、LUN を移行元プロバイダーの仮想マシンに再接続する前に、LUN がターゲット環境上の仮想マシンによって同時に使用されていないことを確認してください。同時に使用されていると、データの破損が発生する可能性があります。
2.6. OpenStack の前提条件
OpenStack の移行には、次の前提条件が適用されます。
- 互換性のあるバージョン の OpenStack を使用している。
2.6.1. OpenStack 移行元プロバイダーを使用した移行のための追加の認証方法
MTV バージョン 2.6 以降では、標準のユーザー名とパスワードの認証情報セットに加えて、OpenStack 移行元プロバイダーを使用した移行のための次の認証方法がサポートされています。
- トークン認証
- アプリケーション認証情報の認証
これらの方法を使用すると、Secret
マニフェストの準備方法を除いて、他の仮想マシンを移行するのと同じ方法で CLI を使用して OpenStack 移行元プロバイダーを持つ仮想マシンを移行できます。
2.6.1.1. OpenStack 移行元プロバイダーでのトークン認証の使用
OpenStack 移行元プロバイダーの作成時に、ユーザー名とパスワード認証の代わりにトークン認証を使用できます。
MTV は、次の両方のタイプのトークン認証をサポートしています。
- ユーザー ID のトークン
- ユーザー名が含まれるトークン
トークン認証のタイプごとに、OpenStack からのデータを使用して Secret
マニフェストを作成する必要があります。
前提条件
OpenStack アカウントがある。
手順
- OpenStack Web コンソールの Dashboard で、Project > API Access をクリックします。
Download OpenStack RC file を展開し、OpenStack RC file をクリックします。
ダウンロードされるファイル (ここでは
<openstack_rc_file>
と呼びます) には、トークン認証に使用される次のフィールドが含まれています。OS_AUTH_URL OS_PROJECT_ID OS_PROJECT_NAME OS_DOMAIN_NAME OS_USERNAME
Copy to clipboardCopiedOS_AUTH_URL OS_PROJECT_ID OS_PROJECT_NAME OS_DOMAIN_NAME OS_USERNAME
トークン認証に必要なデータを取得するには、次のコマンドを実行します。
openstack token issue
Copy to clipboardCopied$ openstack token issue
ここでは
<openstack_token_output>
と呼ばれる出力には、ユーザー ID のトークンを使用した認証に必要なtoken
、userID
、およびprojectID
が含まれています。以下のような
Secret
マニフェストを作成します。ユーザー ID のトークンを使用した認証の場合:
cat << EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: openstack-secret-tokenid namespace: openshift-mtv labels: createdForProviderType: openstack type: Opaque stringData: authType: token token: <token_from_openstack_token_output> projectID: <projectID_from_openstack_token_output> userID: <userID_from_openstack_token_output> url: <OS_AUTH_URL_from_openstack_rc_file> EOF
Copy to clipboardCopiedcat << EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: openstack-secret-tokenid namespace: openshift-mtv labels: createdForProviderType: openstack type: Opaque stringData: authType: token token: <token_from_openstack_token_output> projectID: <projectID_from_openstack_token_output> userID: <userID_from_openstack_token_output> url: <OS_AUTH_URL_from_openstack_rc_file> EOF
ユーザー名でトークンを使用した認証の場合:
cat << EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: openstack-secret-tokenname namespace: openshift-mtv labels: createdForProviderType: openstack type: Opaque stringData: authType: token token: <token_from_openstack_token_output> domainName: <OS_DOMAIN_NAME_from_openstack_rc_file> projectName: <OS_PROJECT_NAME_from_openstack_rc_file> username: <OS_USERNAME_from_openstack_rc_file> url: <OS_AUTH_URL_from_openstack_rc_file> EOF
Copy to clipboardCopiedcat << EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: openstack-secret-tokenname namespace: openshift-mtv labels: createdForProviderType: openstack type: Opaque stringData: authType: token token: <token_from_openstack_token_output> domainName: <OS_DOMAIN_NAME_from_openstack_rc_file> projectName: <OS_PROJECT_NAME_from_openstack_rc_file> username: <OS_USERNAME_from_openstack_rc_file> url: <OS_AUTH_URL_from_openstack_rc_file> EOF
-
仮想マシンの移行 の手順のステップ 2 「移行元プロバイダーの
Provider
マニフェストを作成する」から始めて、仮想マシンの移行を続けます。
2.6.1.2. OpenStack 移行元プロバイダーでのアプリケーション認証情報の認証の使用
OpenStack 移行元プロバイダーの作成時に、ユーザー名とパスワード認証の代わりにアプリケーション認証情報の認証を使用できます。
MTV は、次のアプリケーション認証情報の認証をサポートします。
- アプリケーション認証情報 ID
- アプリケーション認証情報名
アプリケーション認証情報の認証のタイプごとに、OpenStack からのデータを使用して Secret
マニフェストを作成する必要があります。
前提条件
OpenStack アカウントがある。
手順
- OpenStack Web コンソールの Dashboard で、Project > API Access をクリックします。
Download OpenStack RC file を展開し、OpenStack RC file をクリックします。
ダウンロードするファイル (ここでは
<openstack_rc_file>
と呼びます) には、アプリケーション認証情報の認証に使用される次のフィールドが含まれています。OS_AUTH_URL OS_PROJECT_ID OS_PROJECT_NAME OS_DOMAIN_NAME OS_USERNAME
Copy to clipboardCopiedOS_AUTH_URL OS_PROJECT_ID OS_PROJECT_NAME OS_DOMAIN_NAME OS_USERNAME
アプリケーション認証情報の認証に必要なデータを取得するには、以下のコマンドを実行します。
openstack application credential create --role member --role reader --secret redhat forklift
Copy to clipboardCopied$ openstack application credential create --role member --role reader --secret redhat forklift
ここでは
<openstack_credential_output>
と呼ばれる出力には、次のものが含まれます。-
アプリケーション認証情報 ID を使用した認証に必要な
ID
とsecret
-
アプリケーション認証情報名を使用した認証に必要な
name
とsecret
-
アプリケーション認証情報 ID を使用した認証に必要な
以下のような
Secret
マニフェストを作成します。アプリケーション認証情報 ID を使用した認証の場合:
cat << EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: openstack-secret-appid namespace: openshift-mtv labels: createdForProviderType: openstack type: Opaque stringData: authType: applicationcredential applicationCredentialID: <id_from_openstack_credential_output> applicationCredentialSecret: <secret_from_openstack_credential_output> url: <OS_AUTH_URL_from_openstack_rc_file> EOF
Copy to clipboardCopiedcat << EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: openstack-secret-appid namespace: openshift-mtv labels: createdForProviderType: openstack type: Opaque stringData: authType: applicationcredential applicationCredentialID: <id_from_openstack_credential_output> applicationCredentialSecret: <secret_from_openstack_credential_output> url: <OS_AUTH_URL_from_openstack_rc_file> EOF
アプリケーション認証情報名を使用した認証の場合:
cat << EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: openstack-secret-appname namespace: openshift-mtv labels: createdForProviderType: openstack type: Opaque stringData: authType: applicationcredential applicationCredentialName: <name_from_openstack_credential_output> applicationCredentialSecret: <secret_from_openstack_credential_output> domainName: <OS_DOMAIN_NAME_from_openstack_rc_file> username: <OS_USERNAME_from_openstack_rc_file> url: <OS_AUTH_URL_from_openstack_rc_file> EOF
Copy to clipboardCopiedcat << EOF | oc apply -f - apiVersion: v1 kind: Secret metadata: name: openstack-secret-appname namespace: openshift-mtv labels: createdForProviderType: openstack type: Opaque stringData: authType: applicationcredential applicationCredentialName: <name_from_openstack_credential_output> applicationCredentialSecret: <secret_from_openstack_credential_output> domainName: <OS_DOMAIN_NAME_from_openstack_rc_file> username: <OS_USERNAME_from_openstack_rc_file> url: <OS_AUTH_URL_from_openstack_rc_file> EOF
-
仮想マシンの移行 の手順のステップ 2 「移行元プロバイダーの
Provider
マニフェストを作成する」から始めて、仮想マシンの移行を続けます。
2.7. VMware の前提条件
移行を加速するために、VDDK イメージの作成が強く推奨されます。詳細は、VDDK イメージの作成 を参照してください。
VMware の移行には、以下の前提条件が適用されます。
- 互換性のあるバージョン の VMware vSphere を使用している。
- 少なくとも最小限の VMware 権限 を持つユーザーとしてログインしている。
- 移行前のフックを使用して仮想マシンにアクセスするには、VMware Tools をソース仮想マシンにインストールする必要があります。
-
仮想マシンオペレーティングシステムが、OpenShift Virtualization のゲストオペレーティングシステム としての使用 および
virt-v2v
での KVM への変換 に対して認定およびサポートされている。 - ウォーム移行を実行している場合は、仮想マシンおよび仮想マシンディスクで 変更ブロックのトラッキング (CBT) を有効にしている。
- 同じ移行計画の ESXi ホストから 10 台を超える仮想マシンを移行する場合は、ホストの NFC サービスメモリーを増やしている。
- Migration Toolkit for Virtualization (MTV) は休止状態の仮想マシンの移行をサポートしていないため、休止状態を無効にすることを強く推奨する。
停電が発生した場合、休止状態が無効になっている仮想マシンのデータが失われる可能性があります。ただし、ハイバネーションが無効になっていない場合は移行に失敗します。
MTV も OpenShift Virtualization も、VMWare から仮想マシンを移行するための Btrfs の変換をサポートしていません。
VMware 権限
Migration Toolkit for Virtualization (MTV) を使用して仮想マシンを OpenShift Virtualization に移行するには、次の最小限の VMware 権限のセットが必要です。
特権 | 説明 |
---|---|
| |
| 電源がオンになっている仮想マシンの電源をオフにできます。この操作により、ゲストオペレーティングシステムの電源がオフになります。 |
| 電源がオフになっている仮想マシンの電源をオンにし、中断している仮想マシンを再開できます。 |
| VMware VIX API による仮想マシンの管理を可能にします。 |
注記
すべての | |
| ランダムな読み取りおよび書き込みアクセスのために仮想マシンでディスクを開くことができます。主にリモートディスクマウントに使用されます。 |
| VMX、ディスク、ログ、NVRAM など、仮想マシンに関連付けられたファイルの操作を許可します。 |
| ランダムな読み取りアクセスのために仮想マシンでディスクを開くことができます。主にリモートディスクマウントに使用されます。 |
| VMX、ディスク、ログ、NVRAM など、仮想マシンに関連付けられたファイルの読み取り操作を許可します。 |
| VMX、ディスク、ログ、NVRAM など、仮想マシンに関連付けられたファイルの書き込み操作を許可します。 |
| テンプレートのクローンを作成できます。 |
| 既存の仮想マシンのクローン作成とリソースの割り当てを許可します。 |
| 仮想マシンから新しいテンプレートを作成できます。 |
| 仮想マシンを移行せずに、仮想マシンのゲストオペレーティングシステムをカスタマイズできます。 |
| テンプレートからの仮想マシンのデプロイメントを許可します。 |
| 既存の電源がオフになっている仮想マシンをテンプレートとしてマークできます。 |
| 既存のテンプレートを仮想マシンとしてマークできます。 |
| カスタマイズ仕様の作成、変更、または削除を許可します。 |
| 仮想マシンのディスクでのプロモート操作を許可します。 |
| カスタマイズ仕様の読み取りを許可します。 |
| |
| 仮想マシンの現在の状態からスナップショットを作成できます。 |
| スナップショット履歴からスナップショットを削除できます。 |
| |
| データストアの内容を探索できます。 |
| データストア内で低レベルのファイル操作 (読み取り、書き込み、削除、および名前変更) を実行できます。 |
| |
| セッションの有効性の検証を可能にします。 |
| |
| 暗号化された仮想マシンの復号化を許可します。 |
| 暗号化されたリソースへのアクセスを許可します。 |
2.7.1. VDDK イメージの作成
Migration Toolkit for Virtualization (MTV) は、VMware Virtual Disk Development Kit (VDDK) SDK を使用して、VMware vSphere からの仮想ディスクの転送を高速化します。
オプションではありますが、VDDK イメージを作成することを強く推奨します。
この機能を利用するには、VMware Virtual Disk Development Kit (VDDK) をダウンロードし、VDDK イメージをビルドして、VDDK イメージをイメージレジストリーにプッシュします。
VDDK パッケージにはシンボリックリンクが含まれているため、VDDK イメージの作成手順は、シンボリックリンク (symlink) を保持するファイルシステム上で実行する必要があります。
VDDK イメージをパブリックレジストリーに保存すると、VMware ライセンスの条項に違反する可能性があります。
前提条件
- Red Hat OpenShift イメージレジストリー
-
podman
がインストールされている。 - シンボリックリンク (symlink) を保存するファイルシステム上で作業している。
- 外部レジストリーを使用している場合、OpenShift Virtualization がこれにアクセスできる。
手順
一時ディレクトリーを作成し、これに移動します。
mkdir /tmp/<dir_name> && cd /tmp/<dir_name>
Copy to clipboardCopied$ mkdir /tmp/<dir_name> && cd /tmp/<dir_name>
- ブラウザーで、VMware VDDK バージョン 8 ダウンロードページ に移動します。
- バージョン 8.0.1 を選択し、Download をクリックします。
OpenShift Virtualization 4.12 に移行するには、VMware VDDK バージョン 7 ダウンロードページ から VDDK バージョン 7.0.3.2 をダウンロードします。
- VDDK アーカイブファイルを一時ディレクトリーに保存します。
VDDK アーカイブをデプロイメントします。
tar -xzf VMware-vix-disklib-<version>.x86_64.tar.gz
Copy to clipboardCopied$ tar -xzf VMware-vix-disklib-<version>.x86_64.tar.gz
Dockerfile
を作成します。cat > Dockerfile <<EOF FROM registry.access.redhat.com/ubi8/ubi-minimal USER 1001 COPY vmware-vix-disklib-distrib /vmware-vix-disklib-distrib RUN mkdir -p /opt ENTRYPOINT ["cp", "-r", "/vmware-vix-disklib-distrib", "/opt"] EOF
Copy to clipboardCopied$ cat > Dockerfile <<EOF FROM registry.access.redhat.com/ubi8/ubi-minimal USER 1001 COPY vmware-vix-disklib-distrib /vmware-vix-disklib-distrib RUN mkdir -p /opt ENTRYPOINT ["cp", "-r", "/vmware-vix-disklib-distrib", "/opt"] EOF
VDDK イメージをビルドします。
podman build . -t <registry_route_or_server_path>/vddk:<tag>
Copy to clipboardCopied$ podman build . -t <registry_route_or_server_path>/vddk:<tag>
VDDK イメージをレジストリーにプッシュします。
podman push <registry_route_or_server_path>/vddk:<tag>
Copy to clipboardCopied$ podman push <registry_route_or_server_path>/vddk:<tag>
- イメージが OpenShift Virtualization 環境からアクセスできることを確認します。
2.7.2. ESXi ホストの NFC サービスメモリーの拡張
同じ移行計画の ESXi ホストから 10 台を超える仮想マシンを移行する場合は、ホストの NFC サービスメモリーを増やしている。有効にしないと、NFC サービスメモリーの同時接続は 10 台に制限されているため、移行に失敗します。
手順
- root として ESXi ホストにログインします。
/etc/vmware/hostd/config.xml
でmaxMemory
の値を1000000000
に変更します。... <nfcsvc> <path>libnfcsvc.so</path> <enabled>true</enabled> <maxMemory>1000000000</maxMemory> <maxStreamMemory>10485760</maxStreamMemory> </nfcsvc> ...
Copy to clipboardCopied... <nfcsvc> <path>libnfcsvc.so</path> <enabled>true</enabled> <maxMemory>1000000000</maxMemory> <maxStreamMemory>10485760</maxStreamMemory> </nfcsvc> ...
hostd
を再起動します。/etc/init.d/hostd restart
Copy to clipboardCopied# /etc/init.d/hostd restart
ホストを再起動する必要はありません。
2.8. Open Virtual Appliance (OVA) の前提条件
Open Virtual Appliance (OVA) ファイルの移行には、以下の前提条件が適用されます。
- すべての OVA ファイルは、VMware vSphere によって作成されます。
VMware vSphere によって作成されたものではなくても、vSphere と互換性のある OVA ファイルの移行は成功する可能性があります。ただし、このようなファイルの移行は MTV ではサポートされていません。MTV は、VMware vSphere によって作成された OVA ファイルのみをサポートします。
OVA ファイルは、次のいずれかの構造の NFS 共有ディレクトリーの下にあるフォルダー (1 つまたは複数) に含まれています。
すべての仮想マシン情報を保持する 1 つ以上の圧縮された Open Virtualization Format (OVF) パッケージ。
各圧縮パッケージのファイル名には
.ova
拡張子が 必要です。複数の圧縮パッケージを同じフォルダーに保存できます。この構造を使用すると、MTV はルートフォルダーと第 1 レベルのサブフォルダーをスキャンして圧縮パッケージを探します。
たとえば、NFS 共有が
/nfs
の場合、/nfs
フォルダーがスキャンされます。/nfs/subfolder1
フォルダーもスキャンされます。
しかし、/nfs/subfolder1/subfolder2
はスキャンされません。展開された OVF パッケージ内。
この構造を使用すると、MTV はルートフォルダー、第 1 レベルのサブフォルダー、第 2 レベルのサブフォルダーをスキャンして展開された OVF パッケージを探します。ただし、フォルダー内に存在できる
.ovf
ファイルは 1 つだけです。そうでない場合、移行に失敗します。たとえば、NFS 共有が
/nfs
の場合、
OVF ファイル/nfs/vm.ovf
がスキャンされます。
OVF ファイル/nfs/subfolder1/vm.ovf
がスキャンされます。
OVF ファイル/nfs/subfolder1/subfolder2/vm.ovf
がスキャンされます。
しかし、OVF ファイル/nfs/subfolder1/subfolder2/subfolder3/vm.ovf
はスキャンされません。
2.9. ソフトウェア互換性ガイドライン
互換性のあるソフトウェアバージョンをインストールする必要があります。
Migration Toolkit for Virtualization | Red Hat OpenShift | OpenShift Virtualization | VMware vSphere | Red Hat Virtualization | OpenStack |
---|---|---|---|---|---|
2.6.7 | 4.14 以降 | 4.14 以降 | 6.5 以降 | 4.4 SP1 以降 | 16.1 以降 |
MTV 2.6 は、Red Hat Virtualization (RHV) 4.4 SP1 でのみテストされました。Red Hat Virtualization (RHV) 4.3 からの移行は、MTV 2.6 ではテストされていません。サポート対象外ですが、RHV 4.3 からの基本的な移行は機能するはずです。
RHV 4.3 には、MTV 用の RHV 4.4 で導入された改善が導入されておらず、新機能は RHV 4.3 ではテストされていません。そのため、RHV 4.3 からの移行は、RHV 4.4 からの移行と同じようには機能しない可能性があり、一部の機能が欠落している可能性もあります。
OpenShift Virtualization に移行する前に、RHV を上記のサポートされているバージョンにアップグレードすることが推奨されます。
ただし、RHV 4.3.11 からの移行は MTV 2.3 でテストされており、実際には MTV 2.6 を使用する多くの環境で機能する可能性があります。この場合、OpenShift Virtualization に移行する前に、Red Hat Virtualization Manager (RHVM) を前述のサポート対象バージョンにアップグレードすることが推奨されます。
2.9.1. OpenShift Operator のライフサイクル
OpenShift Container Platform で使用するために Red Hat が同梱する Operator のソフトウェアメンテナンスのライフサイクル分類の詳細は、OpenShift Operator のライフサイクル を参照してください。
第3章 MTV Operator のインストールと設定
MTV Operator は、Red Hat OpenShift Web コンソールまたはコマンドラインインターフェイス (CLI) を使用してインストールできます。
Migration Toolkit for Virtualization (MTV) バージョン 2.4 以降では、MTV Operator に Red Hat OpenShift Web コンソール用の MTV プラグインが含まれています。
Red Hat OpenShift Web コンソールまたは CLI を使用して MTV Operator をインストールした後、Operator を設定できます。
3.1. Red Hat OpenShift Web コンソールを使用した MTV Operator のインストール
MTV Operator は、Red Hat OpenShift Web コンソールを使用してインストールできます。
前提条件
- Red Hat OpenShift 4.14 以降がインストールされている。
- OpenShift 移行ターゲットクラスターに OpenShift Virtualization Operator インストールされている。
-
cluster-admin
パーミッションを持つユーザーとしてログインしている。
手順
- Red Hat OpenShift Web コンソールで、Operators → OperatorHub をクリックします。
- Filter by keyword フィールドを使用して mtv-operator を検索します。
- Migration Toolkit for Virtualization Operator をクリックしてから Install をクリックします。
- ボタンがアクティブになったら、Create ForkliftController をクリックします。
Create をクリックします。
ForkliftController が表示されるリストに表示されます。
- Workloads → Pods をクリックし、MTV Pod が実行されていることを確認します。
Operators → Installed Operators をクリックして、Migration Toolkit for Virtualization Operator が Succeeded のステータスで openshift-mtv プロジェクトに表示されることを確認します。
プラグインの準備が整ったら、ページのリロードが求められます。Migration メニュー項目は、Red Hat OpenShift Web コンソールの左側に表示されるナビゲーションバーに自動的に追加されます。
3.2. コマンドラインインターフェイスからの MTV Operator のインストール
コマンドラインインターフェイス (CLI) から MTV Operator をインストールできます。
前提条件
- Red Hat OpenShift 4.14 以降がインストールされている。
- OpenShift 移行ターゲットクラスターに OpenShift Virtualization Operator インストールされている。
-
cluster-admin
パーミッションを持つユーザーとしてログインしている。
手順
openshift-mtv プロジェクトを作成します。
cat << EOF | oc apply -f - apiVersion: project.openshift.io/v1 kind: Project metadata: name: openshift-mtv EOF
Copy to clipboardCopied$ cat << EOF | oc apply -f - apiVersion: project.openshift.io/v1 kind: Project metadata: name: openshift-mtv EOF
名前が
migration
のOperatorGroup
CR を作成します。cat << EOF | oc apply -f - apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: migration namespace: openshift-mtv spec: targetNamespaces: - openshift-mtv EOF
Copy to clipboardCopied$ cat << EOF | oc apply -f - apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: migration namespace: openshift-mtv spec: targetNamespaces: - openshift-mtv EOF
Operator の
Subscription
CR を作成します。cat << EOF | oc apply -f - apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: mtv-operator namespace: openshift-mtv spec: channel: release-v2.6 installPlanApproval: Automatic name: mtv-operator source: redhat-operators sourceNamespace: openshift-marketplace startingCSV: "mtv-operator.v2.6.7" EOF
Copy to clipboardCopied$ cat << EOF | oc apply -f - apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: mtv-operator namespace: openshift-mtv spec: channel: release-v2.6 installPlanApproval: Automatic name: mtv-operator source: redhat-operators sourceNamespace: openshift-marketplace startingCSV: "mtv-operator.v2.6.7" EOF
ForkliftController
CR を作成します。cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: ForkliftController metadata: name: forklift-controller namespace: openshift-mtv spec: olm_managed: true EOF
Copy to clipboardCopied$ cat << EOF | oc apply -f - apiVersion: forklift.konveyor.io/v1beta1 kind: ForkliftController metadata: name: forklift-controller namespace: openshift-mtv spec: olm_managed: true EOF
MTV Pod が実行していることを確認します。
oc get pods -n openshift-mtv
Copy to clipboardCopied$ oc get pods -n openshift-mtv
出力例
NAME READY STATUS RESTARTS AGE forklift-api-bb45b8db4-cpzlg 1/1 Running 0 6m34s forklift-controller-7649db6845-zd25p 2/2 Running 0 6m38s forklift-must-gather-api-78fb4bcdf6-h2r4m 1/1 Running 0 6m28s forklift-operator-59c87cfbdc-pmkfc 1/1 Running 0 28m forklift-ui-plugin-5c5564f6d6-zpd85 1/1 Running 0 6m24s forklift-validation-7d84c74c6f-fj9xg 1/1 Running 0 6m30s forklift-volume-populator-controller-85d5cb64b6-mrlmc 1/1 Running 0 6m36s
Copy to clipboardCopiedNAME READY STATUS RESTARTS AGE forklift-api-bb45b8db4-cpzlg 1/1 Running 0 6m34s forklift-controller-7649db6845-zd25p 2/2 Running 0 6m38s forklift-must-gather-api-78fb4bcdf6-h2r4m 1/1 Running 0 6m28s forklift-operator-59c87cfbdc-pmkfc 1/1 Running 0 28m forklift-ui-plugin-5c5564f6d6-zpd85 1/1 Running 0 6m24s forklift-validation-7d84c74c6f-fj9xg 1/1 Running 0 6m30s forklift-volume-populator-controller-85d5cb64b6-mrlmc 1/1 Running 0 6m36s
3.3. MTV Operator の設定
MTV Operator の次のすべての設定は、特に指定がない限り、ForkliftController
CR を変更するか、Overview ページの Setting セクションで設定できます。
- 同時に移行できるプランごとの仮想マシン (VM) の最大数
-
must gather
レポートが自動的に削除されるまで保持される期間 - メインのコントローラーコンテナーに割り当てられる CPU 制限
- メインのコントローラーコンテナーに割り当てられるメモリー制限
- ウォーム移行を開始する前に新しいスナップショットが要求される間隔
- ウォーム移行中にスナップショットの作成または削除のステータスをチェックする頻度
-
storageclass
がfilesystem
の場合に、ファイルシステムのオーバーヘッドとして割り当てられる永続ボリューム内のスペースの割合 (ForkliftController
CR のみ)。 -
永続ブロックボリュームに割り当てられた固定量の追加スペース。この設定は、ブロックベースのすべての
storageclass
に適用されます (ForkliftController
CR のみ)。 -
vSphere 移行元プロバイダーの設定に対するオペレーティングシステムの configuration map (
ForkliftController
CR のみ)。 -
Red Hat Virtualization (RHV) 移行元プロバイダーの設定に対するオペレーティングシステムの configuration map (
ForkliftController
CR のみ)。
ユーザーインターフェイスを使用してこれらの設定を設定する手順は、MTV 設定の設定 で説明されています。ForkliftController
CR を変更してこれらの設定を指定する手順を以下に示します。
手順
-
次のようにラベルと値を追加して、
ForkliftController
CR のspec
部分のパラメーターの値を変更します。
spec: label: value 1
spec:
label: value 1
Copy to clipboardCopied- 1
- CLI を使用して設定できるラベルを、各ラベルとそのデフォルト値の説明とともに次の表に示します。
ラベル | 説明 | デフォルト値 |
---|---|---|
| 同時に移行できるプランごとの仮想マシンの最大数。 |
|
|
自動削除される前に |
|
| メインのコントローラーコンテナーに割り当てられる CPU 制限。 |
|
| メインのコントローラーコンテナーに割り当てられるメモリー制限。 |
|
| ウォームマイグレーションを開始する前に新しいスナップショットが要求される間隔 (分単位)。 |
|
| ウォームマイグレーション中にシステムがスナップショットの作成または削除のステータスをチェックする頻度 (秒単位)。 |
|
|
|
|
|
永続ブロックボリュームに割り当てられた固定量の追加スペース。この設定は、ブロックベースの
|
|
| vSphere 移行元プロバイダーの configuration map。この configuration map は、受信仮想マシンのオペレーティングシステムを OpenShift Virtualization の設定名にマッピングします。この configuration map は、MTV Operator がデプロイされている namespace に存在する必要があります。 OpenShift Virtualization 環境の設定リストを表示するには、OpenShift Web コンソールを開き、Virtualization → Preferences をクリックします。
このラベルの値がデフォルト値の
|
|
| RHV 移行元プロバイダーの configuration map。この configuration map は、受信仮想マシンのオペレーティングシステムを OpenShift Virtualization の設定名にマッピングします。この configuration map は、MTV Operator がデプロイされている namespace に存在する必要があります。 OpenShift Virtualization 環境の設定リストを表示するには、OpenShift Web コンソールを開き、Virtualization → Preferences をクリックします。
このラベルの値がデフォルト値の
|
|
第4章 Red Hat OpenShift Web コンソールを使用した仮想マシンの移行
Red Hat OpenShift Web コンソールを使用して仮想マシン (VM) を移行すると、次のことが可能になります。
すべての 前提条件 を満たしていることを確認する必要があります。
VMware のみ: 最小限の VMware の権限 セットが必要です。
VMware のみ: VMware 仮想ディスク開発キット (VDDK) イメージを作成すると、移行速度が向上します。
4.1. MTV ユーザーインターフェイス
Migration Toolkit for Virtualization (MTV) ユーザーインターフェイスは OpenShift Web コンソールに統合されています。
左側のパネルでは、移行の進行状況のコンポーネントに関連するページ (例: 移行のプロバイダー) を選択できます。また、管理者の場合は、Overview を選択することもできます。このページには、移行に関する情報が含まれており、MTV の設定を行うことができます。
図4.1 MTV 拡張インターフェイス

コンポーネントに関連するページでは、ページの左上にある プロジェクト 一覧をクリックし、作業が許可されているプロジェクト (namespace) を確認できます。
- 管理者の場合は、すべてのプロジェクトを表示できます。
- 管理者以外は、作業権限を持つプロジェクトのみが表示されます。
4.2. MTV の概要ページ
Migration Toolkit for Virtualization (MTV) Overview ページには、移行に関するシステム全体の情報と、変更できる Settings の一覧が表示されます。
管理者権限がある場合は、Red Hat OpenShift Web コンソールで Migration → Overview をクリックして Overview ページにアクセスできます。
Overview ページには 3 つのタブがあります。
- 概要
- YAML
- メトリクス
4.2.1. Overview タブ
Overview タブでは、以下を確認できます。
- Operator: MTV Operator がデプロイされている namespace と Operator のステータス。
- Pod: MTV Operator によってデプロイされた各 Pod の名前、ステータス、作成時間。
条件: MTV Operator のステータス:
-
Failure: 前回の失敗。
False
は、デプロイメントしてから障害が発生していないことを示します。 - Running: Operator が現在実行中で、次の調整を待機しているかどうか。
- Successful: 最後に成功した調整。
-
Failure: 前回の失敗。
4.2.2. YAML タブ
MTV Operator の操作を定義するカスタムリソース ForkliftController。このタブからカスタムリソースを変更できます。
4.2.3. Metrics タブ
Metrics タブを使用すると、以下を確認できます。
移行: MTV を使用して実行された移行の数:
- Total
- Running
- Failed
- Succeeded
- Canceled
仮想マシンの移行: MTV を使用して移行された仮想マシンの数:
- Total
- Running
- Failed
- Succeeded
- Canceled
1 回の移行に多数の仮想マシンが関係する可能性があるため、MTV を使用して実行される移行の数は、MTV を使用して移行された仮想マシンの数とは大幅に異なる可能性があります。
- 過去 7 日間に MTV を使用して実行された移行の実行中、失敗、成功した移行の数を示すグラフ
- 過去 7 日間に MTV を使用して実行された仮想マシン移行の実行中、失敗、成功した数を示すグラフ
4.3. MTV の設定
管理者権限がある場合は、Overview ページにアクセスし、そのページで以下の設定を変更できます。
設定 | 説明 | デフォルト値 |
---|---|---|
Max concurrent virtual machine migrations | 同時に移行できるプランごとの仮想マシンの最大数 | 20 |
Must gather cleanup after (hours) |
自動削除される前に | Disabled |
Controller main container CPU limit | メインのコントローラーコンテナーに割り当てられる CPU 制限 | 500 m |
Controller main container Memory limit | メインのコントローラーコンテナーに割り当てられるメモリー制限 | 800 Mi |
Precopy internal (minutes) | ウォーム移行を開始する前に新しいスナップショットが要求される間隔 | 60 |
Snapshot polling interval (seconds) | ウォーム移行中にスナップショットの作成または削除のステータスをチェックする頻度 | 10 |
手順
- Red Hat OpenShift Web コンソールで、Migration → Overview をクリックします。Settings リストはページの右側にあります。
- Settings リストで、変更する設定の Edit アイコンをクリックします。
- リストから設定を選択します。
- Save をクリックします。
4.4. プロバイダーの追加
Red Hat OpenShift Web コンソールを使用して、仮想マシン移行の移行元プロバイダーとターゲットプロバイダーを追加できます。
4.4.1. 移行元プロバイダーの追加
MTV を使用して、以下の移行元プロバイダーから仮想マシンを移行できます。
- VMware vSphere
- Red Hat Virtualization
- OpenStack
- VMware vSphere によって作成された Open Virtual Appliances (OVA)
- OpenShift Virtualization
Red Hat OpenShift の Web コンソールを使用して移行元プロバイダーを追加できます。
4.4.1.1. VMware vSphere 移行元プロバイダーの追加
VMware vSphere 仮想マシンは、VMware vCenter または VMWare ESX/ESXi サーバーから移行できます。MTV バージョン 2.6 以降では、SDK エンドポイントを ESX/ESXi サーバーのエンドポイントに指定することで、vCenter を経由せずに ESX/ESXi サーバーから直接移行できます。
Migration Toolkit for Virtualization でサポートされているが 2023 FIPS 要件に準拠していない vSphere のバージョンから移行をできるように、VMware vSphere 移行元プロバイダーを使用した移行では EMS 強制が無効になっています。したがって、vSphere 移行元プロバイダーからの移行が FIPS に準拠されなくなるリスクを考慮する必要があります。サポートされているバージョンの vSphere は、ソフトウェア互換性ガイドライン に記載されています。
前提条件
- すべてのクラスターがアクセスできるセキュアなレジストリーに VMware Virtual Disk Development Kit (VDDK) イメージを作成することを強く推奨します。VDDK イメージを使用すると、移行の時間が短縮されます。詳細は、VDDK イメージの作成 を参照してください。
手順
- Red Hat OpenShift Web コンソールで、Migration → Providers for virtualization をクリックします。
- Create Provider をクリックします。
- vSphere をクリックします。
- 次のフィールドを指定します。
Provider Details
- Provider resource name: 移行元プロバイダーの名前。
- Endpoint type: vSphere プロバイダーエンドポイントタイプを選択します。オプション: vCenter または ESXi。仮想マシンは、vCenter、vCenter によって管理されていない ESX/ESXi サーバー、または vCenter によって管理されているが vCenter を経由しない ESX/ESXi サーバーから移行できます。
-
URL: ソース仮想マシンがマウントされている vCenter の SDK エンドポイントの URL。URL に
sdk
パス (通常は/sdk
) が含まれていることを確認してください。たとえば、https://vCenter-host-example.com/sdk
です。FQDN の証明書が指定されている場合、このフィールドの値は証明書内の FQDN と一致する必要があります。 -
VDDK init image:
VDDKInitImage
パス。移行を加速するために、VDDK init イメージの作成が強く推奨されます。詳細は、VDDK イメージの作成 を参照してください。
Provider details
-
Username: vCenter ユーザーまたは ESXi ユーザー。たとえば、
user@vsphere.local
です。 Password: vCenter ユーザーパスワードまたは ESXi ユーザーパスワード。
CA 証明書を検証するには、以下のいずれかのオプションを選択します。
- Use a custom CA certificate: カスタム CA 証明書を検証した後に移行します。
- Use the system CA certificate: システム CA 証明書を検証した後に移行します。
Skip certificate validation: CA 証明書を検証せずに移行します。
- カスタム CA 証明書を使用するには、Skip certificate validation スイッチを左に切り替えた状態にし、CA 証明書をテキストボックスにドラッグするか、または それを参照して Select をクリックするかの いずれか を行います。
- システム CA 証明書を使用するには、Skip certificate validation スイッチを左に切り替えた状態にし、CA certificate のテキストボックスを空のままにします。
- 証明書の検証を省略するには、Skip certificate validation スイッチを右に切り替えます。
オプション: プロバイダーの API エンドポイント URL からカスタム CA 証明書を取得するように MTV に依頼します。
- Fetch certificate from URL をクリックします。Verify certificate ウィンドウが開きます。
詳細が正しい場合は、I trust the authenticity of this certificate チェックボックスを選択し、Confirm をクリックします。そうでない場合は、Cancel をクリックし、正しい証明書情報を手動で入力します。
確認後、CA 証明書は、API エンドポイントとの後続の通信を検証するために使用されます。
プロバイダーを追加して保存するには、プロバイダーの作成 をクリックします。
プロバイダーがプロバイダーのリストに表示されます。
注記プロバイダーのステータスが
Ready
になるまでには数分かかる場合があります。
4.4.1.1.1. VMware 移行元プロバイダーの移行ネットワークの選択
Red Hat OpenShift Web コンソールで移行元プロバイダーの移行ネットワークを選択して、移行元環境のリスクを軽減し、パフォーマンスを向上できます。
移行に管理ネットワークを使用すると、ネットワークに十分な帯域幅がないためにパフォーマンスが低下する可能性があります。この状況は、ディスク転送操作がネットワークを飽和状態にし、移行元プラットフォームに悪影響を及ぼす可能性があります。
vSphere の Network File Copy (NFC) サービスを使用して、ホストからディスクを転送するネットワークを制御することもできます。
前提条件
- 移行ネットワークにディスク転送に十分なスループット (最低速度は 10 Gbps) がある。
デフォルトゲートウェイを使用して、OpenShift Virtualization ノードから移行ネットワークにアクセスできる。
注記ソースの仮想ディスクは、ターゲット namespace の Pod ネットワークに接続されている Pod によってコピーされます。
- 移行ネットワークで、ジャンボフレームを有効にしている。
手順
- Red Hat OpenShift Web コンソールで、Migration → Providers for virtualization をクリックします。
- プロバイダーの横にある Hosts 列のホスト番号をクリックし、ホストのリストを表示します。
- 1 つまたは複数のホストを選択し、Select migration network をクリックします。
次のフィールドを指定します。
- Network: ネットワーク名
-
ESXi host admin username: 例:
root
- ESXi host admin password: パスワード
- Save をクリックします。
各ホストのステータスが Ready であることを確認します。
ホストのステータスが Ready でない場合、移行ネットワーク上でホストに到達できないか、クレデンシャルが正しくない可能性があります。ホスト設定を変更して、変更を保存できます。
4.4.1.2. Red Hat Virtualization 移行元プロバイダーの追加
Red Hat OpenShift の Web コンソールを使用して、Red Hat Virtualization 移行元プロバイダーを追加できます。
前提条件
- マネージャーの CA 証明書 (サードパーティーの証明書に置き換えられた場合を除く)。その場合は、マネージャーの Apache CA 証明書を指定します。
手順
- Red Hat OpenShift Web コンソールで、Migration → Providers for virtualization をクリックします。
- Create Provider をクリックします。
- Red Hat Virtualization をクリックします。
次のフィールドを指定します。
- Provider resource name: 移行元プロバイダーの名前。
-
URL: ソース仮想マシンがマウントされている Red Hat Virtualization Manager (RHVM) の API エンドポイントの URL。URL に、RHVM API サーバーへのパス (通常は
/ovirt-engine/api)
が含まれていることを確認してください。たとえば、https://rhv-host-example.com/ovirt-engine/api
です。 - Username: ユーザー名。
- Password: パスワード。
CA 証明書を検証するには、以下のいずれかのオプションを選択します。
- Use a custom CA certificate: カスタム CA 証明書を検証した後に移行します。
- Use the system CA certificate: システム CA 証明書を検証した後に移行します。
Skip certificate validation: CA 証明書を検証せずに移行します。
- カスタム CA 証明書を使用するには、Skip certificate validation スイッチを左に切り替えた状態にし、CA 証明書をテキストボックスにドラッグするか、または それを参照して Select をクリックするかの いずれか を行います。
- システム CA 証明書を使用するには、Skip certificate validation スイッチを左に切り替えた状態にし、CA certificate のテキストボックスを空のままにします。
- 証明書の検証を省略するには、Skip certificate validation スイッチを右に切り替えます。
オプション: プロバイダーの API エンドポイント URL からカスタム CA 証明書を取得するように MTV に依頼します。
- Fetch certificate from URL をクリックします。Verify certificate ウィンドウが開きます。
詳細が正しい場合は、I trust the authenticity of this certificate チェックボックスを選択し、Confirm をクリックします。そうでない場合は、Cancel をクリックし、正しい証明書情報を手動で入力します。
確認後、CA 証明書は、API エンドポイントとの後続の通信を検証するために使用されます。
プロバイダーを追加して保存するには、プロバイダーの作成 をクリックします。
プロバイダーがプロバイダーのリストに表示されます。
4.4.1.3. OpenStack 移行元プロバイダーの追加
Red Hat OpenShift の Web コンソールを使用して、OpenStack 移行元プロバイダーを追加できます。
OpenStack プロバイダーからイメージベースの仮想マシンを移行すると、ソース仮想マシンに接続されているイメージのスナップショットが作成され、スナップショットのデータがターゲット仮想マシンにコピーされます。つまり、ターゲット仮想マシンは、スナップショットが作成された時点でのソース仮想マシンと同じ状態になります。
手順
- Red Hat OpenShift Web コンソールで、Migration → Providers for virtualization をクリックします。
- Create Provider をクリックします。
- OpenStack をクリックします。
次のフィールドを指定します。
- Provider resource name: 移行元プロバイダーの名前。
-
URL: OpenStack Identity (Keystone) エンドポイントの URL。たとえば、
http://controller:5000/v3
です。 Authentication type: 次の認証方法のいずれかを選択し、選択した内容に関連する情報を入力します。たとえば、認証タイプとして Application credential ID を選択した場合は、Application credential ID と Application credential secret フィールドがアクティブになり、ID とシークレットを指定する必要があります。
Application credential ID
- Application credential ID: OpenStack アプリケーション認証情報 ID
-
Application credential secret: OpenStack https://github.com/kubev2v/forklift-documentation/pull/402pplication 認証情報の
Secret
Application credential name
- Application credential name: OpenStack アプリケーションの認証情報名
-
Application credential secret: : OpenStack アプリケーション認証情報の
Secret
- Username: OpenStack ユーザー名
- Domain: OpenStack ドメイン名
Token with user ID
- Token: OpenStack トークン
- User ID: OpenStack ユーザー ID
- Project ID: OpenStack プロジェクト ID
ユーザー名のトークン
- Token: OpenStack トークン
- Username: OpenStack ユーザー名
- Project: OpenStack プロジェクト
- Domain name: OpenStack ドメイン名
Password
- Username: OpenStack ユーザー名
- Password: OpenStack パスワード
- Project: OpenStack プロジェクト
- Domain: OpenStack ドメイン名
CA 証明書を検証するには、以下のいずれかのオプションを選択します。
- Use a custom CA certificate: カスタム CA 証明書を検証した後に移行します。
- Use the system CA certificate: システム CA 証明書を検証した後に移行します。
Skip certificate validation: CA 証明書を検証せずに移行します。
- カスタム CA 証明書を使用するには、Skip certificate validation スイッチを左に切り替えた状態にし、CA 証明書をテキストボックスにドラッグするか、または それを参照して Select をクリックするかの いずれか を行います。
- システム CA 証明書を使用するには、Skip certificate validation スイッチを左に切り替えた状態にし、CA certificate のテキストボックスを空のままにします。
- 証明書の検証を省略するには、Skip certificate validation スイッチを右に切り替えます。
オプション: プロバイダーの API エンドポイント URL からカスタム CA 証明書を取得するように MTV に依頼します。
- Fetch certificate from URL をクリックします。Verify certificate ウィンドウが開きます。
詳細が正しい場合は、I trust the authenticity of this certificate チェックボックスを選択し、Confirm をクリックします。そうでない場合は、Cancel をクリックし、正しい証明書情報を手動で入力します。
確認後、CA 証明書は、API エンドポイントとの後続の通信を検証するために使用されます。
プロバイダーを追加して保存するには、プロバイダーの作成 をクリックします。
プロバイダーがプロバイダーのリストに表示されます。
4.4.1.4. Open Virtual Appliance (OVA) 移行元プロバイダーの追加
Red Hat OpenShift Web コンソールを使用して、VMware vSphere によって作成された Open Virtual Appliance (OVA) ファイルを移行元プロバイダーとして追加できます。
手順
- Red Hat OpenShift Web コンソールで、Migration → Providers for virtualization をクリックします。
- Create Provider をクリックします。
- Open Virtual Appliance (OVA) をクリックします。
次のフィールドを指定します。
- Provider resource name: 移行元プロバイダーの名前
- URL: OVA を提供する NFS ファイル共有の URL
プロバイダーを追加して保存するには、プロバイダーの作成 をクリックします。
プロバイダーがプロバイダーのリストに表示されます。
注記エラーが発生したことを示すエラーメッセージが表示される場合があります。このメッセージは無視しても問題ありません。
4.4.1.5. Red Hat OpenShift Virtualization 移行元プロバイダーの追加
Red Hat OpenShift Virtualization プロバイダーは、移行元プロバイダーと移行先プロバイダーの両方として使用できます。
具体的には、OpenShift Virtualization プロバイダーとして自動的に追加されるホストクラスターは、移行元プロバイダーと移行先プロバイダーの両方として使用できます。
MTV がデプロイされているクラスターから別のクラスターに仮想マシンを移行したり、リモートクラスターから MTV がデプロイされたクラスターに仮想マシンを移行したりできます。
移行元プロバイダーの Red Hat OpenShift クラスターのバージョンは 4.13 以降である必要があります。
手順
- Red Hat OpenShift Web コンソールで、Migration → Providers for virtualization をクリックします。
- Create Provider をクリックします。
- OpenShift Virtualization をクリックします。
次のフィールドを指定します。
- Provider resource name: 移行元プロバイダーの名前
- URL: API サーバーのエンドポイントの URL
Service account bearer token:
cluster-admin
権限を持つサービスアカウントのトークンURL と Service account bearer token の両方を空白のままにすると、ローカルの OpenShift クラスターが使用されます。
CA 証明書を検証するには、以下のいずれかのオプションを選択します。
- Use a custom CA certificate: カスタム CA 証明書を検証した後に移行します。
- Use the system CA certificate: システム CA 証明書を検証した後に移行します。
Skip certificate validation: CA 証明書を検証せずに移行します。
- カスタム CA 証明書を使用するには、Skip certificate validation スイッチを左に切り替えた状態にし、CA 証明書をテキストボックスにドラッグするか、または それを参照して Select をクリックするかの いずれか を行います。
- システム CA 証明書を使用するには、Skip certificate validation スイッチを左に切り替えた状態にし、CA certificate のテキストボックスを空のままにします。
- 証明書の検証を省略するには、Skip certificate validation スイッチを右に切り替えます。
オプション: プロバイダーの API エンドポイント URL からカスタム CA 証明書を取得するように MTV に依頼します。
- Fetch certificate from URL をクリックします。Verify certificate ウィンドウが開きます。
詳細が正しい場合は、I trust the authenticity of this certificate チェックボックスを選択し、Confirm をクリックします。そうでない場合は、Cancel をクリックし、正しい証明書情報を手動で入力します。
確認後、CA 証明書は、API エンドポイントとの後続の通信を検証するために使用されます。
プロバイダーを追加して保存するには、プロバイダーの作成 をクリックします。
プロバイダーがプロバイダーのリストに表示されます。
4.4.2. 移行先プロバイダーの追加
Red Hat OpenShift Web コンソールを使用して、OpenShift Virtualization 移行先プロバイダーを追加できます。
4.4.2.1. OpenShift Virtualization 移行先プロバイダーの追加
Red Hat OpenShift Virtualization プロバイダーは、移行元プロバイダーと移行先プロバイダーの両方として使用できます。
具体的には、OpenShift Virtualization プロバイダーとして自動的に追加されるホストクラスターは、移行元プロバイダーと移行先プロバイダーの両方として使用できます。
MTV をインストールしたプロバイダーであるデフォルトの OpenShift Virtualization 移行先プロバイダーだけでなく、別の OpenShift Virtualization 移行先プロバイダーも Red Hat OpenShift Web コンソールに追加できます。
MTV がデプロイされているクラスターから別のクラスターに仮想マシンを移行したり、リモートクラスターから MTV がデプロイされたクラスターに仮想マシンを移行したりできます。
前提条件
-
cluster-admin
権限を持つ OpenShift Virtualization サービスアカウントトークン が必要です。
手順
- Red Hat OpenShift Web コンソールで、Migration → Providers for virtualization をクリックします。
- Create Provider をクリックします。
- OpenShift Virtualization をクリックします。
次のフィールドを指定します。
- Provider resource name: 移行元プロバイダーの名前
- URL: API サーバーのエンドポイントの URL
Service account bearer token:
cluster-admin
権限を持つサービスアカウントのトークンURL と Service account bearer token の両方を空白のままにすると、ローカルの OpenShift クラスターが使用されます。
CA 証明書を検証するには、以下のいずれかのオプションを選択します。
- Use a custom CA certificate: カスタム CA 証明書を検証した後に移行します。
- Use the system CA certificate: システム CA 証明書を検証した後に移行します。
Skip certificate validation: CA 証明書を検証せずに移行します。
- カスタム CA 証明書を使用するには、Skip certificate validation スイッチを左に切り替えた状態にし、CA 証明書をテキストボックスにドラッグするか、または それを参照して Select をクリックするかの いずれか を行います。
- システム CA 証明書を使用するには、Skip certificate validation スイッチを左に切り替えた状態にし、CA certificate のテキストボックスを空のままにします。
- 証明書の検証を省略するには、Skip certificate validation スイッチを右に切り替えます。
オプション: プロバイダーの API エンドポイント URL からカスタム CA 証明書を取得するように MTV に依頼します。
- Fetch certificate from URL をクリックします。Verify certificate ウィンドウが開きます。
詳細が正しい場合は、I trust the authenticity of this certificate チェックボックスを選択し、Confirm をクリックします。そうでない場合は、Cancel をクリックし、正しい証明書情報を手動で入力します。
確認後、CA 証明書は、API エンドポイントとの後続の通信を検証するために使用されます。
プロバイダーを追加して保存するには、プロバイダーの作成 をクリックします。
プロバイダーがプロバイダーのリストに表示されます。
4.4.2.2. OpenShift Virtualization プロバイダーの移行ネットワークの選択
Red Hat OpenShift Web コンソールで OpenShift Virtualization プロバイダーのデフォルトの移行ネットワークを選択して、パフォーマンスを向上させることができます。デフォルトの移行ネットワークは、ディスクが設定された namespace にディスクを転送するために使用されます。
移行ネットワークを選択しない場合、デフォルトの移行ネットワークは pod
ネットワークで、ディスク転送に最適ではない可能性があります。
移行計画の作成時に別のネットワークを選択して、プロバイダーのデフォルトの移行ネットワークを上書きできます。
手順
- Red Hat OpenShift Web コンソールで、Migration → Providers for virtualization をクリックします。
-
プロバイダーの右側で、オプションメニュー
から Select migration network を選択します。
- 利用可能なネットワークのリストからネットワークを選択し、Select をクリックします。
4.5. 移行計画の作成
Red Hat OpenShift Web コンソールを使用して、移行元プロバイダー、移行する仮想マシン (VM)、およびその他の計画の詳細を指定して、移行計画を作成できます。
ユーザーの便宜のために、2 つの移行計画の作成手順が用意されています。移行元プロバイダーか、特定の仮想マシンから開始します。
- 移行元プロバイダーから開始するには、移行元プロバイダーから開始する移行計画の作成 を参照してください。
- 特定の仮想マシンから開始するには、特定の仮想マシンから開始する移行計画の作成 を参照してください。
Internet Small Computer Systems Interface (iSCSI) 接続や Network File System (NFS) マウントなど、ゲストが開始したストレージ接続のある仮想マシンは MTV では処理されないため、移行前に追加の計画が必要になったり、移行後に再設定が必要になる場合があります。
これは、追加または新しく移行された仮想マシンがこのストレージにアクセスすることによって問題が発生しないようにするためです。
4.5.1. 移行元プロバイダーから移行計画を作成する
Plans for virtualization ページから、移行元プロバイダーに基づいて移行計画を作成できます。VMware または RHV プロバイダーからの移行に関する特定のオプションに注意してください。
手順
Red Hat OpenShift Web コンソールで、Plans for virtualization、Create Plan の順にクリックします。
Create migration plan ウィザードが開き、Select source provider インターフェイスが表示されます。
移行する仮想マシンの移行元プロバイダーを選択します。
Select virtual machines インターフェイスが開きます。
移行する仮想マシンを選択し、Next をクリックします。
Create migration plan ペインが開きます。移行元プロバイダーの名前と、移行先プロバイダーと namespace、ネットワークマップ、ストレージマップに関する提案が表示されます。
- Plan name を入力します。
- 編集可能な項目に必要な変更を加えます。
- 提案されたネットワークマッピングまたはストレージマッピングを編集し、1 つ以上の追加マッピングを追加するには、Add mapping をクリックします。
Create migration plan をクリックします。
MTV によって移行計画が検証されます。Plan details ページが開き、計画が使用可能かどうか、またはエラーが含まれているかどうかが示されます。プランの詳細が表示され、前のページで入力した項目を編集できます。変更を加えると、MTV によってプランが再度検証されます。
VMware 移行元プロバイダーの場合のみ (すべて任意):
Preserving static IPs of VMs: デフォルトでは、仮想ネットワークインターフェイスコントローラー (vNIC) が移行プロセス中に変更されます。その結果、vSphere で静的 IP が設定されている vNIC の IP が失われます。仮想マシンの静的 IP を保持してこれを回避するには、Preserve static IPs の横にある Edit アイコンをクリックし、開いたウィンドウで Whether to preserve the static IPs スイッチを切り替えます。次に、Save をクリックします。
その後、MTV が、vNIC プロパティーが欠落している Windows オペレーティングシステムを持つ仮想マシンに関する警告メッセージを発行します。不足している vNIC プロパティーを取得するには、vSphere で該当する仮想マシンを実行して、vNIC プロパティーが MTV に報告されるようにします。
- Entering a list of decryption passphrases for disks encrypted using Linux Unified Key Setup (LUKS): LUKS で暗号化されたデバイスの復号化パスフレーズのリストを入力するには、Settings セクションで、Disk decryption passphrases の横にある編集アイコンをクリックし、パスフレーズを入力して、Save をクリックします。パスフレーズを特定の順序で入力する必要はありません。MTV は、LUKS で暗号化された各デバイスに対して、デバイスのロックが解除されるまで各パスフレーズを試します。
Specifying a root device: マルチブート仮想マシンの移行にのみ適用されます。デフォルトでは、MTV はルートデバイスとして検出された最初の起動可能なデバイスを使用します。
別のルートデバイスを指定するには、Settings セクションで、Root device の横にある編集アイコンをクリックし、よく使用されるオプションのリストからデバイスを選択するか、テキストボックスにデバイスを入力します。
MTV はディスクの場所に
/dev/sd<disk_identifier><disk_partition>
という形式を使用します。たとえば、2 番目のディスクがルートデバイスであり、オペレーティングシステムがディスクの 2 番目のパーティションにある場合、形式は/dev/sdb2
になります。起動デバイスを入力したら、Save をクリックします。指定した起動デバイスが正しくないために変換が失敗した場合は、変換 Pod のログを確認することで正確な情報を取得できます。
RHV 移行元プロバイダーの場合のみ (任意):
Preserving the CPU model of VMs that are migrated from RHV: 通常、RHV 仮想マシンの CPU モデル (タイプ) はクラスターレベルで設定されますが、仮想マシンレベルで設定することもできます。これはカスタム CPU モデルと呼ばれます。デフォルトでは、MTV は移行先クラスターの CPU モデルを設定する際に、カスタム CPU 設定を持つ仮想マシンにはカスタム CPU 設定を保持します。一方、カスタム CPU 設定を持たない仮想マシンには CPU モデルを設定しません。代わりに、CPU モデルは OpenShift Virtualization によって後で設定されます。
RHV 仮想マシンのクラスターレベルの CPU モデルを保持するには、Settings セクションで、Preserve CPU model の横にある Edit アイコンをクリックします。Whether to preserve the CPU model スイッチを切り替えて、Save をクリックします。
計画が有効な場合は、以下を行います。
- 今すぐ Start migration をクリックしてプランを実行できます。
- 後で Plans for virtualization ページで計画を選択し、移行計画の実行 の手順に従うことで、計画を実行できます。
4.5.2. 特定の仮想マシンから移行計画を作成する
Providers for virtualization ページから、特定の仮想マシンに基づいて移行計画を作成できます。VMware または RHV プロバイダーからの移行に関する特定のオプションに注意してください。
手順
- Red Hat OpenShift Web コンソールで Providers for virtualization をクリックします。
適切な移行元プロバイダーの行で、VMs をクリックします。
Virtual Machines タブが開きます。
移行する仮想マシンを選択し、Create migration plan をクリックします。
Create migration plan ペインが開きます。移行元プロバイダーの名前と、移行先プロバイダーと namespace、ネットワークマップ、ストレージマップに関する提案が表示されます。
- Plan name を入力します。
- 編集可能な項目に必要な変更を加えます。
- 提案されたネットワークマッピングまたはストレージマッピングを編集し、1 つ以上の追加マッピングを追加するには、Add mapping をクリックします。
Create migration plan をクリックします。
MTV によって移行計画が検証されます。Plan details ページが開き、計画が使用可能かどうか、またはエラーが含まれているかどうかが示されます。プランの詳細が表示され、前のページで入力した項目を編集できます。変更を加えると、MTV によってプランが再度検証されます。
VMware 移行元プロバイダーの場合のみ (すべて任意):
Preserving static IPs of VMs: デフォルトでは、仮想ネットワークインターフェイスコントローラー (vNIC) が移行プロセス中に変更されます。その結果、vSphere で静的 IP が設定されている vNIC の IP が失われます。仮想マシンの静的 IP を保持してこれを回避するには、Preserve static IPs の横にある Edit アイコンをクリックし、開いたウィンドウで Whether to preserve the static IPs スイッチを切り替えます。次に、Save をクリックします。
その後、MTV が、vNIC プロパティーが欠落している Windows オペレーティングシステムを持つ仮想マシンに関する警告メッセージを発行します。不足している vNIC プロパティーを取得するには、vSphere で該当する仮想マシンを実行して、vNIC プロパティーが MTV に報告されるようにします。
- Entering a list of decryption passphrases for disks encrypted using Linux Unified Key Setup (LUKS): LUKS で暗号化されたデバイスの復号化パスフレーズのリストを入力するには、Settings セクションで、Disk decryption passphrases の横にある編集アイコンをクリックし、パスフレーズを入力して、Save をクリックします。パスフレーズを特定の順序で入力する必要はありません。MTV は、LUKS で暗号化された各デバイスに対して、デバイスのロックが解除されるまで各パスフレーズを試します。
Specifying a root device: マルチブート仮想マシンの移行にのみ適用されます。デフォルトでは、MTV はルートデバイスとして検出された最初の起動可能なデバイスを使用します。
別のルートデバイスを指定するには、Settings セクションで、Root device の横にある編集アイコンをクリックし、よく使用されるオプションのリストからデバイスを選択するか、テキストボックスにデバイスを入力します。
MTV はディスクの場所に
/dev/sd<disk_identifier><disk_partition>
という形式を使用します。たとえば、2 番目のディスクがルートデバイスであり、オペレーティングシステムがディスクの 2 番目のパーティションにある場合、形式は/dev/sdb2
になります。起動デバイスを入力したら、Save をクリックします。指定した起動デバイスが正しくないために変換が失敗した場合は、変換 Pod のログを確認することで正確な情報を取得できます。
RHV 移行元プロバイダーの場合のみ (任意):
Preserving the CPU model of VMs that are migrated from RHV: 通常、RHV 仮想マシンの CPU モデル (タイプ) はクラスターレベルで設定されますが、仮想マシンレベルで設定することもできます。これはカスタム CPU モデルと呼ばれます。デフォルトでは、MTV は移行先クラスターの CPU モデルを設定する際に、カスタム CPU 設定を持つ仮想マシンにはカスタム CPU 設定を保持します。一方、カスタム CPU 設定を持たない仮想マシンには CPU モデルを設定しません。代わりに、CPU モデルは OpenShift Virtualization によって後で設定されます。
RHV 仮想マシンのクラスターレベルの CPU モデルを保持するには、Settings セクションで、Preserve CPU model の横にある Edit アイコンをクリックします。Whether to preserve the CPU model スイッチを切り替えて、Save をクリックします。
計画が有効な場合は、以下を行います。
- 今すぐ Start migration をクリックしてプランを実行できます。
- 後で Plans for virtualization ページで計画を選択し、移行計画の実行 の手順に従うことで、計画を実行できます。
4.6. 移行計画の実行
移行計画を実行し、Red Hat OpenShift Web コンソールでその進行状況を表示できます。
前提条件
- 有効な移行計画が作成されている。
手順
Red Hat OpenShift Web コンソールで、Migration → Plans for virtualization をクリックします。
Plans リストには、移行元プロバイダーとターゲットプロバイダー、移行中の仮想マシン (VM) の数、ステータス、および各プランの説明が表示されます。
- 移行計画の横にある Start をクリックして移行を開始します。
開いた確認ウィンドウで Start をクリックします。
Migration details by VM 画面が開いて、移行の進行状況が表示されます。
ウォーム移行のみ:
- プレコピー段階が開始します。
- Cutover クリックして移行を完了します。
移行が失敗した場合:
- Get logs をクリックして、移行ログを取得します。
- 開いた確認ウィンドウで Get logs をクリックします。
- Get logs が Download logs に変わるまで待ってから、ボタンをクリックして、ログをダウンロードします。
移行が失敗したか、成功したか、または進行中かを問わず、移行の ステータス をクリックして、移行の詳細を表示します。
Migration details by VM 画面が開いて、移行の開始時刻と終了時刻、コピーされたデータの量、および移行中の各仮想マシンの進行状況パイプラインが表示されます。
- 個別の仮想マシンを拡張して、そのステップと各ステップの経過時間と状態を表示します。
4.7. 移行計画のオプション
Red Hat OpenShift Web コンソールの Plans for virtualization ページで、移行計画の横にある Options メニュー
をクリックすると、次のオプションにアクセスできます。
- Get logs: 移行のログを取得します。Get logs をクリックすると、確認ウィンドウが開きます。ウィンドウで Get logs をクリックした後、Get logs が Download logs に変わるまで待ってから、ボタンをクリックして、ログをダウンロードします。
- Edit: 移行計画の詳細を編集します。移行計画の実行中または正常に完了した後は、移行計画を編集できません。
Duplicate: 既存の計画と同じ仮想マシン (VM)、パラメーター、マッピング、およびフックを使用して、新しい移行計画を作成します。この機能は、以下のタスクに使用できます。
- 仮想マシンを別の namespace に移行する。
- アーカイブされた移行計画を編集する。
- ステータスが異なる移行計画を編集する (例: 失敗、キャンセル、実行中、クリティカル、準備完了)。
Archive: 移行計画のログ、履歴、メタデータを削除します。計画を編集または再起動することはできません。閲覧のみ可能です。
注記Archive オプションは元に戻せません。ただし、アーカイブされた計画を複製することはできます。
Delete: 移行計画を完全に削除します。実行中の移行計画を削除することはできません。
注記Delete オプションは元に戻せません。
移行計画を削除しても、
importer
Pod、conversion
Pod、config map、シークレット、失敗した VM、データボリュームなどの一時的なリソースは削除されません。(BZ#2018974) 一時的なリソースをクリーンアップするために、移行計画を削除する前にアーカイブする必要があります。- View details: 移行計画の詳細を表示します。
- Restart: 失敗またはキャンセルした移行計画を再起動します。
- Cancel scheduled cutover: ウォーム移行計画に対してスケジュールされたカットオーバー移行をキャンセルします。
4.8. 移行のキャンセル
Red Hat OpenShift Web コンソールを使用して、移行計画の進行中に一部またはすべての仮想マシン (VM) の移行をキャンセルできます。
手順
- Red Hat OpenShift Web コンソールで、Plans for virtualization をクリックします。
- 実行中の移行計画の名前をクリックし、移行の詳細を表示します。
- 1 つ以上の仮想マシンを選択し、Cancel をクリックします。
Yes, cancel をクリックしてキャンセルを確定します。
Migration details by VM リストでは、キャンセルした仮想マシンのステータスは Canceled になります。移行されていない仮想マシンと移行された仮想マシンは影響を受けません。
Migration plans ページの移行計画の横にある Restart をクリックして、キャンセルした移行を再開できます。
第5章 コマンドラインからの仮想マシンの移行
コマンドラインから仮想マシンを OpenShift Virtualization に移行できます。
すべての 前提条件 を満たしていることを確認する必要があります。
5.1. 管理者以外が移行計画コンポーネントを操作するために必要な権限
管理者の場合は、移行計画のすべてのコンポーネント (プロバイダー、ネットワークマッピング、移行計画など) を操作できます。
デフォルトでは、管理者以外のユーザーが移行計画とそのコンポーネントを操作できる機能は限られています。管理者は、ロールを変更してすべてのコンポーネントへの完全なアクセスを許可したり、制限付きのパーミッションを付与したりできます。
たとえば、管理者は、移行計画に管理者以外のクラスターロールを 1 つ以上割り当てることができます。
Role | 説明 |
---|---|
| 移行計画を表示できますが、作成、削除、または変更はできません。 |
|
個々の移行計画を作成、削除、または変更 ( |
|
すべての |
事前定義されたクラスターのロールには、リソース (例: plan
)、API グループ (例: forklift.konveyor.io-v1beta1
)、およびアクション (例: view
、edit
) が含まれることに注意してください。
全体的な例として、管理者以外のユーザーに namespace 別に次の一連の権限を付与できます。
- アクセス可能な namespace のストレージマップ、ネットワークマップ、および移行計画を作成および変更する
- 管理者が作成したプロバイダーをストレージマップ、ネットワークマップ、移行計画に接続する
- プロバイダーを作成できない、またはシステム設定を変更できないようにする
アクション | API グループ | リソース |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 空の文字列 |
|
管理者以外が移行計画を作成するには、ネットワークマップまたはストレージマップのテンプレートを使用する場合でも、ネットワークマップおよびストレージマップの edit
ロールの一部である create
権限が必要です。
5.2. VMware vSphere moRef の取得
CLI から Migration Toolkit for Virtualization (MTV) を使用して VMware vSphere ソースプロバイダーで仮想マシンを移行する場合は、データストア、ネットワーク、仮想マシンなど、vSphere 内の特定のエンティティーのマネージドオブジェクト参照 (moRef) を知っておく必要があります。
インベントリーサービスから 1 つ以上の vSphere エンティティーの moRef を取得できます。その後、各 moRef を別のエンティティーの moRef を取得するための参照として使用できます。
手順
プロジェクトのルートを取得します。
oc get route -n openshift-mtv
Copy to clipboardCopiedoc get route -n openshift-mtv
Inventory
サービスルートを取得します。oc get route <inventory_service> -n openshift-mtv
Copy to clipboardCopied$ oc get route <inventory_service> -n openshift-mtv
アクセストークンを取得します。
TOKEN=$(oc whoami -t)
Copy to clipboardCopied$ TOKEN=$(oc whoami -t)
VMware vSphere プロバイダーの moRef を取得します。
curl -H "Authorization: Bearer $TOKEN" https://<inventory_service_route>/providers/vsphere -k
Copy to clipboardCopied$ curl -H "Authorization: Bearer $TOKEN" https://<inventory_service_route>/providers/vsphere -k
VMware vSphere ソースプロバイダーのデータストアを取得します。
curl -H "Authorization: Bearer $TOKEN" https://<inventory_service_route>/providers/vsphere/<provider id>/datastores/ -k
Copy to clipboardCopied$ curl -H "Authorization: Bearer $TOKEN" https://<inventory_service_route>/providers/vsphere/<provider id>/datastores/ -k
出力例
[ { "id": "datastore-11", "parent": { "kind": "Folder", "id": "group-s5" }, "path": "/Datacenter/datastore/v2v_general_porpuse_ISCSI_DC", "revision": 46, "name": "v2v_general_porpuse_ISCSI_DC", "selfLink": "providers/vsphere/01278af6-e1e4-4799-b01b-d5ccc8dd0201/datastores/datastore-11" }, { "id": "datastore-730", "parent": { "kind": "Folder", "id": "group-s5" }, "path": "/Datacenter/datastore/f01-h27-640-SSD_2", "revision": 46, "name": "f01-h27-640-SSD_2", "selfLink": "providers/vsphere/01278af6-e1e4-4799-b01b-d5ccc8dd0201/datastores/datastore-730" }, ...
Copy to clipboardCopied[ { "id": "datastore-11", "parent": { "kind": "Folder", "id": "group-s5" }, "path": "/Datacenter/datastore/v2v_general_porpuse_ISCSI_DC", "revision": 46, "name": "v2v_general_porpuse_ISCSI_DC", "selfLink": "providers/vsphere/01278af6-e1e4-4799-b01b-d5ccc8dd0201/datastores/datastore-11" }, { "id": "datastore-730", "parent": { "kind": "Folder", "id": "group-s5" }, "path": "/Datacenter/datastore/f01-h27-640-SSD_2", "revision": 46, "name": "f01-h27-640-SSD_2", "selfLink": "providers/vsphere/01278af6-e1e4-4799-b01b-d5ccc8dd0201/datastores/datastore-730" }, ...
この例では、データストア v2v_general_porpuse_ISCSI_DC
の moRef は datastore-11
であり、データストア f01-h27-640-SSD_2
の moRef は datastore-730
です。
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
マニフェストを作成します。$ 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
Copy to clipboardCopied$ 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
マニフェストを作成します。$ 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
Copy to clipboardCopied$ 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
マニフェストを作成します。$ 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
Copy to clipboardCopied$ 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
マニフェストを作成します。$ 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 clipboardCopied$ 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
マニフェストを作成し、移行元ストレージと移行先ストレージをマッピングします。$ 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
Copy to clipboardCopied$ 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 で指定されたフェーズ中に仮想マシンでカスタムコードを実行します。$ 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
Copy to clipboardCopied$ 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
マニフェストを作成します。$ 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
Copy to clipboardCopied$ 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
マニフェストを作成します。$ 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 clipboardCopied$ 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
マニフェストを作成します。$ 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
Copy to clipboardCopied$ 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
マニフェストを作成します。$ 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
Copy to clipboardCopied$ 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
マニフェストを作成します。$ 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 clipboardCopied$ 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
マニフェストを作成し、移行元ストレージと移行先ストレージをマッピングします。$ 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
Copy to clipboardCopied$ 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 で指定されたフェーズ中に仮想マシンでカスタムコードを実行します。$ 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
Copy to clipboardCopied$ 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
マニフェストを作成します。$ 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
Copy to clipboardCopied$ 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
マニフェストを作成します。$ 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 clipboardCopied$ 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
マニフェストを作成します。$ 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 clipboardCopied$ 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
マニフェストを作成します。$ 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 clipboardCopied$ 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
マニフェストを作成します。$ 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 clipboardCopied$ 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
マニフェストを作成し、移行元ストレージと移行先ストレージをマッピングします。$ 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 clipboardCopied$ 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 で指定されたフェーズ中に仮想マシンでカスタムコードを実行します。$ 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
Copy to clipboardCopied$ 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
マニフェストを作成します。$ 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
Copy to clipboardCopied$ 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
マニフェストを作成します。$ 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 clipboardCopied$ 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
マニフェストを作成します。$ 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
Copy to clipboardCopied$ 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
マニフェストを作成します。$ 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
Copy to clipboardCopied$ 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
マニフェストを作成します。$ 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
Copy to clipboardCopied$ 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
マニフェストを作成し、移行元ストレージと移行先ストレージをマッピングします。$ 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
Copy to clipboardCopied$ 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 で指定されたフェーズ中に仮想マシンでカスタムコードを実行します。$ 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
Copy to clipboardCopied$ 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
マニフェストを作成します。$ 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
Copy to clipboardCopied$ 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
マニフェストを作成します。$ 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 clipboardCopied$ 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
マニフェストを作成します。$ 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
Copy to clipboardCopied$ 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
マニフェストを作成します。$ 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
Copy to clipboardCopied$ 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
マニフェストを作成します。$ 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
Copy to clipboardCopied$ 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
マニフェストを作成し、移行元ストレージと移行先ストレージをマッピングします。$ 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
Copy to clipboardCopied$ 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 で指定されたフェーズ中に仮想マシンでカスタムコードを実行します。$ 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
Copy to clipboardCopied$ 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
マニフェストを作成します。$ 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
Copy to clipboardCopied$ 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
マニフェストを作成します。$ 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 clipboardCopied$ 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.4. 移行のキャンセル
コマンドラインインターフェイス (CLI) から、移行の進行中に、移行全体または個々の仮想マシン (VM) の移行をキャンセルできます。
移行全体のキャンセル
Migration
CR を削除します。oc delete migration <migration> -n <namespace> 1
Copy to clipboardCopied$ oc delete migration <migration> -n <namespace> 1
- 1
Migration
CR の名前を指定します。
個別の仮想マシンの移行のキャンセル
Migration
マニフェストのspec.cancel
ブロックに個別の仮想マシンを追加します。$ 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 clipboardCopied$ 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
- 1
id
キーまたはname
キーを使用して仮想マシンを指定できます。
id
キーの値は、VMware 仮想マシンの場合は Managed Object Reference、RHV 仮想マシンの場合は VM UUID です。残りの仮想マシンの進捗をモニタリングするための
Migration
CR を取得します。oc get migration/<migration> -n <namespace> -o yaml
Copy to clipboardCopied$ oc get migration/<migration> -n <namespace> -o yaml
第6章 高度な移行オプション
6.1. ウォーム移行のプレコピー間隔の変更
ForkliftController
カスタムリソース (CR) にパッチを適用して、スナップショットの間隔を変更できます。
手順
ForkliftController
CR にパッチを適用します。oc patch forkliftcontroller/<forklift-controller> -n openshift-mtv -p '{"spec": {"controller_precopy_interval": <60>}}' --type=merge 1
Copy to clipboardCopied$ oc patch forkliftcontroller/<forklift-controller> -n openshift-mtv -p '{"spec": {"controller_precopy_interval": <60>}}' --type=merge 1
- 1
- プレコピーの間隔を分単位で指定します。デフォルト値は
60
です。
forklift-controller
Pod を再起動する必要はありません。
6.2. Validation サービスのカスタムルールの作成
Validation
サービスは Open Policy Agent (OPA) ポリシールールを使用して、移行に対する各仮想マシン (VM) の適合性を確認します。Validation
サービスは、各仮想マシンの concerns リストを生成します。これは、Provider Inventory
サービスに仮想マシン属性として保存されます。Web コンソールには、プロバイダーインベントリー内の各仮想マシンの concerns が表示されます。
カスタムルールを作成して、Validation
サービスのデフォルトルールセットを拡張できます。たとえば、仮想マシンに複数のディスクがあるかどうかを確認するルールを作成できます。
6.2.1. Rego ファイルについて
検証ルールは、Open Policy Agent (OPA) のネイティブクエリー言語である Rego で記述されます。ルールは、Validation
Pod の /usr/share/opa/policies/io/konveyor/forklift/<provider>
ディレクトリーに .rego
ファイルとして保存されます。
各検証ルールは、個別の .rego
ファイルに定義され、特定の条件をテストします。条件が true
と評価された場合、ルールは {“category", “label", “assessment"}
ハッシュを concerns
に追加します。concerns
のコンテンツは、仮想マシンのインベントリーレコードの concerns
キーに追加されます。Web コンソールには、プロバイダーインベントリー内の各仮想マシンの concerns
キーのコンテンツが表示されます。
次の .rego
ファイルの例では、VMware 仮想マシンのクラスターで有効になっている分散リソーススケジューリングを確認します。
drs_enabled.rego の例
package io.konveyor.forklift.vmware 1 has_drs_enabled { input.host.cluster.drsEnabled 2 } concerns[flag] { has_drs_enabled flag := { "category": "Information", "label": "VM running in a DRS-enabled cluster", "assessment": "Distributed resource scheduling is not currently supported by OpenShift Virtualization. The VM can be migrated but it will not have this feature in the target environment." } }
package io.konveyor.forklift.vmware 1
has_drs_enabled {
input.host.cluster.drsEnabled 2
}
concerns[flag] {
has_drs_enabled
flag := {
"category": "Information",
"label": "VM running in a DRS-enabled cluster",
"assessment": "Distributed resource scheduling is not currently supported by OpenShift Virtualization. The VM can be migrated but it will not have this feature in the target environment."
}
}
Copy to clipboardCopied6.2.2. デフォルトの検証ルールの確認
カスタムルールを作成する前に、Validation
サービスのデフォルトルールを確認して、既存のデフォルト値を再定義するルールを作成しないようにする必要があります。
例: デフォルトのルールに default valid_input = false
の行が含まれていて、default valid_input = true
の行が含まれるカスタムルールを作成した場合、Validation
サービスは起動しません。
手順
Validation
Pod のターミナルに接続します。oc rsh <validation_pod>
Copy to clipboardCopied$ oc rsh <validation_pod>
プロバイダーの OPA ポリシーディレクトリーに移動します。
cd /usr/share/opa/policies/io/konveyor/forklift/<provider> 1
Copy to clipboardCopied$ cd /usr/share/opa/policies/io/konveyor/forklift/<provider> 1
- 1
vmware
またはovirt
を指定します。
デフォルトポリシーを検索します。
grep -R "default" *
Copy to clipboardCopied$ grep -R "default" *
6.2.3. 検証ルールの作成
ルールを含む設定マップカスタムリソース (CR) を Validation
サービスに適用して、検証ルールを作成します。
-
既存のルールと同じ 名前 でルールを作成すると、
Validation
サービスは、それらのルールでOR
操作を実行します。 -
デフォルトのルールと矛盾するルールを作成すると、
Validation
サービスは開始しません。
検証ルールの例
検証ルールは、Provider Inventory
サービスが収集する仮想マシン (VM) 属性に基づいています。
たとえば、VMware API はこのパス (MOR:VirtualMachine.config.extraConfig["numa.nodeAffinity"]
) を使用して、VMware 仮想マシンに NUMA ノードアフィニティーが設定されているかどうかを確認します。
Provider Inventory
サービスは、この設定を簡素化し、テスト可能な属性を、リストの値で返します。
"numaNodeAffinity": [ "0", "1" ],
"numaNodeAffinity": [
"0",
"1"
],
Copy to clipboardCopied
この属性に基づいて Rego クエリーを作成し、それを forklift-validation-config
設定マップに追加します。
`count(input.numaNodeAffinity) != 0`
`count(input.numaNodeAffinity) != 0`
Copy to clipboardCopied手順
以下の例に従って設定マップ CR を作成します。
$ cat << EOF | oc apply -f - apiVersion: v1 kind: ConfigMap metadata: name: <forklift-validation-config> namespace: openshift-mtv data: vmware_multiple_disks.rego: |- package <provider_package> 1 has_multiple_disks { 2 count(input.disks) > 1 } concerns[flag] { has_multiple_disks 3 flag := { "category": "<Information>", 4 "label": "Multiple disks detected", "assessment": "Multiple disks detected on this VM." } } EOF
Copy to clipboardCopied$ cat << EOF | oc apply -f - apiVersion: v1 kind: ConfigMap metadata: name: <forklift-validation-config> namespace: openshift-mtv data: vmware_multiple_disks.rego: |- package <provider_package> 1 has_multiple_disks { 2 count(input.disks) > 1 } concerns[flag] { has_multiple_disks 3 flag := { "category": "<Information>", 4 "label": "Multiple disks detected", "assessment": "Multiple disks detected on this VM." } } EOF
forklift-controller
デプロイメントを0
にスケーリングして、Validation
Pod を停止します。oc scale -n openshift-mtv --replicas=0 deployment/forklift-controller
Copy to clipboardCopied$ oc scale -n openshift-mtv --replicas=0 deployment/forklift-controller
forklift-controller
デプロイメントを1
にスケーリングして、Validation
Pod を起動します。oc scale -n openshift-mtv --replicas=1 deployment/forklift-controller
Copy to clipboardCopied$ oc scale -n openshift-mtv --replicas=1 deployment/forklift-controller
Validation
Pod ログをチェックして、Pod が起動したことを確認します。oc logs -f <validation_pod>
Copy to clipboardCopied$ oc logs -f <validation_pod>
カスタムルールがデフォルトのルールと競合する場合、
Validation
Pod は起動しません。移行元プロバイダーを削除します。
oc delete provider <provider> -n openshift-mtv
Copy to clipboardCopied$ oc delete provider <provider> -n openshift-mtv
移行元プロバイダーを追加して、新規ルールを適用します。
$ 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 secret: name: <secret> 3 namespace: openshift-mtv EOF
Copy to clipboardCopied$ 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 secret: name: <secret> 3 namespace: openshift-mtv EOF
カスタムルールを作成した後、ルールのバージョンを更新して、Inventory
サービスが変更を検出し、仮想マシンを検証できるようにする必要があります。
6.2.4. インベントリールールバージョンの更新
Provider Inventory
サービスが変更を検出して Validation
サービスをトリガーするように、ルールを更新するたびにインベントリールールのバージョンを更新する必要があります。
ルールバージョンは、各プロバイダーの rules_version.rego
ファイルに記録されます。
手順
現在のルールバージョンを取得します。
GET https://forklift-validation/v1/data/io/konveyor/forklift/<provider>/rules_version 1
Copy to clipboardCopied$ GET https://forklift-validation/v1/data/io/konveyor/forklift/<provider>/rules_version 1
出力例
{ "result": { "rules_version": 5 } }
Copy to clipboardCopied{ "result": { "rules_version": 5 } }
Validation
Pod のターミナルに接続します。oc rsh <validation_pod>
Copy to clipboardCopied$ oc rsh <validation_pod>
-
/usr/share/opa/policies/io/konveyor/forklift/<provider>/rules_version.rego
ファイルでルールバージョンを更新します。 -
Validation
Pod ターミナルからログアウトします。 更新されたルールバージョンを検証します。
GET https://forklift-validation/v1/data/io/konveyor/forklift/<provider>/rules_version 1
Copy to clipboardCopied$ GET https://forklift-validation/v1/data/io/konveyor/forklift/<provider>/rules_version 1
出力例
{ "result": { "rules_version": 6 } }
Copy to clipboardCopied{ "result": { "rules_version": 6 } }
6.3. Inventory サービス JSON の取得
Inventory
サービスクエリーを仮想マシン (VM) に送信して Inventory
サービス JSON を取得します。出力には "input"
キーが含まれます。このキーには、Validation
サービスルールによってクエリーされるインベントリー属性が含まれます。
検証ルールは、"input"
キーの任意の属性に基づいて作成できます (例: input.snapshot.kind
)。
手順
プロジェクトのルートを取得します。
oc get route -n openshift-mtv
Copy to clipboardCopiedoc get route -n openshift-mtv
Inventory
サービスルートを取得します。oc get route <inventory_service> -n openshift-mtv
Copy to clipboardCopied$ oc get route <inventory_service> -n openshift-mtv
アクセストークンを取得します。
TOKEN=$(oc whoami -t)
Copy to clipboardCopied$ TOKEN=$(oc whoami -t)
HTTP GET リクエストをトリガーします (たとえば、Curl を使用)。
curl -H "Authorization: Bearer $TOKEN" https://<inventory_service_route>/providers -k
Copy to clipboardCopied$ curl -H "Authorization: Bearer $TOKEN" https://<inventory_service_route>/providers -k
プロバイダーの
UUID
を取得します。curl -H "Authorization: Bearer $TOKEN" https://<inventory_service_route>/providers/<provider> -k 1
Copy to clipboardCopied$ curl -H "Authorization: Bearer $TOKEN" https://<inventory_service_route>/providers/<provider> -k 1
プロバイダーの仮想マシンを取得します。
curl -H "Authorization: Bearer $TOKEN" https://<inventory_service_route>/providers/<provider>/<UUID>/vms -k
Copy to clipboardCopied$ curl -H "Authorization: Bearer $TOKEN" https://<inventory_service_route>/providers/<provider>/<UUID>/vms -k
仮想マシンの詳細を取得します。
curl -H "Authorization: Bearer $TOKEN" https://<inventory_service_route>/providers/<provider>/<UUID>/workloads/<vm> -k
Copy to clipboardCopied$ curl -H "Authorization: Bearer $TOKEN" https://<inventory_service_route>/providers/<provider>/<UUID>/workloads/<vm> -k
出力例
{ "input": { "selfLink": "providers/vsphere/c872d364-d62b-46f0-bd42-16799f40324e/workloads/vm-431", "id": "vm-431", "parent": { "kind": "Folder", "id": "group-v22" }, "revision": 1, "name": "iscsi-target", "revisionValidated": 1, "isTemplate": false, "networks": [ { "kind": "Network", "id": "network-31" }, { "kind": "Network", "id": "network-33" } ], "disks": [ { "key": 2000, "file": "[iSCSI_Datastore] iscsi-target/iscsi-target-000001.vmdk", "datastore": { "kind": "Datastore", "id": "datastore-63" }, "capacity": 17179869184, "shared": false, "rdm": false }, { "key": 2001, "file": "[iSCSI_Datastore] iscsi-target/iscsi-target_1-000001.vmdk", "datastore": { "kind": "Datastore", "id": "datastore-63" }, "capacity": 10737418240, "shared": false, "rdm": false } ], "concerns": [], "policyVersion": 5, "uuid": "42256329-8c3a-2a82-54fd-01d845a8bf49", "firmware": "bios", "powerState": "poweredOn", "connectionState": "connected", "snapshot": { "kind": "VirtualMachineSnapshot", "id": "snapshot-3034" }, "changeTrackingEnabled": false, "cpuAffinity": [ 0, 2 ], "cpuHotAddEnabled": true, "cpuHotRemoveEnabled": false, "memoryHotAddEnabled": false, "faultToleranceEnabled": false, "cpuCount": 2, "coresPerSocket": 1, "memoryMB": 2048, "guestName": "Red Hat Enterprise Linux 7 (64-bit)", "balloonedMemory": 0, "ipAddress": "10.19.2.96", "storageUsed": 30436770129, "numaNodeAffinity": [ "0", "1" ], "devices": [ { "kind": "RealUSBController" } ], "host": { "id": "host-29", "parent": { "kind": "Cluster", "id": "domain-c26" }, "revision": 1, "name": "IP address or host name of the vCenter host or RHV Engine host", "selfLink": "providers/vsphere/c872d364-d62b-46f0-bd42-16799f40324e/hosts/host-29", "status": "green", "inMaintenance": false, "managementServerIp": "10.19.2.96", "thumbprint": <thumbprint>, "timezone": "UTC", "cpuSockets": 2, "cpuCores": 16, "productName": "VMware ESXi", "productVersion": "6.5.0", "networking": { "pNICs": [ { "key": "key-vim.host.PhysicalNic-vmnic0", "linkSpeed": 10000 }, { "key": "key-vim.host.PhysicalNic-vmnic1", "linkSpeed": 10000 }, { "key": "key-vim.host.PhysicalNic-vmnic2", "linkSpeed": 10000 }, { "key": "key-vim.host.PhysicalNic-vmnic3", "linkSpeed": 10000 } ], "vNICs": [ { "key": "key-vim.host.VirtualNic-vmk2", "portGroup": "VM_Migration", "dPortGroup": "", "ipAddress": "192.168.79.13", "subnetMask": "255.255.255.0", "mtu": 9000 }, { "key": "key-vim.host.VirtualNic-vmk0", "portGroup": "Management Network", "dPortGroup": "", "ipAddress": "10.19.2.13", "subnetMask": "255.255.255.128", "mtu": 1500 }, { "key": "key-vim.host.VirtualNic-vmk1", "portGroup": "Storage Network", "dPortGroup": "", "ipAddress": "172.31.2.13", "subnetMask": "255.255.0.0", "mtu": 1500 }, { "key": "key-vim.host.VirtualNic-vmk3", "portGroup": "", "dPortGroup": "dvportgroup-48", "ipAddress": "192.168.61.13", "subnetMask": "255.255.255.0", "mtu": 1500 }, { "key": "key-vim.host.VirtualNic-vmk4", "portGroup": "VM_DHCP_Network", "dPortGroup": "", "ipAddress": "10.19.2.231", "subnetMask": "255.255.255.128", "mtu": 1500 } ], "portGroups": [ { "key": "key-vim.host.PortGroup-VM Network", "name": "VM Network", "vSwitch": "key-vim.host.VirtualSwitch-vSwitch0" }, { "key": "key-vim.host.PortGroup-Management Network", "name": "Management Network", "vSwitch": "key-vim.host.VirtualSwitch-vSwitch0" }, { "key": "key-vim.host.PortGroup-VM_10G_Network", "name": "VM_10G_Network", "vSwitch": "key-vim.host.VirtualSwitch-vSwitch1" }, { "key": "key-vim.host.PortGroup-VM_Storage", "name": "VM_Storage", "vSwitch": "key-vim.host.VirtualSwitch-vSwitch1" }, { "key": "key-vim.host.PortGroup-VM_DHCP_Network", "name": "VM_DHCP_Network", "vSwitch": "key-vim.host.VirtualSwitch-vSwitch1" }, { "key": "key-vim.host.PortGroup-Storage Network", "name": "Storage Network", "vSwitch": "key-vim.host.VirtualSwitch-vSwitch1" }, { "key": "key-vim.host.PortGroup-VM_Isolated_67", "name": "VM_Isolated_67", "vSwitch": "key-vim.host.VirtualSwitch-vSwitch2" }, { "key": "key-vim.host.PortGroup-VM_Migration", "name": "VM_Migration", "vSwitch": "key-vim.host.VirtualSwitch-vSwitch2" } ], "switches": [ { "key": "key-vim.host.VirtualSwitch-vSwitch0", "name": "vSwitch0", "portGroups": [ "key-vim.host.PortGroup-VM Network", "key-vim.host.PortGroup-Management Network" ], "pNICs": [ "key-vim.host.PhysicalNic-vmnic4" ] }, { "key": "key-vim.host.VirtualSwitch-vSwitch1", "name": "vSwitch1", "portGroups": [ "key-vim.host.PortGroup-VM_10G_Network", "key-vim.host.PortGroup-VM_Storage", "key-vim.host.PortGroup-VM_DHCP_Network", "key-vim.host.PortGroup-Storage Network" ], "pNICs": [ "key-vim.host.PhysicalNic-vmnic2", "key-vim.host.PhysicalNic-vmnic0" ] }, { "key": "key-vim.host.VirtualSwitch-vSwitch2", "name": "vSwitch2", "portGroups": [ "key-vim.host.PortGroup-VM_Isolated_67", "key-vim.host.PortGroup-VM_Migration" ], "pNICs": [ "key-vim.host.PhysicalNic-vmnic3", "key-vim.host.PhysicalNic-vmnic1" ] } ] }, "networks": [ { "kind": "Network", "id": "network-31" }, { "kind": "Network", "id": "network-34" }, { "kind": "Network", "id": "network-57" }, { "kind": "Network", "id": "network-33" }, { "kind": "Network", "id": "dvportgroup-47" } ], "datastores": [ { "kind": "Datastore", "id": "datastore-35" }, { "kind": "Datastore", "id": "datastore-63" } ], "vms": null, "networkAdapters": [], "cluster": { "id": "domain-c26", "parent": { "kind": "Folder", "id": "group-h23" }, "revision": 1, "name": "mycluster", "selfLink": "providers/vsphere/c872d364-d62b-46f0-bd42-16799f40324e/clusters/domain-c26", "folder": "group-h23", "networks": [ { "kind": "Network", "id": "network-31" }, { "kind": "Network", "id": "network-34" }, { "kind": "Network", "id": "network-57" }, { "kind": "Network", "id": "network-33" }, { "kind": "Network", "id": "dvportgroup-47" } ], "datastores": [ { "kind": "Datastore", "id": "datastore-35" }, { "kind": "Datastore", "id": "datastore-63" } ], "hosts": [ { "kind": "Host", "id": "host-44" }, { "kind": "Host", "id": "host-29" } ], "dasEnabled": false, "dasVms": [], "drsEnabled": true, "drsBehavior": "fullyAutomated", "drsVms": [], "datacenter": null } } } }
Copy to clipboardCopied{ "input": { "selfLink": "providers/vsphere/c872d364-d62b-46f0-bd42-16799f40324e/workloads/vm-431", "id": "vm-431", "parent": { "kind": "Folder", "id": "group-v22" }, "revision": 1, "name": "iscsi-target", "revisionValidated": 1, "isTemplate": false, "networks": [ { "kind": "Network", "id": "network-31" }, { "kind": "Network", "id": "network-33" } ], "disks": [ { "key": 2000, "file": "[iSCSI_Datastore] iscsi-target/iscsi-target-000001.vmdk", "datastore": { "kind": "Datastore", "id": "datastore-63" }, "capacity": 17179869184, "shared": false, "rdm": false }, { "key": 2001, "file": "[iSCSI_Datastore] iscsi-target/iscsi-target_1-000001.vmdk", "datastore": { "kind": "Datastore", "id": "datastore-63" }, "capacity": 10737418240, "shared": false, "rdm": false } ], "concerns": [], "policyVersion": 5, "uuid": "42256329-8c3a-2a82-54fd-01d845a8bf49", "firmware": "bios", "powerState": "poweredOn", "connectionState": "connected", "snapshot": { "kind": "VirtualMachineSnapshot", "id": "snapshot-3034" }, "changeTrackingEnabled": false, "cpuAffinity": [ 0, 2 ], "cpuHotAddEnabled": true, "cpuHotRemoveEnabled": false, "memoryHotAddEnabled": false, "faultToleranceEnabled": false, "cpuCount": 2, "coresPerSocket": 1, "memoryMB": 2048, "guestName": "Red Hat Enterprise Linux 7 (64-bit)", "balloonedMemory": 0, "ipAddress": "10.19.2.96", "storageUsed": 30436770129, "numaNodeAffinity": [ "0", "1" ], "devices": [ { "kind": "RealUSBController" } ], "host": { "id": "host-29", "parent": { "kind": "Cluster", "id": "domain-c26" }, "revision": 1, "name": "IP address or host name of the vCenter host or RHV Engine host", "selfLink": "providers/vsphere/c872d364-d62b-46f0-bd42-16799f40324e/hosts/host-29", "status": "green", "inMaintenance": false, "managementServerIp": "10.19.2.96", "thumbprint": <thumbprint>, "timezone": "UTC", "cpuSockets": 2, "cpuCores": 16, "productName": "VMware ESXi", "productVersion": "6.5.0", "networking": { "pNICs": [ { "key": "key-vim.host.PhysicalNic-vmnic0", "linkSpeed": 10000 }, { "key": "key-vim.host.PhysicalNic-vmnic1", "linkSpeed": 10000 }, { "key": "key-vim.host.PhysicalNic-vmnic2", "linkSpeed": 10000 }, { "key": "key-vim.host.PhysicalNic-vmnic3", "linkSpeed": 10000 } ], "vNICs": [ { "key": "key-vim.host.VirtualNic-vmk2", "portGroup": "VM_Migration", "dPortGroup": "", "ipAddress": "192.168.79.13", "subnetMask": "255.255.255.0", "mtu": 9000 }, { "key": "key-vim.host.VirtualNic-vmk0", "portGroup": "Management Network", "dPortGroup": "", "ipAddress": "10.19.2.13", "subnetMask": "255.255.255.128", "mtu": 1500 }, { "key": "key-vim.host.VirtualNic-vmk1", "portGroup": "Storage Network", "dPortGroup": "", "ipAddress": "172.31.2.13", "subnetMask": "255.255.0.0", "mtu": 1500 }, { "key": "key-vim.host.VirtualNic-vmk3", "portGroup": "", "dPortGroup": "dvportgroup-48", "ipAddress": "192.168.61.13", "subnetMask": "255.255.255.0", "mtu": 1500 }, { "key": "key-vim.host.VirtualNic-vmk4", "portGroup": "VM_DHCP_Network", "dPortGroup": "", "ipAddress": "10.19.2.231", "subnetMask": "255.255.255.128", "mtu": 1500 } ], "portGroups": [ { "key": "key-vim.host.PortGroup-VM Network", "name": "VM Network", "vSwitch": "key-vim.host.VirtualSwitch-vSwitch0" }, { "key": "key-vim.host.PortGroup-Management Network", "name": "Management Network", "vSwitch": "key-vim.host.VirtualSwitch-vSwitch0" }, { "key": "key-vim.host.PortGroup-VM_10G_Network", "name": "VM_10G_Network", "vSwitch": "key-vim.host.VirtualSwitch-vSwitch1" }, { "key": "key-vim.host.PortGroup-VM_Storage", "name": "VM_Storage", "vSwitch": "key-vim.host.VirtualSwitch-vSwitch1" }, { "key": "key-vim.host.PortGroup-VM_DHCP_Network", "name": "VM_DHCP_Network", "vSwitch": "key-vim.host.VirtualSwitch-vSwitch1" }, { "key": "key-vim.host.PortGroup-Storage Network", "name": "Storage Network", "vSwitch": "key-vim.host.VirtualSwitch-vSwitch1" }, { "key": "key-vim.host.PortGroup-VM_Isolated_67", "name": "VM_Isolated_67", "vSwitch": "key-vim.host.VirtualSwitch-vSwitch2" }, { "key": "key-vim.host.PortGroup-VM_Migration", "name": "VM_Migration", "vSwitch": "key-vim.host.VirtualSwitch-vSwitch2" } ], "switches": [ { "key": "key-vim.host.VirtualSwitch-vSwitch0", "name": "vSwitch0", "portGroups": [ "key-vim.host.PortGroup-VM Network", "key-vim.host.PortGroup-Management Network" ], "pNICs": [ "key-vim.host.PhysicalNic-vmnic4" ] }, { "key": "key-vim.host.VirtualSwitch-vSwitch1", "name": "vSwitch1", "portGroups": [ "key-vim.host.PortGroup-VM_10G_Network", "key-vim.host.PortGroup-VM_Storage", "key-vim.host.PortGroup-VM_DHCP_Network", "key-vim.host.PortGroup-Storage Network" ], "pNICs": [ "key-vim.host.PhysicalNic-vmnic2", "key-vim.host.PhysicalNic-vmnic0" ] }, { "key": "key-vim.host.VirtualSwitch-vSwitch2", "name": "vSwitch2", "portGroups": [ "key-vim.host.PortGroup-VM_Isolated_67", "key-vim.host.PortGroup-VM_Migration" ], "pNICs": [ "key-vim.host.PhysicalNic-vmnic3", "key-vim.host.PhysicalNic-vmnic1" ] } ] }, "networks": [ { "kind": "Network", "id": "network-31" }, { "kind": "Network", "id": "network-34" }, { "kind": "Network", "id": "network-57" }, { "kind": "Network", "id": "network-33" }, { "kind": "Network", "id": "dvportgroup-47" } ], "datastores": [ { "kind": "Datastore", "id": "datastore-35" }, { "kind": "Datastore", "id": "datastore-63" } ], "vms": null, "networkAdapters": [], "cluster": { "id": "domain-c26", "parent": { "kind": "Folder", "id": "group-h23" }, "revision": 1, "name": "mycluster", "selfLink": "providers/vsphere/c872d364-d62b-46f0-bd42-16799f40324e/clusters/domain-c26", "folder": "group-h23", "networks": [ { "kind": "Network", "id": "network-31" }, { "kind": "Network", "id": "network-34" }, { "kind": "Network", "id": "network-57" }, { "kind": "Network", "id": "network-33" }, { "kind": "Network", "id": "dvportgroup-47" } ], "datastores": [ { "kind": "Datastore", "id": "datastore-35" }, { "kind": "Datastore", "id": "datastore-63" } ], "hosts": [ { "kind": "Host", "id": "host-44" }, { "kind": "Host", "id": "host-29" } ], "dasEnabled": false, "dasVms": [], "drsEnabled": true, "drsBehavior": "fullyAutomated", "drsVms": [], "datacenter": null } } } }
6.4. 移行計画へのフックの追加
Migration Toolkit for Virtualization API を使用して、コマンドラインから移行計画を追加できます。
6.4.1. MTV 移行計画のための API ベースのフック
Migration Toolkit for Virtualization API を使用して、コマンドラインからフックを移行計画に追加できます。
デフォルトのフックイメージ
MTV フックのデフォルトのフックイメージは registry.redhat.io/rhmtc/openshift-migration-hook-runner-rhel8:v1.8.2-2
です。このイメージは、Ansible Runner イメージをベースにしており、Ansible Kubernetes リソースと最新の oc
バイナリーを提供するための python-openshift
が追加されています。
フックの実行
移行フックの一部として提供される Ansible Playbook は、ConfigMap
としてフックコンテナーにマウントされます。フックコンテナーは、konveyor-forklift
namespace のデフォルトの ServiceAccount
を使用して、目的のクラスター上でジョブとして実行されます。
PreHooks および PostHooks
仮想マシンごとにフックを指定し、それぞれを PreHook または PostHook として実行できます。このコンテキストでは、PreHook は移行前に実行されるフックであり、PostHook は移行後に実行されるフックです。
フックを追加するときは、フック CR が配置されている namespace、フックの名前、およびフックが PreHook か PostHook かを指定する必要があります。
PreHook を仮想マシンで実行するには、仮想マシンを起動し、SSH 経由で利用できるようにする必要があります。
PreHook の例:
kind: Plan apiVersion: forklift.konveyor.io/v1beta1 metadata: name: test namespace: konveyor-forklift spec: vms: - id: vm-2861 hooks: - hook: namespace: konveyor-forklift name: playbook step: PreHook
kind: Plan
apiVersion: forklift.konveyor.io/v1beta1
metadata:
name: test
namespace: konveyor-forklift
spec:
vms:
- id: vm-2861
hooks:
- hook:
namespace: konveyor-forklift
name: playbook
step: PreHook
Copy to clipboardCopied6.4.2. MTV API を使用した仮想マシン移行への Hook CR の追加
Migration Toolkit for Virtualization API を使用してコマンドラインから仮想マシンを移行する場合は、PreHook
または PostHook
Hook CR を追加できます。PreHook
は移行の前に、PostHook
は移行の後に実行されます。
k8s
モジュールを使用して、シークレットまたは configMap
に保存されている追加情報を取得できます。
たとえば、移行前に仮想マシンに cloud-init
をインストールし、ファイルを書き込むフック CR を作成できます。
手順
必要に応じて、仮想マシンの SSH 秘密鍵を使用してシークレットを作成します。既存のキーを使用するか、キーペアを生成し、仮想マシンに公開鍵をインストールして、シークレット内の秘密鍵を base64 でエンコードできます。
apiVersion: v1 data: key: VGhpcyB3YXMgZ2VuZXJhdGVkIHdpdGggc3NoLWtleWdlbiBwdXJlbHkgZm9yIHRoaXMgZXhhbXBsZS4KSXQgaXMgbm90IHVzZWQgYW55d2hlcmUuCi0tLS0tQkVHSU4gT1BFTlNTSCBQUklWQVRFIEtFWS0tLS0tCmIzQmxibk56YUMxclpYa3RkakVBQUFBQUJHNXZibVVBQUFBRWJtOXVaUUFBQUFBQUFBQUJBQUFCbHdBQUFBZHpjMmd0Y24KTmhBQUFBQXdFQUFRQUFBWUVBMzVTTFRReDBFVjdPTWJQR0FqcEsxK2JhQURTTVFuK1NBU2pyTGZLNWM5NGpHdzhDbnA4LwovRHErZHFBR1pxQkg2ZnAxYmVJM1BZZzVWVDk0RVdWQ2RrTjgwY3dEcEo0Z1R0NHFUQ1gzZUYvY2x5VXQyUC9zaTNjcnQ0CjBQdi9wVnZXU1U2TlhHaDJIZC93V0MwcGh5Z0RQOVc5SHRQSUF0OFpnZmV2ZnUwZHpraVl6OHNVaElWU2ZsRGpaNUFqcUcKUjV2TVVUaGlrczEvZVlCeTdiMkFFSEdzYU8xN3NFbWNiYUlHUHZuUFVwWmQrdjkyYU1JdWZoYjhLZkFSbzZ3Ty9ISW1VbQovdDdHWFBJUmxBMUhSV0p1U05odTQzZS9DY3ZYd3Z6RnZrdE9kYXlEQzBMTklHMkpVaURlNWd0UUQ1WHZXc1p3MHQvbEs1CklacjFrZXZRNUJsYWNISmViV1ZNYUQvdllpdFdhSFo4OEF1Y0czaGh2bjkrOGNSTGhNVExiVlFSMWh2UVpBL1JtQXN3eE0KT3VJSmRaUmtxTThLZlF4Z28zQThRNGJhQW1VbnpvM3Zwa0FWdC9uaGtIOTRaRE5rV2U2RlRhdThONStyYTJCZkdjZVA4VApvbjFEeTBLRlpaUlpCREVVRVc0eHdTYUVOYXQ3c2RDNnhpL1d5OURaQUFBRm1NRFBXeDdBejFzZUFBQUFCM056YUMxeWMyCkVBQUFHQkFOK1VpMDBNZEJGZXpqR3p4Z0k2U3RmbTJnQTBqRUova2dFbzZ5M3l1WFBlSXhzUEFwNmZQL3c2dm5hZ0JtYWcKUituNmRXM2lOejJJT1ZVL2VCRmxRblpEZk5ITUE2U2VJRTdlS2t3bDkzaGYzSmNsTGRqLzdJdDNLN2VORDcvNlZiMWtsTwpqVnhvZGgzZjhGZ3RLWWNvQXovVnZSN1R5QUxmR1lIM3IzN3RIYzVJbU0vTEZJU0ZVbjVRNDJlUUk2aGtlYnpGRTRZcExOCmYzbUFjdTI5Z0JCeHJHanRlN0JKbkcyaUJqNzV6MUtXWGZyL2RtakNMbjRXL0Nud0VhT3NEdnh5SmxKdjdleGx6eUVaUU4KUjBWaWJrallidU4zdnduTDE4TDh4YjVMVG5Xc2d3dEN6U0J0aVZJZzN1WUxVQStWNzFyR2NOTGY1U3VTR2E5WkhyME9RWgpXbkJ5WG0xbFRHZy83MklyVm1oMmZQQUxuQnQ0WWI1L2Z2SEVTNFRFeTIxVUVkWWIwR1FQMFpnTE1NVERyaUNYV1VaS2pQCkNuME1ZS053UEVPRzJnSmxKODZONzZaQUZiZjU0WkIvZUdRelpGbnVoVTJydkRlZnEydGdYeG5Iai9FNko5UTh0Q2hXV1UKV1FReEZCRnVNY0VtaERXcmU3SFF1c1l2MXN2UTJRQUFBQU1CQUFFQUFBR0JBSlZtZklNNjdDQmpXcU9KdnFua2EvakRrUwo4TDdpSE5mekg1TnRZWVdPWmRMTlk2L0lRa1pDeFcwTWtSKzlUK0M3QUZKZzBNV2Q5ck5PeUxJZDkxNjZoOVJsNG0xdFJjCnViZ1o2dWZCZ3hGVDlXS21mSEdCNm4zelh5b2pQOEFJTnR6ODVpaUVHVXFFRWtVRVdMd0RGSmdvcFllQ3l1VmZ2ZE92MUgKRm1WWmEwNVo0b3NQNkNENXVmc2djQ1RYQTR6VnZ5ZHVCYkxqdHN5RjdYZjNUdjZUQ1QxU0swZHErQk1OOXRvb0RZaXpwagpzbDh6NzlybXp3eUFyWFlVcnFUUkpsNmpwRkNrWHJLcy9LeG96MHhhbXlMY2RORk9hWE51LzlnTkpjRERsV2hPcFRqNHk4CkpkNXBuV1Jueis1RHJLRFdhY0loUW1CMUxVd2ZLWmQwbVFxaUpzMUMxcXZVUmlKOGExaThKUTI4bHFuWTFRRk9wbk13emcKWEpla2FndThpT1ExRFJlQkhaM0NkcVJUYnY3bVJZSGxramx0dXJmZGc4M3hvM0ErZ1JSR001eUVOcW5xSkplQjhJQVB5UwptMFp0dGdqbHNqNTJ2K1B1NmExMHoxZndKK1VML2N6dTRKeEpOYlp6WTFIMnpLODJBaVI1T3JYNmx2aUEvSWFSRVcwUUFBCkFNQndVeUJpcUc5bEZCUnltL2UvU1VORVMzdHpicUZNdTdIcy84WTV5SnAxKzR6OXUxNGtJR2ttV0Y5eE5HT3hrY3V0cWwKeHVUcndMbjFUaFNQTHQrTjUwTGhVdzR4ZjBhNUxqemdPbklPU0FRbm5HY1Nxa0dTRDlMR21obGE2WmpydFBHY29lQ3JHdAo5M1Vvcmx5YkxNRzFFRFAxWmpKS1RaZzl6OUMwdDlTTGd3ei9DbFhydW9UNXNQVUdKWnUrbHlIZXpSTDRtcHl6OEZMcnlOCkdNci9leVM5bWdISjNVVkZEYjNIZ3BaK1E1SUdBRU5rZVZEcHIwMGhCZXZndGd6YWtBQUFEQkFQVXQ1RitoMnBVby94V1YKenRkcVQvMzA4dFB5MXVMMU1lWFoydEJPQmRwSDJyd0JzdWt0aTIySGtWZUZXQjJFdUlFUXppMzY3MGc1UGdxR1p4Vng4dQpobEE0Rkg4ZXN1NTNQckZqVW9EeFJhb3d3WXBFcFh5Y2pnNUE1MStwR1VQcWljWjB0YjliaWlhc3BWWXZhWW5sdGlnVG5iClN0UExMY29nemNiL0dGcVYyaXlzc3lwTlMwKzBNRTUxcEtxWGNaS2swbi8vVHpZWWs4TW8vZzRsQ3pmUEZQUlZrVVM5blIKWU1pQzRlcEk0TERmbVdnM0xLQ2N1Zk85all3aWgwYlFBQUFNRUE2WEtldDhEMHNvc0puZVh5WFZGd0dyVyszNlhBVGRQTwpMWDdjaStjYzFoOGV1eHdYQWx3aTJJNFhxSmJBVjBsVEhuVGEycXN3Uy9RQlpJUUJWSkZlVjVyS1daZTc4R2F3d1pWTFZNCldETmNwdFFyRTFaM2pGNS9TdUVzdlVxSDE0Tkc5RUFXWG1iUkNzelE0Vlk3NzQrSi9sTFkvMnlDT1diNzlLYTJ5OGxvYUoKVXczWWVtSld3blp2R3hKNldsL3BmQ2xYN3lEVXlXUktLdGl0cWNjbmpCWVkyRE1tZURwdURDYy9ZdDZDc3dLRmRkMkJ1UwpGZGt5cDlZY3VMaDlLZEFBQUFIR3BoYzI5dVFFRlVMVGd3TWxVdWJXOXVkR3hsYjI0dWFXNTBjbUVCQWdNRUJRWT0KLS0tLS1FTkQgT1BFTlNTSCBQUklWQVRFIEtFWS0tLS0tCgo= kind: Secret metadata: name: ssh-credentials namespace: konveyor-forklift type: Opaque
Copy to clipboardCopiedapiVersion: v1 data: key: VGhpcyB3YXMgZ2VuZXJhdGVkIHdpdGggc3NoLWtleWdlbiBwdXJlbHkgZm9yIHRoaXMgZXhhbXBsZS4KSXQgaXMgbm90IHVzZWQgYW55d2hlcmUuCi0tLS0tQkVHSU4gT1BFTlNTSCBQUklWQVRFIEtFWS0tLS0tCmIzQmxibk56YUMxclpYa3RkakVBQUFBQUJHNXZibVVBQUFBRWJtOXVaUUFBQUFBQUFBQUJBQUFCbHdBQUFBZHpjMmd0Y24KTmhBQUFBQXdFQUFRQUFBWUVBMzVTTFRReDBFVjdPTWJQR0FqcEsxK2JhQURTTVFuK1NBU2pyTGZLNWM5NGpHdzhDbnA4LwovRHErZHFBR1pxQkg2ZnAxYmVJM1BZZzVWVDk0RVdWQ2RrTjgwY3dEcEo0Z1R0NHFUQ1gzZUYvY2x5VXQyUC9zaTNjcnQ0CjBQdi9wVnZXU1U2TlhHaDJIZC93V0MwcGh5Z0RQOVc5SHRQSUF0OFpnZmV2ZnUwZHpraVl6OHNVaElWU2ZsRGpaNUFqcUcKUjV2TVVUaGlrczEvZVlCeTdiMkFFSEdzYU8xN3NFbWNiYUlHUHZuUFVwWmQrdjkyYU1JdWZoYjhLZkFSbzZ3Ty9ISW1VbQovdDdHWFBJUmxBMUhSV0p1U05odTQzZS9DY3ZYd3Z6RnZrdE9kYXlEQzBMTklHMkpVaURlNWd0UUQ1WHZXc1p3MHQvbEs1CklacjFrZXZRNUJsYWNISmViV1ZNYUQvdllpdFdhSFo4OEF1Y0czaGh2bjkrOGNSTGhNVExiVlFSMWh2UVpBL1JtQXN3eE0KT3VJSmRaUmtxTThLZlF4Z28zQThRNGJhQW1VbnpvM3Zwa0FWdC9uaGtIOTRaRE5rV2U2RlRhdThONStyYTJCZkdjZVA4VApvbjFEeTBLRlpaUlpCREVVRVc0eHdTYUVOYXQ3c2RDNnhpL1d5OURaQUFBRm1NRFBXeDdBejFzZUFBQUFCM056YUMxeWMyCkVBQUFHQkFOK1VpMDBNZEJGZXpqR3p4Z0k2U3RmbTJnQTBqRUova2dFbzZ5M3l1WFBlSXhzUEFwNmZQL3c2dm5hZ0JtYWcKUituNmRXM2lOejJJT1ZVL2VCRmxRblpEZk5ITUE2U2VJRTdlS2t3bDkzaGYzSmNsTGRqLzdJdDNLN2VORDcvNlZiMWtsTwpqVnhvZGgzZjhGZ3RLWWNvQXovVnZSN1R5QUxmR1lIM3IzN3RIYzVJbU0vTEZJU0ZVbjVRNDJlUUk2aGtlYnpGRTRZcExOCmYzbUFjdTI5Z0JCeHJHanRlN0JKbkcyaUJqNzV6MUtXWGZyL2RtakNMbjRXL0Nud0VhT3NEdnh5SmxKdjdleGx6eUVaUU4KUjBWaWJrallidU4zdnduTDE4TDh4YjVMVG5Xc2d3dEN6U0J0aVZJZzN1WUxVQStWNzFyR2NOTGY1U3VTR2E5WkhyME9RWgpXbkJ5WG0xbFRHZy83MklyVm1oMmZQQUxuQnQ0WWI1L2Z2SEVTNFRFeTIxVUVkWWIwR1FQMFpnTE1NVERyaUNYV1VaS2pQCkNuME1ZS053UEVPRzJnSmxKODZONzZaQUZiZjU0WkIvZUdRelpGbnVoVTJydkRlZnEydGdYeG5Iai9FNko5UTh0Q2hXV1UKV1FReEZCRnVNY0VtaERXcmU3SFF1c1l2MXN2UTJRQUFBQU1CQUFFQUFBR0JBSlZtZklNNjdDQmpXcU9KdnFua2EvakRrUwo4TDdpSE5mekg1TnRZWVdPWmRMTlk2L0lRa1pDeFcwTWtSKzlUK0M3QUZKZzBNV2Q5ck5PeUxJZDkxNjZoOVJsNG0xdFJjCnViZ1o2dWZCZ3hGVDlXS21mSEdCNm4zelh5b2pQOEFJTnR6ODVpaUVHVXFFRWtVRVdMd0RGSmdvcFllQ3l1VmZ2ZE92MUgKRm1WWmEwNVo0b3NQNkNENXVmc2djQ1RYQTR6VnZ5ZHVCYkxqdHN5RjdYZjNUdjZUQ1QxU0swZHErQk1OOXRvb0RZaXpwagpzbDh6NzlybXp3eUFyWFlVcnFUUkpsNmpwRkNrWHJLcy9LeG96MHhhbXlMY2RORk9hWE51LzlnTkpjRERsV2hPcFRqNHk4CkpkNXBuV1Jueis1RHJLRFdhY0loUW1CMUxVd2ZLWmQwbVFxaUpzMUMxcXZVUmlKOGExaThKUTI4bHFuWTFRRk9wbk13emcKWEpla2FndThpT1ExRFJlQkhaM0NkcVJUYnY3bVJZSGxramx0dXJmZGc4M3hvM0ErZ1JSR001eUVOcW5xSkplQjhJQVB5UwptMFp0dGdqbHNqNTJ2K1B1NmExMHoxZndKK1VML2N6dTRKeEpOYlp6WTFIMnpLODJBaVI1T3JYNmx2aUEvSWFSRVcwUUFBCkFNQndVeUJpcUc5bEZCUnltL2UvU1VORVMzdHpicUZNdTdIcy84WTV5SnAxKzR6OXUxNGtJR2ttV0Y5eE5HT3hrY3V0cWwKeHVUcndMbjFUaFNQTHQrTjUwTGhVdzR4ZjBhNUxqemdPbklPU0FRbm5HY1Nxa0dTRDlMR21obGE2WmpydFBHY29lQ3JHdAo5M1Vvcmx5YkxNRzFFRFAxWmpKS1RaZzl6OUMwdDlTTGd3ei9DbFhydW9UNXNQVUdKWnUrbHlIZXpSTDRtcHl6OEZMcnlOCkdNci9leVM5bWdISjNVVkZEYjNIZ3BaK1E1SUdBRU5rZVZEcHIwMGhCZXZndGd6YWtBQUFEQkFQVXQ1RitoMnBVby94V1YKenRkcVQvMzA4dFB5MXVMMU1lWFoydEJPQmRwSDJyd0JzdWt0aTIySGtWZUZXQjJFdUlFUXppMzY3MGc1UGdxR1p4Vng4dQpobEE0Rkg4ZXN1NTNQckZqVW9EeFJhb3d3WXBFcFh5Y2pnNUE1MStwR1VQcWljWjB0YjliaWlhc3BWWXZhWW5sdGlnVG5iClN0UExMY29nemNiL0dGcVYyaXlzc3lwTlMwKzBNRTUxcEtxWGNaS2swbi8vVHpZWWs4TW8vZzRsQ3pmUEZQUlZrVVM5blIKWU1pQzRlcEk0TERmbVdnM0xLQ2N1Zk85all3aWgwYlFBQUFNRUE2WEtldDhEMHNvc0puZVh5WFZGd0dyVyszNlhBVGRQTwpMWDdjaStjYzFoOGV1eHdYQWx3aTJJNFhxSmJBVjBsVEhuVGEycXN3Uy9RQlpJUUJWSkZlVjVyS1daZTc4R2F3d1pWTFZNCldETmNwdFFyRTFaM2pGNS9TdUVzdlVxSDE0Tkc5RUFXWG1iUkNzelE0Vlk3NzQrSi9sTFkvMnlDT1diNzlLYTJ5OGxvYUoKVXczWWVtSld3blp2R3hKNldsL3BmQ2xYN3lEVXlXUktLdGl0cWNjbmpCWVkyRE1tZURwdURDYy9ZdDZDc3dLRmRkMkJ1UwpGZGt5cDlZY3VMaDlLZEFBQUFIR3BoYzI5dVFFRlVMVGd3TWxVdWJXOXVkR3hsYjI0dWFXNTBjbUVCQWdNRUJRWT0KLS0tLS1FTkQgT1BFTlNTSCBQUklWQVRFIEtFWS0tLS0tCgo= kind: Secret metadata: name: ssh-credentials namespace: konveyor-forklift type: Opaque
ファイルを連結し、それを base64 にパイプして Playbook をエンコードします。例:
cat playbook.yml | base64 -w0
Copy to clipboardCopied$ cat playbook.yml | base64 -w0
注記以下のドキュメントを使用して Playbook をエンコードすることもできます。
cat << EOF | base64 -w0 - hosts: localhost tasks: - debug: msg: test EOF
Copy to clipboardCopied$ cat << EOF | base64 -w0 - hosts: localhost tasks: - debug: msg: test EOF
Hook CR を作成します。
apiVersion: forklift.konveyor.io/v1beta1 kind: Hook metadata: name: playbook namespace: konveyor-forklift spec: image: registry.redhat.io/rhmtc/openshift-migration-hook-runner-rhel8:v1.8.2-2 playbook: LSBuYW1lOiBNYWluCiAgaG9zdHM6IGxvY2FsaG9zdAogIHRhc2tzOgogIC0gbmFtZTogTG9hZCBQbGFuCiAgICBpbmNsdWRlX3ZhcnM6CiAgICAgIGZpbGU6IHBsYW4ueW1sCiAgICAgIG5hbWU6IHBsYW4KCiAgLSBuYW1lOiBMb2FkIFdvcmtsb2FkCiAgICBpbmNsdWRlX3ZhcnM6CiAgICAgIGZpbGU6IHdvcmtsb2FkLnltbAogICAgICBuYW1lOiB3b3JrbG9hZAoKICAtIG5hbWU6IAogICAgZ2V0ZW50OgogICAgICBkYXRhYmFzZTogcGFzc3dkCiAgICAgIGtleTogInt7IGFuc2libGVfdXNlcl9pZCB9fSIKICAgICAgc3BsaXQ6ICc6JwoKICAtIG5hbWU6IEVuc3VyZSBTU0ggZGlyZWN0b3J5IGV4aXN0cwogICAgZmlsZToKICAgICAgcGF0aDogfi8uc3NoCiAgICAgIHN0YXRlOiBkaXJlY3RvcnkKICAgICAgbW9kZTogMDc1MAogICAgZW52aXJvbm1lbnQ6CiAgICAgIEhPTUU6ICJ7eyBhbnNpYmxlX2ZhY3RzLmdldGVudF9wYXNzd2RbYW5zaWJsZV91c2VyX2lkXVs0XSB9fSIKCiAgLSBrOHNfaW5mbzoKICAgICAgYXBpX3ZlcnNpb246IHYxCiAgICAgIGtpbmQ6IFNlY3JldAogICAgICBuYW1lOiBzc2gtY3JlZGVudGlhbHMKICAgICAgbmFtZXNwYWNlOiBrb252ZXlvci1mb3JrbGlmdAogICAgcmVnaXN0ZXI6IHNzaF9jcmVkZW50aWFscwoKICAtIG5hbWU6IENyZWF0ZSBTU0gga2V5CiAgICBjb3B5OgogICAgICBkZXN0OiB+Ly5zc2gvaWRfcnNhCiAgICAgIGNvbnRlbnQ6ICJ7eyBzc2hfY3JlZGVudGlhbHMucmVzb3VyY2VzWzBdLmRhdGEua2V5IHwgYjY0ZGVjb2RlIH19IgogICAgICBtb2RlOiAwNjAwCgogIC0gYWRkX2hvc3Q6CiAgICAgIG5hbWU6ICJ7eyB3b3JrbG9hZC52bS5pcGFkZHJlc3MgfX0iCiAgICAgIGFuc2libGVfdXNlcjogcm9vdAogICAgICBncm91cHM6IHZtcwoKLSBob3N0czogdm1zCiAgdGFza3M6CiAgLSBuYW1lOiBJbnN0YWxsIGNsb3VkLWluaXQKICAgIGRuZjoKICAgICAgbmFtZToKICAgICAgLSBjbG91ZC1pbml0CiAgICAgIHN0YXRlOiBsYXRlc3QKCiAgLSBuYW1lOiBDcmVhdGUgVGVzdCBGaWxlCiAgICBjb3B5OgogICAgICBkZXN0OiAvdGVzdC50eHQKICAgICAgY29udGVudDogIkhlbGxvIFdvcmxkIgogICAgICBtb2RlOiAwNjQ0Cg== serviceAccount: forklift-controller 1
Copy to clipboardCopiedapiVersion: forklift.konveyor.io/v1beta1 kind: Hook metadata: name: playbook namespace: konveyor-forklift spec: image: registry.redhat.io/rhmtc/openshift-migration-hook-runner-rhel8:v1.8.2-2 playbook: LSBuYW1lOiBNYWluCiAgaG9zdHM6IGxvY2FsaG9zdAogIHRhc2tzOgogIC0gbmFtZTogTG9hZCBQbGFuCiAgICBpbmNsdWRlX3ZhcnM6CiAgICAgIGZpbGU6IHBsYW4ueW1sCiAgICAgIG5hbWU6IHBsYW4KCiAgLSBuYW1lOiBMb2FkIFdvcmtsb2FkCiAgICBpbmNsdWRlX3ZhcnM6CiAgICAgIGZpbGU6IHdvcmtsb2FkLnltbAogICAgICBuYW1lOiB3b3JrbG9hZAoKICAtIG5hbWU6IAogICAgZ2V0ZW50OgogICAgICBkYXRhYmFzZTogcGFzc3dkCiAgICAgIGtleTogInt7IGFuc2libGVfdXNlcl9pZCB9fSIKICAgICAgc3BsaXQ6ICc6JwoKICAtIG5hbWU6IEVuc3VyZSBTU0ggZGlyZWN0b3J5IGV4aXN0cwogICAgZmlsZToKICAgICAgcGF0aDogfi8uc3NoCiAgICAgIHN0YXRlOiBkaXJlY3RvcnkKICAgICAgbW9kZTogMDc1MAogICAgZW52aXJvbm1lbnQ6CiAgICAgIEhPTUU6ICJ7eyBhbnNpYmxlX2ZhY3RzLmdldGVudF9wYXNzd2RbYW5zaWJsZV91c2VyX2lkXVs0XSB9fSIKCiAgLSBrOHNfaW5mbzoKICAgICAgYXBpX3ZlcnNpb246IHYxCiAgICAgIGtpbmQ6IFNlY3JldAogICAgICBuYW1lOiBzc2gtY3JlZGVudGlhbHMKICAgICAgbmFtZXNwYWNlOiBrb252ZXlvci1mb3JrbGlmdAogICAgcmVnaXN0ZXI6IHNzaF9jcmVkZW50aWFscwoKICAtIG5hbWU6IENyZWF0ZSBTU0gga2V5CiAgICBjb3B5OgogICAgICBkZXN0OiB+Ly5zc2gvaWRfcnNhCiAgICAgIGNvbnRlbnQ6ICJ7eyBzc2hfY3JlZGVudGlhbHMucmVzb3VyY2VzWzBdLmRhdGEua2V5IHwgYjY0ZGVjb2RlIH19IgogICAgICBtb2RlOiAwNjAwCgogIC0gYWRkX2hvc3Q6CiAgICAgIG5hbWU6ICJ7eyB3b3JrbG9hZC52bS5pcGFkZHJlc3MgfX0iCiAgICAgIGFuc2libGVfdXNlcjogcm9vdAogICAgICBncm91cHM6IHZtcwoKLSBob3N0czogdm1zCiAgdGFza3M6CiAgLSBuYW1lOiBJbnN0YWxsIGNsb3VkLWluaXQKICAgIGRuZjoKICAgICAgbmFtZToKICAgICAgLSBjbG91ZC1pbml0CiAgICAgIHN0YXRlOiBsYXRlc3QKCiAgLSBuYW1lOiBDcmVhdGUgVGVzdCBGaWxlCiAgICBjb3B5OgogICAgICBkZXN0OiAvdGVzdC50eHQKICAgICAgY29udGVudDogIkhlbGxvIFdvcmxkIgogICAgICBtb2RlOiAwNjQ0Cg== serviceAccount: forklift-controller 1
- 1
- クラスター上のリソースへのアクセスを制御するために、フックを実行する
serviceAccount
を指定します。
注記アタッチされた Playbook をデコードするには、カスタム出力でリソースを取得して base64 にパイプします。以下に例を示します。
oc get -n konveyor-forklift hook playbook -o \ go-template='{{ .spec.playbook }}' | base64 -d
Copy to clipboardCopiedoc get -n konveyor-forklift hook playbook -o \ go-template='{{ .spec.playbook }}' | base64 -d
ここでエンコードされた Playbook は以下を実行します。
- name: Main hosts: localhost tasks: - name: Load Plan include_vars: file: plan.yml name: plan - name: Load Workload include_vars: file: workload.yml name: workload - name: getent: database: passwd key: "{{ ansible_user_id }}" split: ':' - name: Ensure SSH directory exists file: path: ~/.ssh state: directory mode: 0750 environment: HOME: "{{ ansible_facts.getent_passwd[ansible_user_id][4] }}" - k8s_info: api_version: v1 kind: Secret name: ssh-credentials namespace: konveyor-forklift register: ssh_credentials - name: Create SSH key copy: dest: ~/.ssh/id_rsa content: "{{ ssh_credentials.resources[0].data.key | b64decode }}" mode: 0600 - add_host: name: "{{ workload.vm.ipaddress }}" ansible_user: root groups: vms - hosts: vms tasks: - name: Install cloud-init dnf: name: - cloud-init state: latest - name: Create Test File copy: dest: /test.txt content: "Hello World" mode: 0644
Copy to clipboardCopied- name: Main hosts: localhost tasks: - name: Load Plan include_vars: file: plan.yml name: plan - name: Load Workload include_vars: file: workload.yml name: workload - name: getent: database: passwd key: "{{ ansible_user_id }}" split: ':' - name: Ensure SSH directory exists file: path: ~/.ssh state: directory mode: 0750 environment: HOME: "{{ ansible_facts.getent_passwd[ansible_user_id][4] }}" - k8s_info: api_version: v1 kind: Secret name: ssh-credentials namespace: konveyor-forklift register: ssh_credentials - name: Create SSH key copy: dest: ~/.ssh/id_rsa content: "{{ ssh_credentials.resources[0].data.key | b64decode }}" mode: 0600 - add_host: name: "{{ workload.vm.ipaddress }}" ansible_user: root groups: vms - hosts: vms tasks: - name: Install cloud-init dnf: name: - cloud-init state: latest - name: Create Test File copy: dest: /test.txt content: "Hello World" mode: 0644
フックを使用してプラン CR を作成します。
kind: Plan apiVersion: forklift.konveyor.io/v1beta1 metadata: name: test namespace: konveyor-forklift spec: map: network: namespace: "konveyor-forklift" name: "network" storage: namespace: "konveyor-forklift" name: "storage" provider: source: namespace: "konveyor-forklift" name: "boston" destination: namespace: "konveyor-forklift" name: host targetNamespace: "konveyor-forklift" vms: - id: vm-2861 hooks: - hook: namespace: konveyor-forklift name: playbook step: PreHook 1
Copy to clipboardCopiedkind: Plan apiVersion: forklift.konveyor.io/v1beta1 metadata: name: test namespace: konveyor-forklift spec: map: network: namespace: "konveyor-forklift" name: "network" storage: namespace: "konveyor-forklift" name: "storage" provider: source: namespace: "konveyor-forklift" name: "boston" destination: namespace: "konveyor-forklift" name: host targetNamespace: "konveyor-forklift" vms: - id: vm-2861 hooks: - hook: namespace: konveyor-forklift name: playbook step: PreHook 1
- 1
- オプションは、移行前にフックを実行する
PreHook
と、移行後にフックを実行するPostHook
です。
PreHook を仮想マシンで実行するには、仮想マシンを起動し、SSH 経由で利用できるようにする必要があります。
第7章 Migration Toolkit for Virtualization のアップグレード
Red Hat OpenShift Web コンソールを使用して、新しいバージョンをインストールすると、MTV Operator をアップグレードできます。
手順
- Red Hat OpenShift Web コンソールで、Operators → Installed Operators → Migration Toolkit for Virtualization Operator → Subscription をクリックします。
更新チャンネルを正しいリリースに変更します。
Red Hat OpenShift ドキュメントの 更新チャネルの変更 を参照してください。
Upgrade status が Up to date から Upgrade available に変わります。そうでない場合は、
CatalogSource
Pod を再起動します。-
カタログソース (例:
redhat-operators
) に注意してください。 コマンドラインで、カタログソース Pod を取得します。
oc get pod -n openshift-marketplace | grep <catalog_source>
Copy to clipboardCopied$ oc get pod -n openshift-marketplace | grep <catalog_source>
Pod を削除します。
oc delete pod -n openshift-marketplace <catalog_source_pod>
Copy to clipboardCopied$ oc delete pod -n openshift-marketplace <catalog_source_pod>
Upgrade status が Up to date から Upgrade available に変わります。
Subscriptions タブで Update approval を Automatic に設定すると、アップグレードが自動的に開始されます。
-
カタログソース (例:
Subscriptions タブで Update approval を Manual に設定すると、アップグレードが承認されます。
Red Hat OpenShift ドキュメントの 保留中のアップグレードの手動承認 を参照してください。
-
MTV 2.2 からアップグレードしており、VMware 移行元プロバイダーを定義している場合は、VDDK
init
イメージを追加して、VMware プロバイダーを編集します。そうしないと、更新によって VMware プロバイダーの状態がCritical
に変更になります。詳細は、VMSphere 移行元プロバイダーの追加 を参照してください。 -
MTV 2.2 の Red Hat OpenShift 移行先プロバイダーで NFS にマッピングした場合は、NFS ストレージプロファイルで
AccessModes
およびVolumeMode
パラメーターを編集します。そうしないと、アップグレードによって NFS マッピングが無効になります。詳細は、ストレージプロファイルのカスタマイズを参照してください。
第8章 Migration Toolkit for Virtualization のアンインストール
Red Hat OpenShift Web コンソールまたはコマンドラインインターフェイス (CLI) を使用して、Migration Toolkit for Virtualization (MTV) をアンインストールできます。
8.1. Red Hat OpenShift Web コンソールを使用した MTV のアンインストール
Red Hat OpenShift Web コンソールを使用して、openshift-mtv
プロジェクトとカスタムリソース定義 (CRD) を削除すると、Migration Toolkit for Virtualization (MTV) をアンインストールできます。
前提条件
-
cluster-admin
権限を持つユーザーとしてログインしている。
手順
- Home → Projects をクリックします。
- openshift-mtv プロジェクトを作成します。
-
プロジェクトの右側の Options メニュー
から Delete Project を選択します。
- Delete Project ペインで、プロジェクト名を入力し、Delete をクリックします。
- Administration → CustomResourceDefinitions をクリックします。
-
検索 フィールドに
forklift
を入力し、forklift.konveyor.io
グループで CRD を見つけます。 -
各 CRD の右側で、Options メニュー
から Delete CustomResourceDefinition を選択します。
8.2. コマンドラインインターフェイスからの MTV のアンインストール
openshift-mtv
プロジェクトおよび forklift.konveyor.io
カスタムリソース定義 (CRD) を削除して、コマンドラインインターフェイス (CLI) から Migration Toolkit for Virtualization (MTV) をアンインストールできます。
前提条件
-
cluster-admin
権限を持つユーザーとしてログインしている。
手順
プロジェクトを削除します。
oc delete project openshift-mtv
Copy to clipboardCopied$ oc delete project openshift-mtv
CRD を削除します。
oc get crd -o name | grep 'forklift' | xargs oc delete
Copy to clipboardCopied$ oc get crd -o name | grep 'forklift' | xargs oc delete
OAuthClient を削除します。
oc delete oauthclient/forklift-ui
Copy to clipboardCopied$ oc delete oauthclient/forklift-ui
第9章 MTV パフォーマンスに関する推奨事項
このセクションの目的は、テストで確認できた結果に基づいて、Migration Toolkit for Virtualization (MTV) を使用して仮想マシン (VM) を効率的かつ効果的に移行するための推奨事項を共有することです。
ここで提供されるデータは Red Hat Labs でのテストから収集されたもので、参考目的でのみ提供されています。
全体として、これらの数値は最良のシナリオを示すものと考えるべきです。
確認できた移行のパフォーマンスは、これらの結果と異なる場合があり、いくつかの要因に依存します。
9.1. 高速ストレージとネットワークの速度の確保
VMware 環境と Red Hat OpenShift (OCP) 環境の両方で、高速なストレージとネットワーク速度を確保します。
高速移行を実行するには、VMware がデータストアへの読み取りアクセスが高速でなければなりません。 VMware ESXi ホスト間のネットワークは高速で、10 GiB のネットワーク接続を確保し、ネットワークのボトルネックを回避する必要があります。
- VMware ネットワークを OCP Workers Interface ネットワーク環境に拡張します。
- 受信速度が ESXi データストアの読み取り速度と一致するように、VMware ネットワークが高スループット (10 ギガビットイーサネット) と高速ネットワークを提供することが重要です。
- 移行プロセスでは大量のネットワーク帯域幅が使用され、移行ネットワークが利用されることに注意してください。他のサービスがそのネットワークを利用する場合、それらのサービスとその移行率に影響を及ぼす可能性があります。
-
たとえば、OCP インターフェイスへのデータ転送に関連する各 ESXi ホストの
vmnic
からの平均ネットワーク転送速度は 200 - 325 MiB/秒でした。
9.2. データストアの読み取りの高速化および効率的でパフォーマンスの高い移行の確保
データストアの読み取り速度は合計転送時間に影響するため、ESXi データストアから ESXi ホストへの高速読み取りをできるようにすることが重要です。
数字での例: 単一の ESXi サーバーの vSphere エンドポイントと ESXi エンドポイントの両方の平均読み取り速度は 200 - 300 MiB/秒でした。複数の ESXi サーバーを使用すると、データストアの読み取り速度が向上します。
9.3. エンドポイントの種類
MTV 2.6 では、以下の vSphere プロバイダーオプションを使用できます。
- ESXi エンドポイント (ESXi からのインベントリーおよびディスク転送)、MTV 2.6 で導入
- vCenter Server エンドポイント。ESXi ホスト用のネットワークはありません (vCenter からのインベントリーおよびディスク転送)
- vCenter エンドポイント。ESXi ネットワークが利用できます (vCenter からのインベントリー、ESXi からのディスク転送)。
複数の ESXi ホストに登録されている多数の仮想マシンを転送する場合は、vCenter エンドポイントと ESXi ネットワークを使用することを推奨します。
vSphere 7.0 以降では、ESXi ホストは NBD トランスポートに使用するネットワークにラベルを付けることができます。 これは、目的の仮想ネットワークインターフェイスカード (NIC) に適切な vSphereBackupNFC
ラベルをタグ付けすることによって実現されます。 これが完了すると、ワーカーと ESXi ホストインターフェイスにアクセスできる限り、MTV は ESXi インターフェイスを利用して Openshift へのネットワーク転送を行うことができます。 これは、移行ユーザーが ESXi 認証情報にアクセスできない可能性があるにもかかわらず、移行に使用する ESXi インターフェイスを制御する必要がある場合に特に便利です。
詳細は、(MTV-1230) を参照してください。
NBD バックアップ用にインターフェイス vmk2
を指定する次の ESXi コマンドを使用できます。
esxcli network ip interface tag add -t vSphereBackupNFC -i vmk2
esxcli network ip interface tag add -t vSphereBackupNFC -i vmk2
Copy to clipboardCopied9.4. ESXi ホストの BIOS プロファイルと ESXi ホストの電源管理の高パフォーマンス設定
可能であれば、移行に使用されるホストが、パフォーマンスが最大の BIOS プロファイルに設定されていることを確認します。 vSphere 内で制御されるホスト電源管理を使用するホストでは、High Performance
が設定されていることを確認する必要があります。
テストの結果、BIOS とホスト電源管理の両方を適切に設定した状態で 10 個を超える仮想マシンを転送すると、移行によって平均データストア読み取り速度が 15 MiB 増加することがわかりました。
9.5. VMware ネットワークへの追加のネットワーク負荷回避
ESXi エンドポイントを使用するときに移行ネットワークを選択すると、VMware ネットワークのネットワーク負荷を軽減できます。
MTV は仮想化プロバイダーを組み込むことで、仮想マシンを OCP に移行する目的で、ESXi ホスト上でアクセス可能な特定のネットワークを選択できるようになります。 MTV UI の ESXi ホストからこの移行ネットワークを選択すると、選択したネットワークを ESXi エンドポイントとして使用して転送が実行されるようになります。
選択したネットワークが OCP インターフェイスに接続できること、移行に十分な帯域幅があること、およびネットワークインターフェイスが飽和していないようにすることがが不可欠です。
10GbE ネットワークなどの高速ネットワークを備えた環境では、データの移行時に発生するネットワークの負荷が、ESXi データストアの読み取り速度と同じくらいになると予想されます。
9.6. ESXi ホストごとの最大同時ディスク移行の制御
MAX_VM_INFLIGHT MTV
変数を設定して、ESXi ホストで対応できる同時仮想マシン転送の最大数を制御します。
MTV では、この変数を使用して同時実行性を制御できます。デフォルトでは 20 に設定されています。
MAX_VM_INFLIGHT
を設定するときは、ESXi ホストに必要な最大同時仮想マシン転送の数を考慮してください。 同時に転送する移行の種類を考慮することが重要です。ウォーム移行: スケジュールされた時間内に移行される実行中の仮想マシンの移行によって定義されます。
ウォーム移行では、スナップショットを使用して、ディスクの以前のスナップショット間の差異のみを比較して移行します。 スナップショット間の差異の移行は、実行中の仮想マシンから OpenShift への最終的な切り替えが行われる前に、特定の間隔で行われます。
MTV 2.6 では、特定のスナップショットの現在の移行アクティビティーや単一の仮想マシンに属するディスクの数に関係なく、MAX_VM_INFLIGHT
は仮想マシンごとに 1 つの転送スロットを予約します。 MAX_VM_INFLIGHT
によって設定された合計は、ESXi ホストごとに許可される同時仮想マシン転送の数を示すために使用されます。
例
-
MAX_VM_INFLIGHT = 20
で、プロバイダーに 2 つの ESXi ホストが定義されている場合、各ホストは 20 台の仮想マシンを転送できます。
9.7. 複数の仮想マシンを同時に移行場合の移行時間短縮
特定の ESXi ホストから複数の仮想マシンを移行する場合、複数の仮想マシンの同時移行を開始すると、移行時間が短縮されます。
テストでは、1 台のホストから 10 個の仮想マシン (それぞれ 35 GiB のデータを含み、合計サイズは 50 GiB) を移行する方が、同じ数の仮想マシンを 1 つずつ順番に移行するよりも大幅に高速であることが実証されました。
単一のホストから 10 台を超える仮想マシンへの同時移行を増やすことは可能ですが、大幅な改善は見られません。
例
- 1 台のディスク仮想マシンは 6 分、移行速度は 100 MiB/秒でした
- 10 枚の単一ディスク仮想マシンは 22 分、移行速度は 272 MiB/s でした
- 20 台の単一ディスクの仮想マシンは 42 分、移行速度は 284 MiB/s でした。
前述の例から、10 台の仮想マシンを同時に移行すると、同一の仮想マシンを順番に移行するよりも 3 倍高速になることがわかります。
10 台または 20 台の仮想マシンを同時に移行する場合の移行率はほぼ同じでした。
9.8. 複数のホストの使用時の移行時間短縮
移行に使用する ESXi ホスト間で均等に分散された登録済み仮想マシンが含まれるホストを複数使用すると、移行時間が短縮されます。
テストの結果、合計 50 G のデータのうちそれぞれ 35 GiB を含む 10 個以上の単一ディスク仮想マシンを転送する場合、追加のホストを使用すると移行時間を短縮できることが示されました。
例
- 1 台のホストを使用して、それぞれ 35 GiB のデータを含む 80 台の単一ディスク仮想マシンを移行するのに 2 時間 43 分、移行速度は 294 MiB/秒でした。
- 8 台の ESXi ホストを使用して、それぞれ 35 GiB のデータを含む 80 個の単一ディスク仮想マシンを移行するのに 41 分、移行速度は 1,173 MiB/秒でした。
前述の例から、8 台の ESXi ホストから 80 個の仮想マシン (各ホストから 10 個ずつ) を同時に移行すると、単一の ESXi ホストから同じ仮想マシンを実行するよりも 4 倍高速になることがわかります。
8 台を超える ESXi ホストから多数の仮想マシンを同時に移行すると、パフォーマンスが向上する可能性があります。ただし、テストされていないため、推奨されません。
9.9. 単一の大規模な移行計画と比較した複数の移行計画
1 つの移行計画で参照できるディスクの最大数は 500 です。詳細は (MTV-1203) を参照してください。
単一の移行計画で多数の仮想マシンを移行しようとすると、すべての移行が開始されるまでに時間がかかることがあります。 1 つの移行計画を複数の移行計画に分割することで、移行を同時に開始することが可能になります。
移行の比較:
-
1 つのプランで 8 台の ESXi ホストを使用する 500 個の仮想マシンで、
max_vm_inflight=100
を指定する場合、5 時間 10 分かかりました。 -
8 つのプランで 8 台の ESXi ホスト 8 台を使用する 800 個の仮想マシンで、
max_vm_inflight=100
を指定する場合、57 分かかりました。
テストの結果、1 つの大規模なプランを複数の中規模のプラン (例: プランごとに 100 台の仮想マシン) に分割すると、移行の合計時間を短縮できることが示されました。
9.10. テスト済みの最大値
- テスト済みの ESXi ホストの最大数: 8
- 1 つの移行プラン内の仮想マシンの最大数: 500
- 1 回のテストで移行した仮想マシンの最大数: 5000
- 同時に実行した移行プランの最大数: 40
- 移行した最大ディスクサイズ: 6 T ディスク (3 Tb のデータを含む)
- 移行した単一の仮想マシン上のディスクの最大数: 50
- 単一の ESXi サーバーでの単一のデータストアの最高読み取り速度: 312 MiB/秒
- 8 台の ESXi サーバーと 2 つのデータストアを使用した場合の最高マルチデータストア読み取り速度: 1,242 MiB/秒
- OpenShift ワーカーへの仮想 NIC 転送速度の最高値: 327 MiB/秒
- 単一ディスクの最大移行転送速度: 162 MiB/秒 (1.5 Tb の使用データの非同時移行を転送するときに確認できた速度)
- 単一の ESXi ホストからの複数の仮想マシン (単一ディスク) の最大コールド移行転送速度: 294 MiB/秒 (単一の ESXi から 30 台の仮想マシンを同時に移行、35/50 GiB 使用)
- 複数の ESXi ホストからの複数の仮想マシン (単一ディスク) の最大コールド移行転送速度: 1173 MB/秒 (8 台の ESXi サーバーから 80 台の仮想マシンを同時に移行、35/50 GiB 使用、各 ESXi から 10 台の仮想マシン)
パフォーマンスの詳細は、MTV パフォーマンス補足資料 を参照してください。
第10章 トラブルシューティング
このセクションでは、一般的な移行の問題をトラブルシューティングするための情報を提供します。
10.1. エラーメッセージ
このセクションでは、エラーメッセージと、その解決方法を説明します。
warm import retry limit reached
VMware 仮想マシン (VM) が、プレコピーの段階で変更ブロックのトラッキング (CBT) スナップショットの最大数 (28) に達した場合は、ウォーム移行時に warm import retry limit reached
エラーメッセージが表示されます。
この問題を解決するには、仮想マシンから CBT スナップショットの一部を削除して、移行計画を再起動します。
Unable to resize disk image to required size
ターゲットプロバイダーの仮想マシンがブロックストレージの EXT4 ファイルシステムで永続ボリュームを使用しているために移行が失敗すると、Unable to resize disk image to required size
エラーメッセージが表示されます。この問題は、CDI が想定するデフォルトのオーバーヘッドに root パーティション用に予約された場所が完全に含まれていないために発生します。
この問題を解決するには、CDI のファイルシステムのオーバーヘッドを 10% 以上に増やします。
10.2. must-gather ツールの使用
must-gather
ツールを使用して、MTV カスタムリソース (CR) のログおよび情報を収集できます。must-gather
データファイルをすべてのカスタマーケースに割り当てる必要があります。
フィルタリングオプションを使用して、特定の namespace、移行計画、または仮想マシンのデータを収集できます。
フィルターされた must-gather
コマンドで存在しないリソースを指定すると、アーカイブファイルは作成されません。
前提条件
-
cluster-admin
ロールを持つユーザーとして OpenShift Virtualization クラスターにログインしている。 -
Red Hat OpenShift CLI (
oc
) がインストールされている。
ログおよび CR 情報の収集
-
must-gather
データを保存するディレクトリーに移動します。 oc adm must-gather
コマンドを実行します。oc adm must-gather --image=registry.redhat.io/migration-toolkit-virtualization/mtv-must-gather-rhel8:2.6.7
Copy to clipboardCopied$ oc adm must-gather --image=registry.redhat.io/migration-toolkit-virtualization/mtv-must-gather-rhel8:2.6.7
データは
/must-gather/must-gather.tar.gz
として保存されます。このファイルを Red Hat カスタマーポータル で作成したサポートケースにアップロードできます。オプション:
oc adm must-gather
コマンドに以下のオプションを指定して実行し、フィルターされたデータを収集します。Namespace:
oc adm must-gather --image=registry.redhat.io/migration-toolkit-virtualization/mtv-must-gather-rhel8:2.6.7 \ -- NS=<namespace> /usr/bin/targeted
Copy to clipboardCopied$ oc adm must-gather --image=registry.redhat.io/migration-toolkit-virtualization/mtv-must-gather-rhel8:2.6.7 \ -- NS=<namespace> /usr/bin/targeted
移行計画:
oc adm must-gather --image=registry.redhat.io/migration-toolkit-virtualization/mtv-must-gather-rhel8:2.6.7 \ -- PLAN=<migration_plan> /usr/bin/targeted
Copy to clipboardCopied$ oc adm must-gather --image=registry.redhat.io/migration-toolkit-virtualization/mtv-must-gather-rhel8:2.6.7 \ -- PLAN=<migration_plan> /usr/bin/targeted
仮想マシン:
oc adm must-gather --image=registry.redhat.io/migration-toolkit-virtualization/mtv-must-gather-rhel8:2.6.7 \ -- VM=<vm_id> NS=<namespace> /usr/bin/targeted 1
Copy to clipboardCopied$ oc adm must-gather --image=registry.redhat.io/migration-toolkit-virtualization/mtv-must-gather-rhel8:2.6.7 \ -- VM=<vm_id> NS=<namespace> /usr/bin/targeted 1
- 1
Plan
CR に表示される仮想マシンの ID を指定します。
10.3. アーキテクチャー
このセクションでは、MTV カスタムリソース、サービス、およびワークフローを説明します。
10.3.1. MTV カスタムリソースおよびサービス
Migration Toolkit for Virtualization (MTV) は、Red Hat OpenShift Operator として提供されます。以下のカスタムリソース (CR) およびサービスを作成し、管理します。
MTV カスタムリソース
-
Provider
CR は、MTV がソースおよびターゲットプロバイダーに接続し、対話できるようにする属性を保存します。 -
NetworkMapping
CR は、ソースおよびターゲットプロバイダーのネットワークをマッピングします。 -
StorageMapping
CR は、ソースおよびターゲットプロバイダーのストレージをマッピングします。 -
Plan
CR には、同じ移行パラメーターと関連するネットワークおよびストレージマッピングを持つ仮想マシンのリストが含まれます。 Migration
CR は移行計画を実行します。一度に実行できる
Migration
CR は、移行計画ごとに 1 つのみです。単一のPlan
CR に複数のMigration
CR を作成できます。
MTV サービス
Inventory
サービスは以下のアクションを実行します。- 移行元プロバイダーおよびターゲットプロバイダーに接続します。
- マッピングおよび計画に関するローカルインベントリーを維持します。
- 仮想マシンの設定を保存します。
-
仮想マシンの設定の変更が検出されたら、
Validation
サービスを実行します。
-
Validation
サービスは、ルールを適用して移行の適合性を確認します。 Migration Controller
サービスは移行のオーケストレーションを行います。移行計画の作成時に、
Migration Controller
サービスは計画を検証し、ステータスラベルを追加します。計画の検証に失敗した場合には、計画のステータスはNot ready
となり、その計画を使用して移行を行うことができません。計画が検証をパスすると、計画のステータスはReady
となり、移行を実行するために使用できます。移行に成功すると、Migration Controller
サービスは計画のステータスをCompleted
に変更します。-
Populator Controller
サービスは、Volume Populator を使用して、ディスク転送を調整します。 -
Kubevirt Controller
およびContainerized Data Import (CDI) Controller
サービスは、ほとんどの技術操作を処理します。
10.3.2. 移行ワークフローの概要
ワークフローの概要では、ユーザーの観点から移行プロセスを示しています。
- 移行元プロバイダー、ターゲットプロバイダー、ネットワークマッピング、およびストレージマッピングを作成します。
以下のリソースを含む
Plan
カスタムリソース (CR) を作成します。- 移行元プロバイダー
- ターゲットプロバイダー (MTV がターゲットクラスターにインストールされていない場合)
- ネットワークマッピング
- ストレージマッピング
- 1 つ以上の仮想マシン (VM)
Plan
CR を参照するMigration
CR を作成して移行計画を実行します。何らかの理由ですべての仮想マシン移行できない場合は、すべての仮想マシンが移行されるまで、同じ
Plan
CR に対して複数のMigration
CR を作成できます。-
Plan
CR の仮想マシンごとに、Migration Controller
サービスは仮想マシン移行の進行状況をMigration
CR に記録します。 Plan
CR 内の各仮想マシンのデータ転送が完了すると、Migration Controller
サービスによってVirtualMachine
CR が作成されます。すべての仮想マシンが移行されると、
Migration Controller
サービスはPlan
CR のステータスをCompleted
に更新します。各ソース仮想マシンの電源状態は、移行後も維持されます。
10.3.3. 移行ワークフローの詳細
詳細な移行ワークフローを使用して、失敗した移行のトラブルシューティングを行うことができます。
ワークフローでは、以下の手順を説明します。
ウォームマイグレーションまたはリモート OpenShift クラスターへの移行:
Migration
カスタムリソース (CR) を作成して、移行計画を実行すると、Migration Controller
サービスはソース仮想マシンディスクごとにDataVolume
CR を作成します。各仮想マシンディスクで以下を実行します。
-
Containerized Data Importer (CDI) Controller
サービスは、DataVolume
CR で指定されるパラメーターに基づいて永続ボリューム要求 (PVC) を作成します。 -
StorageClass
に動的プロビジョナーがある場合、永続ボリューム (PV) はStorageClass
プロビジョナーによって動的にプロビジョニングされます。 -
CDI Controller
サービスはImporter
Pod を作成します。 Importer
Pod は仮想マシンディスクを PV にストリーミングします。仮想マシンディスクの転送後に、以下を実行します。
Migration Controller
サービスは、VMWare からのインポート時に、PVC が接続されたconversion
Pod を作成します。conversion
Pod はvirt-v2v
を実行して、ターゲット仮想マシンの PVC にデバイスドライバーをインストールし、設定します。-
Migration Controller
サービスは、PVC に接続されたソース仮想マシン (VM) ごとにVirtualMachine
CR を作成します。 仮想マシンがソース環境で実行されている場合は、
Migration Controller
が仮想マシンの電源を入れ、KubeVirt Controller
サービスがvirt-launcher
Pod とVirtualMachineInstance
CR を作成します。virt-launcher
Pod は、仮想マシンディスクとして割り当てられた PVC でQEMU-KVM
を実行します。
RHV または OpenStack からローカル OpenShift クラスターへのコールド移行:
Migration
カスタムリソース (CR) を作成して、移行計画を実行すると、Migration Controller
サービスはソース仮想マシンディスクごとにPersistentVolumeClaim
CR を作成し、ソースが RHV の場合はOvirtVolumePopulator
を作成し、ソースが OpenStack の場合はOpenstackVolumePopulator
CR を作成します。各仮想マシンディスクで以下を実行します。
-
Populator Controller
サービスは一時的な永続ボリューム要求 (PVC) を作成します。 StorageClass
に動的プロビジョナーがある場合、永続ボリューム (PV) はStorageClass
プロビジョナーによって動的にプロビジョニングされます。-
Migration Controller
サービスは、ダミー Pod を作成して、すべての PVC をバインドします。Pod の名前にはpvcinit
が含まれます。
-
-
Populator Controller
サービスは、populator
Pod を作成します。 populator
Pod は、ディスクデータを PV に転送します。仮想マシンディスクの転送後に、以下を実行します。
- 一時的な PVC は削除され、最初の PVC はデータを含む PV を指します。
-
Migration Controller
サービスは、PVC に接続されたソース仮想マシン (VM) ごとにVirtualMachine
CR を作成します。 仮想マシンがソース環境で実行されている場合は、
Migration Controller
が仮想マシンの電源を入れ、KubeVirt Controller
サービスがvirt-launcher
Pod とVirtualMachineInstance
CR を作成します。virt-launcher
Pod は、仮想マシンディスクとして割り当てられた PVC でQEMU-KVM
を実行します。
VMWare からローカル OpenShift クラスターへのコールドマイグレーション:
Migration
カスタムリソース (CR) を作成して、移行計画を実行すると、Migration Controller
サービスはソース仮想マシンディスクごとにDataVolume
CR を作成します。各仮想マシンディスクで以下を実行します。
-
Containerized Data Importer (CDI) Controller
サービスは、DataVolume
CR に指定されたパラメーターに基づいて、空の永続ボリューム要求 (PVC) を作成します。 -
StorageClass
に動的プロビジョナーがある場合、永続ボリューム (PV) はStorageClass
プロビジョナーによって動的にプロビジョニングされます。
すべての仮想マシンディスクの場合:
-
Migration Controller
サービスは、ダミー Pod を作成して、すべての PVC をバインドします。Pod の名前にはpvcinit
が含まれます。 -
Migration Controller
サービスは、すべての PVC のconversion
Pod を作成します。 conversion
Pod はvirt-v2v
を実行します。これにより、仮想マシンが KVM ハイパーバイザーに変換され、ディスクのデータが対応する PV に転送されます。仮想マシンディスクの転送後に、以下を実行します。
-
Migration Controller
サービスは、PVC に接続されたソース仮想マシン (VM) ごとにVirtualMachine
CR を作成します。 仮想マシンがソース環境で実行されている場合は、
Migration Controller
が仮想マシンの電源を入れ、KubeVirt Controller
サービスがvirt-launcher
Pod とVirtualMachineInstance
CR を作成します。virt-launcher
Pod は、仮想マシンディスクとして割り当てられた PVC でQEMU-KVM
を実行します。
10.4. ログとカスタムリソース
トラブルシューティングのためにログおよびカスタムリソース (CR) の情報をダウンロードできます。詳細は、詳細な移行ワークフロー を参照してください。
10.4.1. 収集されるログおよびカスタムリソース情報
Red Hat OpenShift Web コンソールまたはコマンドラインインターフェイス (CLI) を使用すると、以下のターゲットのログとカスタムリソース (CR) yaml
ファイルをダウンロードできます。
- 移行計画: Web コンソールまたは CLI。
- 仮想マシン: Web コンソールまたは CLI。
- namespace: CLI のみ。
must-gather
ツールは、以下のログおよび CR ファイルをアーカイブファイルで収集します。
CR:
-
DataVolume
CR: 移行された仮想マシンにマウントされているディスクを表します。 -
VirtualMachine
CR: 移行された仮想マシンを表します。 -
Plan
CR: 仮想マシンおよびストレージおよびネットワークマッピングを定義します。 -
Job
CR: オプション: 移行前のフック、移行後のフック、またはその両方を表します。
-
ログ:
-
importer
Pod: ディスクからデータへのボリューム変換ログ。importer
Pod の命名規則はimporter-<migration_plan>-<vm_id><5_char_id>
です。たとえば、importer-mig-plan-ed90dfc6-9a17-4a8btnfh
は、ed90dfc6-9a17-4a8
が省略された RHV 仮想マシン ID、btnfh
は生成された 5 文字の ID です。 -
conversion
Pod: 仮想マシンの変換ログ。conversion
Pod はvirt-v2v
を実行します。これは、仮想マシンの PVC にデバイスドライバーをインストールし、設定します。conversion
Pod の命名規則は<migration_plan>-<vm_id><5_char_id>
です。 -
virt-launcher
Pod: 仮想マシンランチャーログ。移行した仮想マシンの電源がオンになると、virt-launcher
Pod は仮想マシンディスクとして割り当てられた PVC でQEMU-KVM
を実行します。 -
forklift-controller
Pod: ログはmust-gather
コマンドで指定される移行計画、仮想マシン、または namespace に対してフィルター処理されます。 -
forklift-must-gather-api
Pod: ログはmust-gather
コマンドで指定される移行計画、仮想マシン、または namespace に対してフィルター処理されます。 hook-job
Pod: ログはフックジョブに対してフィルターされます。hook-job
の命名規則は、<migration_plan>-<vm_id><5_char_id>
(例:plan2j-vm-3696-posthook-4mx85
またはplan2j-vm-3696-prehook-mwqnl
) です。注記空または除外されたログファイルは、
must-gather
アーカイブファイルには含まれません。
-
VMware 移行計画の must-gather アーカイブ構造の例
must-gather └── namespaces ├── target-vm-ns │ ├── crs │ │ ├── datavolume │ │ │ ├── mig-plan-vm-7595-tkhdz.yaml │ │ │ ├── mig-plan-vm-7595-5qvqp.yaml │ │ │ └── mig-plan-vm-8325-xccfw.yaml │ │ └── virtualmachine │ │ ├── test-test-rhel8-2disks2nics.yaml │ │ └── test-x2019.yaml │ └── logs │ ├── importer-mig-plan-vm-7595-tkhdz │ │ └── current.log │ ├── importer-mig-plan-vm-7595-5qvqp │ │ └── current.log │ ├── importer-mig-plan-vm-8325-xccfw │ │ └── current.log │ ├── mig-plan-vm-7595-4glzd │ │ └── current.log │ └── mig-plan-vm-8325-4zw49 │ └── current.log └── openshift-mtv ├── crs │ └── plan │ └── mig-plan-cold.yaml └── logs ├── forklift-controller-67656d574-w74md │ └── current.log └── forklift-must-gather-api-89fc7f4b6-hlwb6 └── current.log
must-gather
└── namespaces
├── target-vm-ns
│ ├── crs
│ │ ├── datavolume
│ │ │ ├── mig-plan-vm-7595-tkhdz.yaml
│ │ │ ├── mig-plan-vm-7595-5qvqp.yaml
│ │ │ └── mig-plan-vm-8325-xccfw.yaml
│ │ └── virtualmachine
│ │ ├── test-test-rhel8-2disks2nics.yaml
│ │ └── test-x2019.yaml
│ └── logs
│ ├── importer-mig-plan-vm-7595-tkhdz
│ │ └── current.log
│ ├── importer-mig-plan-vm-7595-5qvqp
│ │ └── current.log
│ ├── importer-mig-plan-vm-8325-xccfw
│ │ └── current.log
│ ├── mig-plan-vm-7595-4glzd
│ │ └── current.log
│ └── mig-plan-vm-8325-4zw49
│ └── current.log
└── openshift-mtv
├── crs
│ └── plan
│ └── mig-plan-cold.yaml
└── logs
├── forklift-controller-67656d574-w74md
│ └── current.log
└── forklift-must-gather-api-89fc7f4b6-hlwb6
└── current.log
Copy to clipboardCopied10.4.2. Web コンソールからのログおよびカスタムリソース情報のダウンロード
Red Hat OpenShift Web コンソールを使用すると、完了、失敗、またはキャンセルされた移行計画、または移行された仮想マシン (VM) のカスタムリソース (CR) に関するログと情報をダウンロードできます。
手順
- Red Hat OpenShift Web コンソールで、Migration → Plans for virtualization をクリックします。
- 移行計画名の横にある Get logs をクリックします。
Get logs ウィンドウで Get logs をクリックします。
ログが収集されます。
Log collection complete
メッセージが表示されます。- Download logs をクリックしてアーカイブファイルをダウンロードします。
- 移行された仮想マシンのログをダウンロードするには、移行計画名をクリックして、仮想マシンの横にある Get logs をクリックします。
10.4.3. コマンドラインインターフェイスからのログおよびカスタムリソース情報へのアクセス
must-gather
ツールを使用して、コマンドラインインターフェイスからカスタムリソース (CR) のログおよび情報にアクセスできます。must-gather
データファイルをすべてのカスタマーケースに割り当てる必要があります。
フィルターオプションを使用して、特定の namespace、完了、失敗、またはキャンセルされた移行計画、移行した仮想マシン (VM) のデータを収集できます。
フィルターされた must-gather
コマンドで存在しないリソースを指定すると、アーカイブファイルは作成されません。
前提条件
-
cluster-admin
ロールを持つユーザーとして OpenShift Virtualization クラスターにログインしている。 -
Red Hat OpenShift CLI (
oc
) がインストールされている。
手順
-
must-gather
データを保存するディレクトリーに移動します。 oc adm must-gather
コマンドを実行します。oc adm must-gather --image=registry.redhat.io/migration-toolkit-virtualization/mtv-must-gather-rhel8:2.6.7
Copy to clipboardCopied$ oc adm must-gather --image=registry.redhat.io/migration-toolkit-virtualization/mtv-must-gather-rhel8:2.6.7
データは
/must-gather/must-gather.tar.gz
として保存されます。このファイルを Red Hat カスタマーポータル で作成したサポートケースにアップロードできます。オプション:
oc adm must-gather
コマンドに以下のオプションを指定して実行し、フィルターされたデータを収集します。Namespace:
oc adm must-gather --image=registry.redhat.io/migration-toolkit-virtualization/mtv-must-gather-rhel8:2.6.7 \ -- NS=<namespace> /usr/bin/targeted
Copy to clipboardCopied$ oc adm must-gather --image=registry.redhat.io/migration-toolkit-virtualization/mtv-must-gather-rhel8:2.6.7 \ -- NS=<namespace> /usr/bin/targeted
移行計画:
oc adm must-gather --image=registry.redhat.io/migration-toolkit-virtualization/mtv-must-gather-rhel8:2.6.7 \ -- PLAN=<migration_plan> /usr/bin/targeted
Copy to clipboardCopied$ oc adm must-gather --image=registry.redhat.io/migration-toolkit-virtualization/mtv-must-gather-rhel8:2.6.7 \ -- PLAN=<migration_plan> /usr/bin/targeted
仮想マシン:
oc adm must-gather --image=registry.redhat.io/migration-toolkit-virtualization/mtv-must-gather-rhel8:2.6.7 \ -- VM=<vm_name> NS=<namespace> /usr/bin/targeted 1
Copy to clipboardCopied$ oc adm must-gather --image=registry.redhat.io/migration-toolkit-virtualization/mtv-must-gather-rhel8:2.6.7 \ -- VM=<vm_name> NS=<namespace> /usr/bin/targeted 1
- 1
- 仮想マシン ID ではなく、
Plan
CR に表示される仮想マシンの名前を指定する必要があります。
第11章 関連情報
11.1. MTV パフォーマンスアドオン
ここで提供されるデータは Red Hat Labs でのテストから収集されたもので、参考目的でのみ提供されています。
全体として、これらの数値は最良のシナリオを示すものと考えるべきです。
確認できた移行のパフォーマンスは、これらの結果と異なる場合があり、いくつかの要因に依存します。
11.1.1. ESXi のパフォーマンス
単一の ESXi パフォーマンス
同じ ESXi ホストを使用して移行をテストします。
反復するたびに、合計仮想マシンが増加し、同時移行が期間に与える影響が表示されます。
結果は、合計仮想マシン (50 GiB ディスク、使用率 70%) が増加すると、移行時間がディスク数や使用率に比例することを示しています。
ESXi あたりの仮想マシンの最適な数は 10 です。
テストケースの説明 | MTV | VDDK | max_vm inflight | 移行タイプ | 合計所要時間 |
---|---|---|---|---|---|
コールド移行、10 台の仮想マシン、単一の ESXi、プライベートネットワーク [a] | 2.6 | 7.0.3 | 100 | コールド | 0:21:39 |
コールド移行、20 台の仮想マシン、単一の ESXi、プライベートネットワーク | 2.6 | 7.0.3 | 100 | コールド | 0:41:16 |
コールドマイグレーション、30 台の仮想マシン、単一の ESXi、プライベートネットワーク | 2.6 | 7.0.3 | 100 | コールド | 1:00:59 |
コールドマイグレーション、40 台の仮想マシン、単一の ESXi、プライベートネットワーク | 2.6 | 7.0.3 | 100 | コールド | 1:23:02 |
コールド移行、50 仮想マシン、単一の ESXi、プライベートネットワーク | 2.6 | 7.0.3 | 100 | コールド | 1:46:24 |
コールドマイグレーション、80 台の仮想マシン、単一の ESXi、プライベートネットワーク | 2.6 | 7.0.3 | 100 | コールド | 2:42:49 |
コールドマイグレーション、100 台の仮想マシン、単一の ESXi、プライベートネットワーク | 2.6 | 7.0.3 | 100 | コールド | 3:25:15 |
[a]
プライベートネットワークとは、管理ネットワーク以外のネットワークを指します。
|
複数の ESXi ホストと単一のデータストア
反復するたびに ESXi ホストの数が増加し、ESXi ホストの数を増やすと移行時間が短縮されることが示されました (50 GiB ディスク、使用率 70%)。
テストケースの説明 | MTV | VDDK | Max_vm inflight | 移行タイプ | 合計所要時間 |
---|---|---|---|---|---|
コールドマイグレーション、100 台の仮想マシン、単一の ESXi、プライベートネットワーク [a] | 2.6 | 7.0.3 | 100 | コールド | 3:25:15 |
コールド移行、100 台の仮想マシン、4 台の ESX (ESX あたり 25 台の仮想マシン)、プライベートネットワーク | 2.6 | 7.0.3 | 100 | コールド | 1:22:27 |
コールド移行、100 台の仮想マシン、5 台の ESX (ESX あたり 20 台の仮想マシン)、プライベートネットワーク、1 つのデータストア | 2.6 | 7.0.3 | 100 | コールド | 1:04:57 |
[a]
プライベートネットワークとは、管理ネットワーク以外のネットワークを指します。
|
11.1.2. 異なる移行ネットワークパフォーマンス
反復するたびに、移行ネットワーク
は、移行に最も高速なネットワークが見つけるために プロバイダー を使用して変更されました。
その結果、すべてのインターフェイスとネットワーク速度が同じである場合、管理ネットワークを使用した場合と管理ネットワークを使用しない場合との間でパフォーマンスが低下しないことを示しています。
テストケースの説明 | MTV | VDDK | max_vm inflight | 移行タイプ | 合計所要時間 |
---|---|---|---|---|---|
コールドマイグレーション、10 台の仮想マシン、単一の ESXi、MGMT ネットワーク | 2.6 | 7.0.3 | 100 | コールド | 0:21:30 |
コールド移行、10 台の仮想マシン、単一の ESXi、プライベートネットワーク [a] | 2.6 | 7.0.3 | 20 | コールド | 0:21:20 |
コールド移行、10 台の仮想マシン、単一の ESXi、デフォルトネットワーク | 2.6.2 | 7.0.3 | 20 | コールド | 0:21:30 |
[a]
プライベートネットワークとは、管理ネットワーク以外のネットワークを指します。
|