OpenShift Virtualization (OCP-V) - Migration Toolkit for Virtualization (MTV) - Installation & Configuration

### OpenShift Virtualization

Red Hat® OpenShift® Virtualization は Red Hat OpenShift に含まれる機能であり、組織が新規および既存の仮想マシン (VM) ワークロードを実行およびデプロイするための先進的なプラットフォームを提供します。このソリューションにより、従来の仮想マシンを、信頼できる、一貫した包括的なハイブリッドクラウド・アプリケーション・プラットフォームに簡単に移行できます。

OpenShift Virtualization は、VM の移行を単純化するとともに、クラウドネイティブ・アプリケーション・プラットフォームのシンプルさと速度を利用してインフラストラクチャのモダナイゼーションの道筋を提供します。また、先進的な管理の原則を取り入れつつ既存の仮想化への投資を維持することを目指しており、Red Hat の包括的な仮想化ソリューションの基盤となります。

https://www.redhat.com/ja/technologies/cloud-computing/openshift/virtualization

### Migration Toolkit for Virtualization (MTV) 

Migration Toolkit for Virtualization (MTV) を使用すると、仮想マシンを VMware vSphere などから OpenShift Container Platform で実行されている OpenShift Virtualization に移行できます。 

https://docs.redhat.com/en/documentation/migration_toolkit_for_virtualization/2.8

https://github.com/kubev2v

OCP 4.18 Bare Metal 環境 OpenShift Virtualization (OCP-V) で、執筆時点の最新版である MTV 2.8 を導入・設定してみます。

https://docs.redhat.com/en/documentation/migration_toolkit_for_virtualization/2.8/html/installing_and_using_the_migration_toolkit_for_virtualization/installing-the-operator_mtv

なお、MTV の導入・使用に際しては以下の前提条件を満たす必要があります。

https://docs.redhat.com/en/documentation/migration_toolkit_for_virtualization/2.8/html/installing_and_using_the_migration_toolkit_for_virtualization/prerequisites_mtv

#### Installation
OCP Console の Operator Hub から `mtv-operator` で検索をします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128125/aea52971-b360-4c69-a9aa-58cdc910ddcf.png)

必要な箇所を変更した後に `Install` ボタンを押して導入が完了します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128125/f6729c78-67e2-4d0a-9349-40344855198f.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128125/2f0ef22d-b5eb-49d0-82ae-ec3d8ea38722.png)

Installed Operator に表示されている `Migration Toolkit for Virtualization Operator` の `ForkliftController` Tab から `Create ForkliftController` ボタンを押して、Default 設定で ForkliftController を作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128125/44537b69-dc79-4f7e-b1a3-a5133045b596.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128125/8a68be7a-48d2-4e77-80ae-fd2ac1cbce57.png)

この時点で `openshift-mtv` Project に以下のような Pod が稼働します。
```shell
$ oc get pods -n openshift-mtv
NAME                                                    READY   STATUS    RESTARTS       AGE
forklift-api-c4d779784-sqqh5                            1/1     Running   1              33d
forklift-controller-66d59c9978-tqb7q                    2/2     Running   1              33d
forklift-operator-7d86585845-hdl64                      1/1     Running   1              33d
forklift-ui-plugin-74b5c549d6-4dm5t                     1/1     Running   1              33d
forklift-validation-5b68b94f47-72q4x                    1/1     Running   1              33d
forklift-volume-populator-controller-7b8c54b99f-84g6g   1/1     Running   1              33d
```

導入が完了すると OCP Console に `Migration` セクションが追加されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128125/cf866609-0dc5-4ff8-b543-879f145bdb5f.png)

#### Configuration

MTV の設定は、OCP Console の Migration/Overview 画面右側の `Settings` または `ForkliftController` CR の編集で行います。
`Settings` では、以下の編集を行う事ができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128125/c7154560-db1f-4c6d-ac72-c2a94de6c5d8.png)

https://docs.redhat.com/en/documentation/migration_toolkit_for_virtualization/2.8/html/installing_and_using_the_migration_toolkit_for_virtualization/migrating-vms-ocp-web-console_mtv#mtv-settings_mtv

`ForkliftController` CR の編集は、上記画面の `YAML` Tab または CLI で行います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128125/31074fb5-8738-4d16-b2a5-3676aa2ce76c.png)

```shell
$ oc explain ForkliftController
GROUP:      forklift.konveyor.io
KIND:       ForkliftController
VERSION:    v1beta1

DESCRIPTION:
    ForkliftController is the Schema for the forkliftcontrollers API

FIELDS:
  apiVersion    <string>
    APIVersion defines the versioned schema of this representation of an object.
    Servers should convert recognized schemas to the latest internal value, and
    may reject unrecognized values. More info:
    https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

  kind  <string>
    Kind is a string value representing the REST resource this object
    represents. Servers may infer this from the endpoint the client submits
    requests to. Cannot be updated. In CamelCase. More info:
    https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

  metadata      <ObjectMeta>
    Standard object's metadata. More info:
    https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata

  spec  <Object>
    Spec defines the desired state of ForkliftController

  status        <Object>
    Status defines the observed state of ForkliftController

$ oc explain ForkliftController.spec
GROUP:      forklift.konveyor.io
KIND:       ForkliftController
VERSION:    v1beta1

FIELD: spec <Object>


DESCRIPTION:
    Spec defines the desired state of ForkliftController
```
```shell
$ oc get ForkliftController -n openshift-mtv
NAME                  AGE
forklift-controller   120d
```

一般的な環境で MTV を使用するだけであればパラメータの変更は不要ですが、状況に応じて検討が必要です。
なお、今回導入した MTV 2.8 では OCP Console の `API Explorer` や `oc explain` でパラメータの説明が表示されないため、以下のドキュメントを参照する必要があります。なお、`ForkliftController CR only` と記載のあるパラメータは、OCP Console からの編集はできません。

https://docs.redhat.com/en/documentation/migration_toolkit_for_virtualization/2.8/html/installing_and_using_the_migration_toolkit_for_virtualization/installing-the-operator_mtv#configuring-mtv-operator_mtv