10.4. 마이그레이션 계획 옵션

MigPlan CR(사용자 정의 리소스)에서 구성 요소를 제외, 편집 및 매핑할 수 있습니다.

10.4.1. 리소스 제외

마이그레이션하기 위해 리소스 로드를 줄이거나 다른 도구를 사용하여 이미지 또는 PV를 마이그레이션하기 위해 MTC(Migration Toolkit for Containers) 마이그레이션 계획에서 리소스(예: 이미지 스트림, 영구 볼륨(PV) 또는 서브스크립션)를 제외할 수 있습니다.

기본적으로 MTC는 서비스 카탈로그 리소스 및 OLM(Operator Lifecycle Manager) 리소스를 마이그레이션에서 제외합니다. 이러한 리소스는 현재 마이그레이션에 지원되지 않는 서비스 카탈로그 API 그룹 및 OLM API 그룹의 일부입니다.

절차

  1. MigrationController 사용자 지정 매니페스트를 편집합니다.

    $ oc edit migrationcontroller <migration_controller> -n openshift-migration
  2. 특정 리소스를 제외하는 매개변수를 추가하여 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가 다시 시작되면 imagestreamsmain.ymlexcluded_resources 목록에 추가됩니다.
    2
    마이그레이션 계획에서 PV를 제외하려면 disable_pv_migration: true를 추가합니다. MigrationController Pod가 다시 시작되면 persistentvolumespersistentvolumeclaimsmain.ymlexcluded_resources 목록에 추가됩니다. PV 마이그레이션을 비활성화하면 마이그레이션 계획을 생성할 때 PV 검색도 비활성화됩니다.
    3
    additional_excluded_resources 목록에 제외하려는 OpenShift Container Platform 리소스를 추가할 수 있습니다.
  3. 변경 사항이 적용되도록 MigrationController 포드가 다시 시작될 때까지 2분 정도 기다립니다.
  4. 리소스가 제외되었는지 확인합니다.

    $ 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

10.4.2. 네임스페이스 매핑

MigPlan CR(사용자 정의 리소스)에서 네임스페이스를 매핑하는 경우 마이그레이션 중에 네임스페이스의 UID 및 GID 범위가 복사되므로 소스 또는 대상 클러스터에서 네임스페이스가 복제되지 않아야 합니다.

두 개의 소스 네임스페이스가 동일한 대상 네임스페이스에 매핑됨

spec:
  namespaces:
    - namespace_2
    - namespace_1:namespace_2

소스 네임스페이스를 동일한 이름의 네임스페이스에 매핑하려면 매핑을 생성할 필요가 없습니다. 기본적으로 소스 네임스페이스와 대상 네임스페이스의 이름은 동일합니다.

잘못된 네임 스페이스 매핑

spec:
  namespaces:
    - namespace_1:namespace_1

올바른 네임 스페이스 참조

spec:
  namespaces:
    - namespace_1

10.4.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

10.4.4. 영구 볼륨 클레임 매핑

PVC를 매핑하여 소스 클러스터에서 PV(영구 볼륨 클레임) 데이터를 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 이름을 변경할 수 있습니다.

10.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 또는 cephrbd 의 경우 accessMode: ReadWriteOnce 의 경우 cephfs 입니다.
  2. PV가 Gluster와 NFS가 아니거나 cephfs 또는 cephrbd를 사용할 수 없는 경우 기본값은 동일한 프로비저너의 스토리지 클래스입니다.
  3. 동일한 프로비저너의 스토리지 클래스를 사용할 수 없는 경우 기본값은 대상 클러스터의 기본 스토리지 클래스입니다.

storageClass 값은 MigPlan CR의 status.destStorageClasses 블록에서 name 매개변수 값으로 변경할 수 있습니다.

storageClass 값이 비어 있으면 마이그레이션 후 PV에 스토리지 클래스가 없습니다. 예를 들어 대상 클러스터의 NFS 볼륨으로 PV를 이동하려는 경우 이 옵션이 적합합니다.

사전 요구 사항

  • 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 입니다. 하나의 작업만 지원되는 경우 기본값은 지원되는 작업입니다. 여러 작업이 지원되는 경우 기본값은 copy 입니다.
    2
    허용되는 값은 snapshotfilesystem입니다. 기본값은 filesystem 입니다.
    3
    MTC 웹 콘솔에서 파일 시스템 복사에 대한 확인 옵션을 선택하면 verify 매개변수가 표시됩니다. false 로 설정할 수 있습니다.
    4
    MigPlan CR의 status.destStorageClasses 블록에서 name 매개변수 값으로 기본값을 변경할 수 있습니다. 값을 지정하지 않으면 마이그레이션 후 PV에 스토리지 클래스가 없습니다.
    5
    허용되는 값은 ReadWriteOnceReadWriteMany 입니다. 이 값을 지정하지 않으면 기본값은 소스 클러스터 PVC의 액세스 모드입니다. MigPlan CR에서 액세스 모드만 편집할 수 있습니다. MTC 웹 콘솔을 사용하여 편집할 수 없습니다.

10.4.6. MTC 웹 콘솔에서 스토리지 클래스 변환

동일한 클러스터 내에서 마이그레이션하여 PV(영구 볼륨)의 스토리지 클래스를 변환할 수 있습니다. 이를 위해서는 MTC(Migration Toolkit for Containers) 웹 콘솔에서 마이그레이션 계획을 생성하고 실행해야 합니다.

사전 요구 사항

  • MTC가 실행 중인 클러스터에 cluster-admin 권한이 있는 사용자로 로그인해야 합니다.
  • MTC 웹 콘솔에 클러스터를 추가해야 합니다.

절차

  1. OpenShift Container Platform 웹 콘솔의 왼쪽 탐색 창에서 프로젝트를 클릭합니다.
  2. 프로젝트 목록에서 프로젝트를 클릭합니다.

    프로젝트 세부 정보 페이지가 열립니다.

  3. DeploymentConfig 이름을 클릭합니다. 실행 중인 포드의 이름을 확인합니다.
  4. 프로젝트의 YAML 탭을 엽니다. PV를 찾고 해당 PVC(영구 볼륨 클레임)의 이름을 확인합니다.
  5. MTC 웹 콘솔에서 마이그레이션 계획을 클릭합니다.
  6. 마이그레이션 계획 추가를 클릭합니다.
  7. 계획 이름을 입력합니다.

    마이그레이션 계획 이름에는 3에서 63자의 소문자 영숫자(a-z, 0-9)가 포함되어야 하며 공백이나 밑줄(_)을 포함하지 않아야 합니다.

  8. 마이그레이션 유형 메뉴에서 스토리지 클래스 변환을 선택합니다.
  9. 소스 클러스터 목록에서 스토리지 클래스 변환을 위해 원하는 클러스터를 선택합니다.
  10. 다음을 클릭합니다.

    네임스페이스 페이지가 열립니다.

  11. 필요한 프로젝트를 선택합니다.
  12. 다음을 클릭합니다.

    영구 볼륨 페이지가 열립니다. 페이지에는 기본적으로 선택한 모든 PV가 프로젝트에 표시됩니다.

  13. 각 PV에 대해 원하는 대상 스토리지 클래스를 선택합니다.
  14. 다음을 클릭합니다.

    마법사는 새 마이그레이션 계획을 확인하고 준비되었음을 표시합니다.

  15. 닫기를 클릭합니다.

    새 계획이 마이그레이션 계획 페이지에 표시됩니다.

  16. 변환을 시작하려면 새 계획의 옵션 메뉴를 클릭합니다.

    마이그레이션 에서 두 가지 옵션인 StageCutover 가 표시됩니다.

    참고

    컷 오버 마이그레이션 업데이트 애플리케이션의 PVC 참조입니다.

    단계적 마이그레이션은 애플리케이션에서 PVC 참조를 업데이트하지 않습니다.

  17. 원하는 옵션을 선택합니다.

    선택한 옵션에 따라 단계 마이그레이션 또는 마이그레이션 알림이 표시됩니다.

  18. 마이그레이션을 클릭합니다.

    선택한 옵션에 따라 Stage started 또는 Cutover started 메시지가 표시됩니다.

  19. 현재 마이그레이션 상태를 보려면 마이그레이션 열에서 번호를 클릭합니다.

    마이그레이션 페이지가 열립니다.

  20. 현재 마이그레이션에 대한 자세한 내용을 확인하고 진행 상황을 모니터링하려면 유형 열에서 마이그레이션을 선택합니다.

    마이그레이션 세부 정보 페이지가 열립니다. 마이그레이션이 DirectVolume 단계로 진행되고 단계의 상태가 Running Rsync Pod가 되면 영구 볼륨 데이터를 마이그레이션 하면 세부 정보 보기를 클릭하고 복사본의 세부 상태를 확인할 수 있습니다.

  21. 이동 경로 표시줄에서 Stage 또는 Cutover 를 클릭하고 모든 단계가 완료될 때까지 기다립니다.
  22. OpenShift Container Platform 웹 콘솔의 PersistentVolumeClaims 탭을 엽니다.

    초기 PVC의 이름이 있지만 대상 스토리지 클래스를 사용하는 새 PVC로 끝나는 PVC가 새 PVC를 볼 수 있습니다.

  23. 왼쪽 탐색 창에서 Pod 를 클릭합니다. 프로젝트의 Pod가 다시 실행되고 있는지 확인합니다.
추가 리소스

10.4.7. MTC API를 사용하여 Kubernetes 오브젝트의 상태 마이그레이션 수행

모든 PV 데이터를 마이그레이션한 후 MTC(Migration Toolkit for Containers) API를 사용하여 애플리케이션을 구성하는 Kubernetes 오브젝트의 일회성 상태 마이그레이션을 수행할 수 있습니다.

MigPlan 사용자 정의 리소스(CR) 필드를 구성하여 Kubernetes 리소스 목록을 추가 라벨 선택기와 함께 제공하여 이러한 리소스를 추가로 필터링한 다음 MigMigration CR을 생성하여 마이그레이션을 수행하여 수행합니다. MigPlan 리소스는 마이그레이션 후 종료됩니다.

참고

Kubernetes 리소스를 선택하는 것은 API 전용 기능입니다. MigPlan CR을 업데이트하고 CLI를 사용하여 MigMigration CR을 생성해야 합니다. MTC 웹 콘솔은 Kubernetes 오브젝트 마이그레이션을 지원하지 않습니다.

참고

마이그레이션 후 MigPlan CR의 closed 매개변수가 true로 설정됩니다. 이 MigPlan CR에 대해 다른 MigMigration CR을 생성할 수 없습니다.

다음 옵션 중 하나를 사용하여 MigPlan CR에 Kubernetes 오브젝트를 추가합니다.

  • Kubernetes 오브젝트를 includedResources 섹션에 추가합니다. MigPlan CR에 includedResources 필드가 지정되면 계획에서 group-kind 목록을 입력으로 사용합니다. 목록에 있는 리소스만 마이그레이션에 포함됩니다.
  • 선택적 labelSelector 매개변수를 추가하여 MigPlanincludedResources를 필터링합니다. 이 필드를 지정하면 라벨 선택기와 일치하는 리소스만 마이그레이션에 포함됩니다. 예를 들어 app: frontend 레이블을 필터로 사용하여 SecretConfigMap 리소스 목록을 필터링할 수 있습니다.

절차

  1. Kubernetes 리소스를 포함하도록 MigPlan CR을 업데이트하고, 선택적으로 labelSelector 매개변수를 추가하여 포함된 리소스를 필터링합니다.

    1. Kubernetes 리소스를 포함하도록 MigPlan CR을 업데이트하려면 다음을 수행합니다.

      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. 선택한 Kubernetes 리소스를 마이그레이션하기 위해 MigMigration CR을 생성합니다. migPlanRef:에서 올바른 MigPlan 이 참조되었는지 확인합니다.

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