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
を追加して、移行からイメージストリームを除外します。MigrationController
Pod が再起動すると、imagestreams
がmain.yml
のexcluded_resources
リストに追加されます。- 2
disable_pv_migration: true
を追加して、移行計画から PV を除外します。MigrationController
Pod が再起動すると、persistentvolumes
とpersistentvolumeclaims
がmain.yml
のexcluded_resources
リストに追加されます。PV 移行を無効にすると、移行計画の作成時に PV 検出も無効にできます。- 3
- 除外する OpenShift Container Platform リソースを
additional_excluded_resources
リストに追加できます。
-
MigrationController
Pod が再起動し、変更が適用されるまで 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. 永続ボリューム要求の除外
移行しない PVC を除外して、状態移行用に永続ボリューム要求 (PVC) を選択します。永続ボリューム (PV) の検出後に MigPlan
カスタムリソース (CR) の spec.persistentVolumes.pvc.selection.action
パラメーターを設定して PVC を除外します。
前提条件
-
MigPlan
CR がReady
状態にある。
手順
spec.persistentVolumes.pvc.selection.action
パラメーターをMigPlan
CR に追加し、それを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. 永続ボリューム要求のマッピング
永続ボリューム (PV) データをソースクラスターから、PVC をマッピングすることで、MigPlan
CR の宛先クラスターですでにプロビジョニングされている永続ボリューム要求 (PVC) に移行できます。このマッピングにより、移行したアプリケーションの宛先 PVC がソース PVC と同期されます。
PV の検出後に MigPlan
カスタムリソース (CR) の spec.persistentVolumes.pvc.name
パラメーターを更新して PVC をマップします。
前提条件
-
MigPlan
CR がReady
状態にある。
手順
MigPlan
CR の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 ボリュームに移動する場合に適しています。
前提条件
-
MigPlan
CR がReady
状態にある。
手順
MigPlan
CR で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
- デフォルト値を、
MigPlan
CR のstatus.destStorageClasses
ブロック内の任意のname
パラメーターの値に変更できます。値が指定されていない場合、PV は移行後にストレージクラスを持ちません。 - 5
- 使用できる値は
ReadWriteOnce
およびReadWriteMany
です。この値が指定されていない場合、デフォルトはソースクラスター PVC のアクセスモードです。アクセスモードは、MigPlan
でのみ編集できます。MTC Web コンソールを使用して編集することはできません。
関連情報
-
move
およびcopy
アクションの詳細は、MTC ワークフロー を参照してください。 -
skip
アクションの詳細については、移行からの PVC の除外 を参照してください。 - ファイルシステムとスナップショットのコピー方法の詳細については、データのコピー方法について を参照してください。
11.5.6. MTC API を使用した Kubernetes オブジェクトの状態移行の実行
すべての PV データを移行した後に、Migration Toolkit for Containers (MTC) API を使用して、アプリケーションを構成する Kubernetes オブジェクトの状態を移行を 1 回限りで実行できます。
これを行うには、MigPlan
カスタムリソース (CR) フィールドを設定して、Kubernetes リソースのリストに追加のラベルセレクターを提供し、それらのリソースをさらにフィルタリングしてから、MigMigration
CR を作成して移行します。MigPlan
リソースは、移行後に終了します。
Kubernetes リソースの選択は API 限定の機能です。CLI を使用して、MigPlan
CR を更新し、その MigMigration
CR を作成する必要があります。MTC Web コンソールは、Kubernetes オブジェクトの移行をサポートしていません。
移行後に、MigPlan
CR の closed
パラメーターは true
に設定されます。この MigPlan
CR の別の MigMigration
CR を作成することはできません。
以下のいずれかのオプションを使用して、Kubernetes オブジェクトを MigPlan
CR に追加します。
-
Kubernetes オブジェクトを
includedResources
セクションに追加します。MigPlan
CR でincludedResources
フィールドが指定されている場合に、プランはグループの種類
のリストを入力として受け取ります。リストに存在するリソースのみが移行に含まれます。 -
オプションの
labelSelector
パラメーターを追加して、MigPlan
のincludedResources
をフィルター処理します。このフィールドを指定すると、ラベルセレクターに一致するリソースのみが移行に含まれます。たとえば、ラベルapp:frontend
をフィルターとして使用して、Secret
リソースとConfigMap
リソースのリストをフィルタリングできます。
手順
MigPlan
CR を更新して、Kubernetes リソースを含め、オプションで、labelSelector
パラメーターを追加して含まれているリソースをフィルタリングします。MigPlan
CR を更新して 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
MigMigration
CR を作成して、選択した 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