11.4. 移行計画のオプション

MigPlan カスタムリソース (CR) のコンポーネントを除外、編集、およびマップできます。

11.4.1. リソースの除外

移行についてのリソース負荷を減らしたり、別のツールでイメージや PV を移行するために、MTC (Migration Toolkit for Containers) からイメージストリーム、永続ボリューム (PV)、またはサブスクリプションなどのリソースを除外することができます。

デフォルトで、MTC は移行からサービスカタログリソースおよび Operator Lifecycle Manager (OLM) リソースを除外します。これらのリソースはサービスカタログ API グループおよび OLM API グループの一部ですが、現時点でこれらは移行についてサポートされません。

手順

  1. MigrationController カスタムリソースマニフェストを編集します。

    $ oc edit migrationcontroller <migration_controller> -n openshift-migration
  2. spec セクションの更新は、特定リソースを除外するためにパラメーターを追加するか、または独自の除外パラメーターがない場合はリソースを 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
      ...
      excluded_resources: 3
      - imagetags
      - templateinstances
      - clusterserviceversions
      - packagemanifests
      - subscriptions
      - servicebrokers
      - servicebindings
      - serviceclasses
      - serviceinstances
      - serviceplans
      - operatorgroups
      - events
      - events.events.k8s.io
    1
    disable_image_migration: true を追加して、移行からイメージストリームを除外します。excluded_resources パラメーターは編集しないでください。imagestreams は、 MigrationController Pod の再起動時に excluded_resources に追加されます。
    2
    disable_pv_migration: true を追加して、移行計画から PV を除外します。excluded_resources パラメーターは編集しないでください。persistentvolumes および persistentvolumeclaims は、MigrationController Pod の再起動時に excluded_resources に追加されます。PV 移行を無効にすると、移行計画の作成時に PV 検出も無効にできます。
    3
    OpenShift Container Platform リソースを excluded_resources 一覧に追加できます。デフォルトの除外されたリソースは削除しないでください。これらのリソースには移行に関連した問題があり、除外する必要があります。
  3. MigrationController Pod が再起動し、変更が適用されるまで 2 分待機します。
  4. リソースが除外されていることを確認します。

    $ oc get deployment -n openshift-migration migration-controller -o yaml | grep EXCLUDED_RESOURCES -A1

    出力には、除外されたリソースが含まれます。

    出力例

        - name: EXCLUDED_RESOURCES
          value:
          imagetags,templateinstances,clusterserviceversions,packagemanifests,subscriptions,servicebrokers,servicebindings,serviceclasses,serviceinstances,serviceplans,imagestreams,persistentvolumes,persistentvolumeclaims

11.4.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.4.3. Persistent Volume Claim (永続ボリューム要求、PVC) の除外

移行しない 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.4.4. 永続ボリューム要求 (PVC) のマッピング

永続ボリューム (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.4.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 パラメーターのデフォルト値は、次のロジックによって決定します。

  1. ソースクラスター PV が Gluster または NFS の場合のデフォルトは、accessMode: ReadWriteMany の場合は cephfsaccessMode: ReadWriteOnce の場合は cephrbd です。
  2. PV が Gluster でも NFS でもない場合、もしくはcephfs または cephrbd が使用できない場合、デフォルトは同じプロビジョナーのストレージクラスです。
  3. 同じプロビジョナーのストレージクラスが使用できない場合、デフォルトは宛先クラスターのデフォルトのストレージクラスです。

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
    許可される値は、movecopy、および 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 コンソールを使用して編集することはできません。
関連情報

11.4.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 セクションに追加します。MigPlan CR で includedResources フィールドが指定されている場合に、プランは グループの種類 のリストを入力として受け取ります。リストに存在するリソースのみが移行に含まれます。
  • オプションの labelSelector パラメーターを追加して、MigPlanincludedResources をフィルター処理します。このフィールドを指定すると、ラベルセレクターに一致するリソースのみが移行に含まれます。たとえば、ラベル app:frontend をフィルターとして使用して、Secret リソースと ConfigMap リソースのリストをフィルターリングできます。

手順

  1. MigPlan CR を更新して、Kubernetes リソースを含め、オプションで、labelSelector パラメーターを追加して含まれているリソースをフィルターリングします。

    1. 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)。
    2. オプション: 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
      1
      Kubernetes オブジェクトを指定します (例: Secret または ConfigMap)。
      2
      移行するリソースのラベルを指定します (例: app: frontend)。
  2. MigMigration CR を作成して、選択した Kubernetes リソースを移行します。正しい MigPlanmigPlanRef で参照されていることを確認します。

    apiVersion: migration.openshift.io/v1alpha1
    kind: MigMigration
    metadata:
      generateName: <migplan>
      namespace: openshift-migration
    spec:
      migPlanRef:
        name: <migplan>
        namespace: openshift-migration
      stage: false