12.6. Migration Toolkit for Virtualization (MTV) プロバイダーについて
OpenShift Container Platform クラスター間で仮想マシンを移行するには、移行に含めるクラスターごとに OpenShift Container Platform プロバイダーを設定する必要があります。すでにクラスターに MTV がインストールされている場合は、ローカルプロバイダーがすでに存在します。
クラスター間のライブマイグレーションはテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、以下のリンクを参照してください。
次のステップ
12.6.1. プロバイダーのルート認証局の設定 リンクのコピーリンクがクリップボードにコピーされました!
移行に含めるクラスターごとに OpenShift Container Platform プロバイダーを設定する必要があり、各プロバイダーにはクラスターの認証局 (CA) が必要です。プロバイダーの障害の原因となる CA の有効期限を回避するために、クラスター全体にルート CA を設定することが重要です。
手順
プロバイダーを作成するクラスターに対して次のコマンドを実行します。
$ oc get cm kube-root-ca.crt -o=jsonpath={.data.ca\\.crt}- 出力された証明書をコピーします。
- Migration Toolkit for Virtualization (MTV) Web コンソールで、プロバイダーを作成して OpenShift Virtualization を選択します。
次の例に示すように、証明書を CA certificate フィールドにペーストします。
-----BEGIN CERTIFICATE----- <CA_certificate_content> -----END CERTIFICATE-----
12.6.2. MTV プロバイダーで使用する長期間有効なサービスアカウントとトークンを作成する リンクのコピーリンクがクリップボードにコピーされました!
Migration Toolkit for Virtualization (MTV) Web コンソールで OpenShift Virtualization プロバイダーを登録する場合、MTV がクラスターと対話できるようにする認証情報を提供する必要があります。長期間有効なサービスアカウントとクラスターロールバインディングを作成すると、移行中に仮想マシンリソースの読み取りと作成を行うための永続的な権限が MTV に付与されます。
手順
次の例に示すように、クラスターロールを作成します。
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: live-migration-role rules: - apiGroups: - forklift.konveyor.io resources: - '*' verbs: - get - list - watch - apiGroups: - "" resources: - secrets - namespaces - configmaps - persistentvolumes - persistentvolumeclaims verbs: - get - list - watch - create - update - patch - delete - apiGroups: - k8s.cni.cncf.io resources: - network-attachment-definitions verbs: - get - list - watch - apiGroups: - storage.k8s.io resources: - storageclasses verbs: - get - list - watch - apiGroups: - kubevirt.io resources: - virtualmachines - virtualmachines/finalizers - virtualmachineinstancemigrations verbs: - get - list - watch - create - update - patch - delete - apiGroups: - kubevirt.io resources: - kubevirts - virtualmachineinstances verbs: - get - list - watch - apiGroups: - cdi.kubevirt.io resources: - datavolumes - datavolumes/finalizers verbs: - get - list - watch - create - update - patch - delete - apiGroups: - apps resources: - deployments verbs: - get - list - watch - create - update - patch - delete - apiGroups: - instancetype.kubevirt.io resources: - virtualmachineclusterpreferences - virtualmachineclusterinstancetypes verbs: - get - list - watch - apiGroups: - instancetype.kubevirt.io resources: - virtualmachinepreferences - virtualmachineinstancetypes verbs: - get - list - watch - create - update - patch - delete次のコマンドを実行して、クラスターのロールを作成します。
$ oc create -f <filename>.yaml次のコマンドを実行してサービスアカウントを作成します。
$ oc create serviceaccount <service_account_name> -n <service_account_namespace>次のコマンドを実行して、サービスアカウントをクラスターロールにリンクするクラスターロールバインディングを作成します。
$ oc create clusterrolebinding <service_account_name> --clusterrole=<cluster_role_name> --serviceaccount=<service_account_namespace>:<service_account_name>次のマニフェストを YAML ファイルとして保存して、トークンを保持するシークレットを作成します。
apiVersion: v1 kind: Secret metadata: name: <name_of_secret> namespace: <namespace_for_service_account> annotations: kubernetes.io/service-account.name: <service_account_name> type: kubernetes.io/service-account-token次のコマンドを実行してマニフェストを適用します。
$ oc apply -f <filename>.yamlシークレットが入力されたら、次のコマンドを実行してサービスアカウントベアラートークンを取得します。
$ TOKEN_BASE64=$(oc get secret "<name_of_secret>" -n "<namespace_bound_to_service_account>" -o jsonpath='{.data.token}') TOKEN=$(echo "$TOKEN_BASE64" | base64 --decode) echo "$TOKEN"- 出力されたトークンをコピーします。
- Migration Toolkit for Virtualization (MTV) Web コンソールでプロバイダーを作成し、OpenShift Virtualization を選択するときに、トークンを Service account bearer token フィールドにペーストします。