11.5. 移行計画のオプション
MigPlan カスタムリソース (CR) のコンポーネントを除外、編集、およびマップできます。
11.5.1. リソースの除外
移行についてのリソース負荷を減らしたり、別のツールでイメージや PV を移行するために、MTC (Migration Toolkit for Containers) からイメージストリーム、永続ボリューム (PV)、またはサブスクリプションなどのリソースを除外することができます。
デフォルトで、MTC は移行からサービスカタログリソースおよび Operator Lifecycle Manager (OLM) リソースを除外します。これらのリソースはサービスカタログ API グループおよび OLM API グループの一部ですが、現時点でこれらは移行についてサポートされません。
手順
MigrationControllerカスタムリソースマニフェストを編集します。$ oc edit migrationcontroller <migration_controller> -n openshift-migration
特定のリソースを除外するパラメーターを追加して、
specセクションを更新します。独自の除外パラメーターを持たないリソースの場合は、additional_excluded_resourcesパラメーターを追加します。apiVersion: migration.openshift.io/v1alpha1 kind: MigrationController metadata: name: migration-controller namespace: openshift-migration spec: disable_image_migration: true 1 disable_pv_migration: true 2 additional_excluded_resources: 3 - resource1 - resource2 ...
- 1
disable_image_migration: trueを追加して、移行からイメージストリームを除外します。MigrationControllerPod が再起動すると、imagestreamsがmain.ymlのexcluded_resourcesリストに追加されます。- 2
disable_pv_migration: trueを追加して、移行計画から PV を除外します。MigrationControllerPod が再起動すると、persistentvolumesとpersistentvolumeclaimsがmain.ymlのexcluded_resourcesリストに追加されます。PV 移行を無効にすると、移行計画の作成時に PV 検出も無効にできます。- 3
- 除外する OpenShift Container Platform リソースを
additional_excluded_resourcesリストに追加できます。
-
MigrationControllerPod が再起動し、変更が適用されるまで 2 分待機します。 リソースが除外されていることを確認します。
$ oc get deployment -n openshift-migration migration-controller -o yaml | grep EXCLUDED_RESOURCES -A1
出力には、除外されたリソースが含まれます。
出力例
name: EXCLUDED_RESOURCES value: resource1,resource2,imagetags,templateinstances,clusterserviceversions,packagemanifests,subscriptions,servicebrokers,servicebindings,serviceclasses,serviceinstances,serviceplans,imagestreams,persistentvolumes,persistentvolumeclaims
11.5.2. 名前空間のマッピング
MigPlan カスタムリソース (CR) で namespace をマッピングした場合には、namespace の UID および GID の範囲が移行時にコピーされるため、namespace が移行元または移行先ホストで複製されないようにする必要があります。
同じ宛先 namespace にマッピングされた 2 つのソース namespace
spec:
namespaces:
- namespace_2
- namespace_1:namespace_2
ソース namespace を同じ名前の namespace にマップする場合には、マッピングを作成する必要はありません。デフォルトでは、ソースの namespace とターゲット namespace の名前は同じです。
誤った namespace マッピング
spec:
namespaces:
- namespace_1:namespace_1
正しい namespace リファレンス
spec:
namespaces:
- namespace_1
11.5.3. Persistent Volume Claim (永続ボリューム要求、PVC) の除外
移行しない PVC を除外して、状態移行用に永続ボリューム要求 (PVC) を選択します。永続ボリューム (PV) の検出後に MigPlan カスタムリソース (CR) の spec.persistentVolumes.pvc.selection.action パラメーターを設定して PVC を除外します。
前提条件
-
MigPlanCR がReady状態にある。
手順
spec.persistentVolumes.pvc.selection.actionパラメーターをMigPlanCR に追加し、それをskipに設定します。apiVersion: migration.openshift.io/v1alpha1 kind: MigPlan metadata: name: <migplan> namespace: openshift-migration spec: ... persistentVolumes: - capacity: 10Gi name: <pv_name> pvc: ... selection: action: skip
11.5.4. 永続ボリューム要求 (PVC) のマッピング
永続ボリューム (PV) データをソースクラスターから、PVC をマッピングすることで、MigPlan CR の宛先クラスターですでにプロビジョニングされている永続ボリューム要求 (PVC) に移行できます。このマッピングにより、移行したアプリケーションの宛先 PVC がソース PVC と同期されます。
PV の検出後に MigPlan カスタムリソース (CR) の spec.persistentVolumes.pvc.name パラメーターを更新して PVC をマップします。
前提条件
-
MigPlanCR がReady状態にある。
手順
MigPlanCR のspec.persistentVolumes.pvc.nameパラメーターを更新します。apiVersion: migration.openshift.io/v1alpha1 kind: MigPlan metadata: name: <migplan> namespace: openshift-migration spec: ... persistentVolumes: - capacity: 10Gi name: <pv_name> pvc: name: <source_pvc>:<destination_pvc> 1- 1
- ソースクラスターに PVC を指定し、宛先クラスターで PVC を指定します。宛先 PVC が存在しない場合、これは作成されます。このマッピングを使用して、移行時に PVC 名を変更できます。
11.5.5. 永続ボリューム属性の編集
MigPlan カスタムリソース (CR) を作成した後、MigrationController CR は永続ボリューム (PV) を検出します。spec.persistentVolumes ブロックと status.destStorageClasses ブロックが MigPlan CR に追加されます。
spec.persistentVolumes.selection ブロックの値を編集できます。spec.persistentVolumes.selection ブロックの外部で値を変更すると、MigPlan CR が MigrationController CR によって調整されるときに値が上書きされます。
spec.persistentVolumes.selection.storageClass パラメーターのデフォルト値は、次のロジックによって決定します。
-
ソースクラスター PV が Gluster または NFS の場合のデフォルトは、
accessMode: ReadWriteManyの場合はcephfs、accessMode: ReadWriteOnceの場合はcephrbdです。 -
PV が Gluster でも NFS でもない場合、もしくは、
cephfsまたはcephrbdが使用できない場合、デフォルトは同じプロビジョナーのストレージクラスです。 - 同じプロビジョナーのストレージクラスが使用できない場合、デフォルトは宛先クラスターのデフォルトのストレージクラスです。
storageClass 値を、MigPlan CR の status.destStorageClasses ブロック内の任意の name パラメーターの値に変更できます。
storageClass 値が空の場合、移行後、PV にはストレージクラスがありません。このオプションは、たとえば、PV を宛先クラスターの NFS ボリュームに移動する場合に適しています。
前提条件
-
MigPlanCR がReady状態にある。
手順
MigPlanCR でspec.persistentVolumes.selection値を編集します。apiVersion: migration.openshift.io/v1alpha1 kind: MigPlan metadata: name: <migplan> namespace: openshift-migration spec: persistentVolumes: - capacity: 10Gi name: pvc-095a6559-b27f-11eb-b27f-021bddcaf6e4 proposedCapacity: 10Gi pvc: accessModes: - ReadWriteMany hasReference: true name: mysql namespace: mysql-persistent selection: action: <copy> 1 copyMethod: <filesystem> 2 verify: true 3 storageClass: <gp2> 4 accessMode: <ReadWriteMany> 5 storageClass: cephfs- 1
- 許可される値は、
move、copy、およびskipです。サポートされているアクションが 1 つだけの場合、デフォルト値はサポートされているアクションです。複数のアクションがサポートされている場合、デフォルト値はcopyです。 - 2
- 許可される値は、
snapshotおよびfilesystemです。デフォルト値はfilesystemです。 - 3
- MTC Web コンソールでファイルシステムコピーの検証オプションを選択すると、
verifyパラメーターが表示されます。falseに設定できます。 - 4
- デフォルト値を、
MigPlanCR のstatus.destStorageClassesブロック内の任意のnameパラメーターの値に変更できます。値が指定されていない場合、PV は移行後にストレージクラスを持ちません。 - 5
- 使用できる値は
ReadWriteOnceおよびReadWriteManyです。この値が指定されていない場合、デフォルトはソースクラスター PVC のアクセスモードです。アクセスモードは、MigPlanでのみ編集できます。MTC Web コンソールを使用して編集することはできません。
関連情報
-
moveおよびcopyアクションの詳細は、MTC ワークフロー を参照してください。 -
skipアクションの詳細については、移行からの PVC の除外 を参照してください。 - ファイルシステムとスナップショットのコピー方法の詳細については、データのコピー方法について を参照してください。
11.5.6. MTCAPI を使用した Kubernetes オブジェクトの状態移行の実行
すべての PV データを移行した後に、Migration Toolkit for Containers (MTC) API を使用して、アプリケーションを設定する Kubernetes オブジェクトの状態を移行を 1 回限りで実行できます。
これを行うには、MigPlan カスタムリソース (CR) フィールドを設定して、Kubernetes リソースのリストに追加のラベルセレクターを提供し、それらのリソースをさらにフィルタリングしてから、MigMigrationCR を作成して移行します。MigPlan リソースは、移行後に終了します。
Kubernetes リソースの選択は API 限定の機能です。CLI を使用して、MigPlan CR を更新し、その MigMigrationCR を作成する必要があります。MTC Web コンソールは、Kubernetes オブジェクトの移行をサポートしていません。
移行後に、MigPlan CR の closed パラメーターは true に設定されます。この MigPlan CR の別の MigMigration CR を作成することはできません。
以下のいずれかのオプションを使用して、Kubernetes オブジェクトを MigPlan CR に追加します。
-
Kubernetes オブジェクトを
includedResourcesセクションに追加します。MigPlanCR でincludedResourcesフィールドが指定されている場合に、プランはグループの種類のリストを入力として受け取ります。リストに存在するリソースのみが移行に含まれます。 -
オプションの
labelSelectorパラメーターを追加して、MigPlanのincludedResourcesをフィルター処理します。このフィールドを指定すると、ラベルセレクターに一致するリソースのみが移行に含まれます。たとえば、ラベルapp:frontendをフィルターとして使用して、SecretリソースとConfigMapリソースのリストをフィルタリングできます。
手順
MigPlanCR を更新して、Kubernetes リソースを含め、オプションで、labelSelectorパラメーターを追加して含まれているリソースをフィルタリングします。MigPlanCR を更新して Kubernetes リソースを含めるには以下を実行します。apiVersion: migration.openshift.io/v1alpha1 kind: MigPlan metadata: name: <migplan> namespace: openshift-migration spec: includedResources: - kind: <kind> 1 group: "" - kind: <kind> group: ""- 1
- Kubernetes オブジェクトを指定します (例:
SecretまたはConfigMap)。
オプション:
labelSelectorパラメーターを追加して、含まれているリソースをフィルター処理するには、次のようにします。apiVersion: migration.openshift.io/v1alpha1 kind: MigPlan metadata: name: <migplan> namespace: openshift-migration spec: includedResources: - kind: <kind> 1 group: "" - kind: <kind> group: "" ... labelSelector: matchLabels: <label> 2
MigMigrationCR を作成して、選択した Kubernetes リソースを移行します。正しいMigPlanがmigPlanRefで参照されていることを確認します。apiVersion: migration.openshift.io/v1alpha1 kind: MigMigration metadata: generateName: <migplan> namespace: openshift-migration spec: migPlanRef: name: <migplan> namespace: openshift-migration stage: false