VMware ESXi から Red Hat OpenShift Virtualization への VM の移行
Shift Toolkit を使用して VM を準備し、ディスク形式を変換し、ターゲット環境を構成することで、VMware ESXi から Red Hat OpenShift Virtualization に VM を移行します。
Shift Toolkit は、ディスク形式の変換と移行先環境でのネットワーク再構成を通じて、仮想化プラットフォーム間での VM の移行を可能にします。
開始する前に
移行を開始する前に、次の前提条件が満たされていることを確認してください。
-
次のオペレーターがインストールされた OpenShift Cluster エンドポイント:
-
OpenShift Virtualization オペレーター
-
NetApp Trident CSI ドライバー
-
ニューメキシコ州
-
-
適切なバックエンドとストレージクラスで構成されたNetApp Trident CSI
-
適切なVLANで構成されたNodeNetworkConfigurationPolicyとNetworkAttachmentDefinitions(NAD)
-
OpenShift クラスターは、現在のホスト ファイル エントリを使用してネットワークに到達可能です。
-
クラスターの管理者レベルの権限
-
Kubeconfigファイルがダウンロードされました
-
VMDKは複数の方法で構成できます。すべてのVMDKを単一のNFSv3ボリューム上に配置することができ(ストレージ vMotion の必要性を排除)、各VMDKを個別のボリュームに配置することも、複数のVMDKをボリューム内のqtreeにまとめることもできます。
Shift Toolkitはレイアウトを自動的に検出し、適切なクローン作成方法とNASストレージドライバを選択します。 VMDK が qtree 内に配置されている場合、Shift Toolkit は ONTAP-NAS-economy ドライバを使用します。 -
VMwareツールはゲストVM上で実行されています
-
移行対象のVMは準備のため実行状態にあります
-
移行を開始する前にVMの電源をオフにする必要があります
-
VMware Tools の削除は、VM の電源がオンになると、対象のハイパーバイザーで実行されます。
-
ONTAP-NAS: VMDKはすべて単一のボリュームに配置することも、各VMDKを個別のボリュームに配置することもできます。VMの選択は、データストアレベルまたはVMレベルで行うことができます。
-
ONTAP-NAS-Economy: VMDKは単一のボリューム上に存在する必要があり、ボリューム名は以下の命名規則に準拠する必要があります:
trident_qtree_pool_<storage-prefix>_<10 random characters>。リソースグループ内での仮想マシンの選択は、データストアレベルでのみ可能です。ONTAP-NAS-Economyの場合、上記で指定された命名規則のボリュームが事前に存在し、VMware vCenter 上のデータストアとして使用されている必要があります。これは、VMをこの特定のデータストアにStorage vMotionedするか、既存のデータストアの名前を命名規則に一致するように変更する必要があることを意味します: trident_qtree_pool_<storage-prefix>_<10 random characters>。ONTAP-NAS-Economy の場合、Trident バックエンド構成(TBC)にはパラメータ `Deny New Volume Pools`を `true`に設定する必要があります。使用するストレージクラスも、storagePoolsを `tbc name: <aggr name where the trident_qtree_pool_<storage-prefix>_<10 random characters> resides>`に制限する必要があります。 ONTAP-NAS-Economy ドライバの TBC 構成例
apiVersion: v1 kind: Secret metadata: name: nas-eco-data-1172-secret namespace: trident type: Opaque stringData: username: <svm-admin-username> password: <svm-admin-password> --- apiVersion: trident.netapp.io/v1 kind: TridentBackendConfig metadata: name: nas-eco-data-1172 namespace: trident spec: backendName: nas-eco-data-1172 credentials: name: nas-eco-data-1172-secret dataLIF: "192.168.1.100" denyNewVolumePools: "False" managementLIF: "192.168.1.50" storageDriverName: ontap-nas-economy svm: data_1172 version: 1パラメータ `denyNewVolumePools`は、初期PVC作成の一環として `trident_qtree_pool_<storage-prefix>_<10 random characters>`が作成された直後に、 `true`に設定する必要があります。この値を `true`に設定することで、Tridentが既存のqtreeプールを使用してqtreeベースのPVCを配置するようになります。 TBC には、次のコマンドを使用してパッチを適用できます:
oc patch tbc nas-eco-data-1172 -n trident --type=merge -p '{"spec":{"denyNewVolumePools":"true"}}'ストレージクラスのサンプルYAML
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: nas-eco-data-1172 annotations: storageclass.kubernetes.io/is-default-class: "true" provisioner: csi.trident.netapp.io parameters: backendType: ontap-nas-economy fsType: nfs storagePools: "nas-eco-data-1172:NSOL_NetApp_C800_T18U13_02_SSD_CAP_1" allowVolumeExpansion: true reclaimPolicy: Delete volumeBindingMode: Immediate -
ONTAP-SAN: VMDK はストレージ vMotion を使用して個々のボリュームに配置する必要があります (VMDK を PVC/PV 構造に模倣)。VM の選択は VM レベルで行われます。
-
ONTAP-SAN-Economy: VMDKは単一のNFSv3ボリューム上に存在する必要があり、ボリューム名は以下の命名規則に準拠する必要があります:
trident_lun_。リソースグループ内での仮想マシンの選択は、データストアレベルでのみ可能です。ONTAP-SAN-Economyの場合、命名規則 `trident_lun_`を持つボリュームは事前に存在し、VMware vCenter上のデータストアとして使用されている必要があります。これは、VMをこの特定のデータストアにStorage vMotionedするか、既存のデータストアの名前を命名規則 `trident_lun_`に合わせて変更する必要があることを意味します。 ONTAP-SAN-Economy のサンプル TBC 構成
apiVersion: v1 kind: Secret metadata: name: ontap-san800-eco-secret namespace: trident type: Opaque stringData: username: <svm-admin-username> password: <svm-admin-password> --- apiVersion: trident.netapp.io/v1 kind: TridentBackendConfig metadata: name: ontap-san800-eco namespace: trident spec: backendName: ontap-san800-eco aggregate: NSOL_NetApp_C800_T18U13_01_SSD_CAP_1 credentials: name: ontap-san800-eco-secret dataLIF: "192.168.1.110" defaults: protocol: iSCSI snapshotPolicy: none spaceAllocate: "true" spaceReserve: none tieringPolicy: none managementLIF: "192.168.1.60" storage: - labels: backend: san800-eco storageDriverName: ontap-san-economy svm: data_1172 version: 1ONTAP-SAN-Economy のストレージクラス構成例
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: sc-ontap-san-eco provisioner: csi.trident.netapp.io parameters: backendType: ontap-san-economy selector: "backend=san800-eco" allowVolumeExpansion: true reclaimPolicy: Delete volumeBindingMode: ImmediateONTAP-SANおよびONTAP-SAN-Economyの場合、VMはまずブロックベースのデータストアからONTAP NFSv3ボリュームにストレージ vMotioned する必要があります。Shift Toolkitは、VMDKをLUNに変換し、それらをPVCとしてそれぞれのネームスペースにインポートします。
リソースグループに対する仮想マシンの選択は、仮想マシンレベルまたはデータストアレベルで行うことができます。選択に応じて、ワークフローは適切な ONTAP NAS または SAN ストレージドライバを選択します。例えば、単一の仮想マシンが選択された場合、ONTAP-NAS ドライバが使用されます。複数の VMDK が同じボリューム上に存在する場合、ソースボリュームとその SVM、および OpenShift 側で設定された TBC とストレージクラスに基づいて、ONTAP-NAS または ONTAP-NAS-Economy ドライバが使用されます。
-
Windows VMの場合: ローカル管理者の資格情報を使用する
-
Linux VMの場合: パスワードプロンプトなしでsudoコマンドを実行する権限を持つユーザーを使用します
-
Windows VMの場合: VirtIO ISOをVMにマウントします("ここをクリックしてください。" )
準備スクリプトは、.msi パッケージを使用して、ドライバーと qemu-guest-agents をインストールします。
ステップ 1: 宛先サイトを追加する (OpenShift)
宛先の OpenShift Virtualization 環境を Shift Toolkit に追加します。
-
*新しいサイトを追加*をクリックし、*宛先*を選択します。
例を表示
-
宛先サイトの詳細を入力します。
-
サイト名: サイトの名前を入力してください
-
ハイパーバイザー: OpenShiftを選択
-
サイトの場所: デフォルトのオプションを選択します
-
コネクタ: デフォルトの選択を選択します
-
-
*続行*をクリックします。
例を表示
-
OpenShift の詳細を入力します。
-
エンドポイント: OpenShift Cluster エンドポイントの FQDN (例: api.demomigsno.demoval.com)
-
Kubeconfigファイルのアップロード: 最小限の権限でkubeconfigファイルを使用します
ファイル拡張子は yaml である必要があります。
例を表示
-
-
*サイトの作成*をクリックします。
例を表示
ディスク形式の変換は同じボリューム内のボリューム レベルで行われるため、ソース ボリュームと宛先ボリュームは同じになります。
ステップ2: リソースグループを作成する
VM をリソース グループに編成して、ブート順序とブート遅延構成を保持します。
VM VMDK が新しく作成されたONTAP SVM 上の個々のデータストア ボリュームに移動されていることを確認します。
-
リソース グループ に移動し、新しいリソース グループの作成 をクリックします。
-
ドロップダウンからソースサイトを選択し、「作成」をクリックします。
-
リソース グループの詳細を入力し、ワークフローを選択します。
-
クローンベースの移行: ソースハイパーバイザーから宛先ハイパーバイザーへのエンドツーエンドの移行を実行します
-
クローンベースの変換: ディスクフォーマットを選択したハイパーバイザータイプに変換します
-
-
*続行*をクリックします。
-
検索オプションを使用して VM を選択します。
リソース グループの VM の選択は、データストア レベルではなく、仮想マシンに基づいています。 例を表示
例を表示
-
移行の詳細を更新します:
-
*宛先サイト*を選択
-
*宛先OpenShiftエントリ*を選択します
-
ストレージクラスを選択する
例を表示
TBC が 1 つしかない場合は、 Tridentバックエンドがソース ボリュームに自動的にマップされます。ただし、TBC が複数ある場合は、バックエンドを選択できます。
-
-
選択したすべての VM の起動順序と起動遅延を構成します。
-
1: 最初に電源を入れるVM
-
3: デフォルト
-
5: 最後に電源を入れたVM
-
-
*リソース グループの作成*をクリックします。
例を表示
リソース グループが作成され、ブループリントの構成の準備が整いました。
ステップ3: 移行ブループリントを作成する
プラットフォーム マッピング、ネットワーク構成、VM 設定などの移行計画を定義するブループリントを作成します。
-
ブループリント に移動し、新しいブループリントの作成 をクリックします。
-
ブループリントの名前を指定し、ホスト マッピングを構成します。
-
*ソースサイト*と関連するvCenterを選択します
-
*宛先サイト*と関連するOpenShiftターゲットを選択します
-
クラスターとホストのマッピングを構成する
例を表示
-
-
リソース グループの詳細を選択し、[続行] をクリックします。
-
複数のグループが存在する場合は、リソース グループの実行順序を設定します。
-
適切な論理ネットワークへのネットワーク マッピングを構成します。
ネットワーク接続定義は、適切な VLAN およびトランク オプションを使用して OpenShift クラスター内にすでにプロビジョニングされている必要があります。テスト移行の場合は、本番ネットワークの競合を避けるために「ネットワークを構成しない」を選択し、変換後にネットワーク設定を手動で割り当てます。 例を表示
-
ストレージ クラスとバックエンド マッピングを確認します (VM の選択に基づいて自動的に選択されます)。
仮想マシンを PVC から作成してパワーオンできるように、事前に VMDK が個々のボリュームに svmotion されていることを確認します。 -
VM の詳細で、構成の詳細を選択し、各 OS タイプのサービス アカウント資格情報を入力します。
-
Windows: ローカル管理者権限を持つユーザーを使用します (ドメイン資格情報も使用できます)
-
Linux: パスワードプロンプトなしでsudoコマンドを実行できるユーザーを使用する
例を表示
構成の選択により、ディスク イメージ形式を選択したり、prepareVM のオーバーライドをスキップしたり、ボリュームを親から分割するかどうかを選択したりできます。デフォルトでは、分割クローン機能は無効になっており、ワークフローはデフォルトで RAW 形式に設定されます。
-
-
IP 設定を構成します。
-
設定しない: デフォルトオプション
-
IP を保持: ソースシステムと同じ IP を保持します
-
DHCP: ターゲットVMにDHCPを割り当てる
prepareVM フェーズ中に VM の電源がオンになっており、VMware Tools がインストールされていることを確認します。
-
-
VM 設定を構成します。
-
CPU/RAMパラメータのサイズ変更(オプション)
-
起動順序と起動遅延を変更する
-
電源オン: 移行後にVMの電源をオンにする場合に選択します(デフォルト: オン)
-
VMware ツールを削除: 変換後に VMware ツールを削除します (デフォルト: 選択)
-
VMファームウェア: BIOS > BIOSおよびEFI > EFI(自動)
-
MAC アドレスを保持: ライセンス要件のために MAC アドレスを保持します
MAC アドレスを保持しながらインターフェース名を保持する必要がある場合は、ソース VM に適切な udev ルールが作成されていることを確認します。 -
サービス アカウントのオーバーライド: 必要に応じて別のサービス アカウントを指定します
-
-
*続行*をクリックします。
-
(オプション) 日時を選択して移行をスケジュールします。
VM の準備に時間をかけるため、移行は少なくとも 30 分前にスケジュールしてください。 -
*ブループリントを作成*をクリックします。
Shift Toolkit は、移行の準備としてソース VM 上でスクリプトを実行する prepareVM ジョブを開始します。
例を表示
準備プロセス:
-
VirtIO ドライバーの更新、qemu-agent のインストール、VMware ツールの削除、IP の詳細のバックアップ、fstab の更新を行うスクリプトを挿入します。
-
PowerCLI を使用してゲスト VM (Linux または Windows) に接続し、VirtIO ドライバーを更新します。
-
Windows VMの場合: スクリプトを以下に保存します
C:\NetApp -
Linux VMの場合: スクリプトを次の場所に保存します
/NetApp`そして `/opt
|
|
サポートされている VM OS の場合、Shift Toolkit はディスク変換前に必要な VirtIO ドライバーを自動的にインストールし、変換後の起動が正常に行われるようにします。 |
prepareVM が正常に完了すると、ブループリントのステータスが「PrepareVM 完了」に更新されます。移行はスケジュールされた時間に実行されるか、[移行] オプションをクリックして手動で開始できます。
例を表示
例を表示
ステップ4: 移行を実行する
移行ワークフローをトリガーして、VM を VMware ESXi から OpenShift Virtualization に変換します。
すべての VM は、計画されたメンテナンス スケジュールに従って正常に電源オフになります。
-
ブループリントで、[移行] をクリックします。
例を表示
-
Shift Toolkit は次の手順を実行します。
-
ブループリント内のすべてのVMの既存のスナップショットを削除します
-
ソースでVMスナップショットをトリガーします
-
ディスク変換前にボリュームのスナップショットをトリガーします
-
個々のボリュームを複製します
-
VMDKごとにVMDKをRAW形式に変換します
Shift Toolkit は、プライマリ ブート ディスクを含む、各 VM に関連付けられているすべての VMDK を自動的に検出します。
-
|
|
VMDKファイルが複数ある場合、各VMDKファイルは、使用されているストレージドライバに基づいて変換され、それぞれ独自のPVCに配置されます。 |
-
ボリュームをクリーンアップして、disk.img ファイルだけを残します。
仮想マシンのディスク イメージが RAW 形式に変換されると、Shift Toolkit はボリュームをクリーンアップし、raw ファイルの名前を disk.img に変更し、必要な権限を割り当てます。
-
Tridentインポートを使用してボリュームをPVCとしてインポートします
次に、ボリュームはNetApp Trident API を使用して PVC としてインポートされます。
-
VM固有のyamlファイルを使用してVMを作成します
PVC がインポートされ、PV が配置されると、Shift Toolkit は OC CLI を使用して、yaml ファイルを使用して OS に応じて各 VM を作成します。
|
|
VM は「Default」名前空間の下に作成されます。 |
-
ターゲットのVMの電源をオンにする
VM OS に応じて、Shift Toolkit はストレージ コントローラー インターフェイスとともに VM ブート オプションを自動的に割り当てます。 Linux ディストリビューションの場合、VirtIO または VirtIO SCSI が使用されます。 Windows の場合、VM は SATA インターフェイスで電源をオンにし、スケジュールされたスクリプトによって VirtIO ドライバーが自動的にインストールされ、インターフェイスが VirtIO に変更されます。
-
各VMにネットワークを登録する
ネットワークはブループリントの選択に基づいて割り当てられます。
-
VMwareツールを削除し、cronジョブを使用してIPアドレスを割り当てます
例を表示
|
|
検証オプションは、作業完了後に設計図に対して実行できます。詳細については、移行の検証を参照してください。 |
Shift Toolkit を使用した仮想化のための Migration Toolkit の利用(スクリプトによるアプローチ)
このセクションでは、Migration Toolkit for Virtualization (MTV) をNetApp Shift Toolkit と組み合わせて使用し、Red Hat OpenShift Virtualization へのシームレスな移行を実現する方法について説明します。
次の前提条件が満たされていることを確認してください。
-
OpenShift Virtualization オペレーターとNetApp Trident CSI ドライバーがインストールされた OpenShift クラスター
-
MTV 2.9.4(変換モードを含む)
-
"シフトツールキット"インストール済み
Shift Toolkit API のみを使用するため、Shift Toolkit リソース グループまたはブループリントを構成する必要はありません。 -
OpenShift クラスターの管理者レベルの権限
-
OCコマンドラインツールがインストールされたLinuxインスタンス
-
Kubeconfig をエクスポートするか、OC ログインを実行してクラスターに接続します
-
Shift Toolkit UI からスクリプト「Shift-VM-to-OpenShift-MTV」をダウンロードします(Settings > Developer Access > Script Blocker)
-
ファイルを解凍します:
unzip Shift-VM-to-OpenShift-MTV.zip -
Python3 がインストールされていることを確認します。
dnf install python3 -
OpenJDK 8以降をインストールします。
yum install java-1.8.0-openjdk -
インストール要件:
pip install -r requirements.txt
-
-
MTVの仮想マシン要件: VMDKはさまざまな方法で構成できます。すべてを単一のボリューム内に配置する方法(Storage vMotion の必要性を回避)、個別に別々のボリュームに割り当てる方法、またはNFSボリューム内のqtreeにまとめてグループ化する方法があります。このスクリプトは、TBC UUIDに基づいてレイアウトを自動的に検出し、適切なクローン作成方法とNASストレージドライバを選択します。
-
MTV を使用して移行計画を作成します。
高速 VMDK 変換を活用するには、VM の移行計画を作成し、YAML に次のパラメータが含まれていることを確認します。
-
targetNamespace: default -
type: conversion -
storage: {}MTV によって IP 保持設定が確実に構成されるように、事前に計画を作成する必要があります。
-
-
vCenter から VM とONTAPストレージ上のボリュームをマップします。
スクリプトを使用して必要な PVC を作成し、OpenShift クラスターにインポートします。 PVC には次のラベルと注釈が必要です。
ラベル:
-
PVC 内の vmID と vmUUID (Forklift はこれらの値を探します)
注釈:
-
vmdkディスク名
forklift.konveyor.io/disk-sourceスクリプトは、すべての PVC に対してこれらの属性が設定されていることを確認して、disk.img の権限を更新します。
-
"owner": { "id": 107 } -
"group": { "id": 107 } -
"mode": "0655"
-
-
次の詳細で JSON ファイルを更新します。
-
* ONTAPクラスタ*: SVM にすることができます。vsadmin を使用できます。クローンボリュームをすぐに切り離す必要がない場合は、splitclone を「False」に設定します。
-
vCenter: VM および関連する VMDK ファイルを検出するための最小限の RBAC 権限
-
* Tridentストレージ クラス*: yaml で正しいバージョンの NFS バックエンドを指定する必要があります
-
OpenShift: プロジェクト名を指定します(例としてデフォルトが使用されます)
残りの値はデフォルトのままにしておきます。
-
-
前提条件を満たしたら、実行します `python3 main.py`PVC を作成し、OpenShift クラスターにインポートします。
-
PVC をインポートしたら、MTV を使用して移行をトリガーし、適切な仕様の VM を作成します。
例を表示
例を表示
-
MTV を使用して VMDK を変換します。
スクリプトは、プライマリ ブート ディスクを含む、各 VM に関連付けられているすべての VMDK を自動的に検出します。
VMDK ファイルが複数ある場合は、各 VMDK が変換されます。 -
RAW イメージを OpenShift Virtualization にアップロードします。
このスクリプトは、 Trident CSI を使用して、ボリュームを PVC としてクラスターにインポートします。 PVC yaml にはラベルと注釈が設定されます。
-
MTV を使用して仮想マシンを作成します。
インポート後、MTV プランを呼び出して移行を開始します。 UI には「Cold」と表示されますが、変換の yaml 仕様に基づいて、MTV は各 PVC と vmID/vmUUID をチェックし、それらをマッピングして、移行を初期化します。
例を表示
VM は仮想マシンの「Default」プロジェクトの下に作成されますが、これは MTV 移行プラン YAML 内で変更できます。 -
MTV を使用して VM を初めて起動します。
VM OS に応じて、MTV はストレージ コントローラ インターフェイスとともに VM ブート オプションを自動的に割り当てます。
例を表示
1.5 TB のデータ ディスク (3 つの PVC に分散) を備えた VM の移行は 6 分で完了しました。これは、 ONTAPストレージを使用して VM をリホームするための、合理化された影響の少ないアプローチを示しています。
このスクリプトは、設定ファイルを使用するか、パラメータを指定することで実行できます。パラメータを使用してスクリプトを実行する例を以下に示します。
このスクリプトはクロスSVMクローニングもサポートしており、指定された入力パラメータに基づいて、異なるSVM間でPVCを作成することができます。 python3 main.py --mode params --ontap-server 10.192.102.56 --ontap-username admin --ontap-password 'correct password' --ontap-source-vserver manila --ontap-target-vserver manila --ontap-data-lif 10.63.172.249 --ontap-skip-ssl --vcenter-server 10.63.172.125 --vcenter-username administrator@demoenv.com --vcenter-password 'correct password' --vcenter-skip-ssl --shift-server 10.61.187.117 --shift-username admin --shift-password 'correct password' --trident-backend-name tbc-ontap-manila-nimo --trident-backend-uuid 778245f4-1f50-453c-b81c-3dd82e166bbc --trident-storage-class nimmanila --mtv-project openshift-mtv --mtv-plan casetst --ocp-server https://api.demomigsno.demoval.com:6443 --ocp-token sha256~co89ATebn-ktVyrMbNJUGByVWph_kjLamYtIOPmqfQM --ocp-project default --import-volume --execution-mode clone_shrink --snapshot-prefix ""移行が完了したら、クローンボリュームを切り離す必要があります。使用する方法は ONTAP バージョンによって異なります。ONTAP 9.17.1 以降では クローン スプリット を使用し、それ以前のバージョンでは vol move を使用してください。提供されている ZIP パッケージ内の「Post migrate」フォルダに、デタッチ処理を開始するためのスクリプトが含まれています。
ビデオデモ
次のビデオでは、このソリューションで概説されているプロセスを説明します。