11.5. 마이그레이션 계획 옵션
MigPlan
CR(사용자 정의 리소스)에서 구성 요소를 제외, 편집 및 매핑할 수 있습니다.
11.5.1. 리소스 제외
마이그레이션하기 위해 리소스 로드를 줄이거나 다른 도구를 사용하여 이미지 또는 PV를 마이그레이션하기 위해 MTC(Migration Toolkit for Containers) 마이그레이션 계획에서 리소스(예: 이미지 스트림, 영구 볼륨(PV) 또는 서브스크립션)를 제외할 수 있습니다.
기본적으로 MTC는 서비스 카탈로그 리소스 및 OLM(Operator Lifecycle Manager) 리소스를 마이그레이션에서 제외합니다. 이러한 리소스는 현재 마이그레이션에 지원되지 않는 서비스 카탈로그 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
- 마이그레이션 계획에서 PV를 제외하려면
disable_pv_migration: true
를 추가합니다.MigrationController
Pod가 다시 시작되면persistentvolumes
및persistentvolumeclaims
가main.yml
의excluded_resources
목록에 추가됩니다. PV 마이그레이션을 비활성화하면 마이그레이션 계획을 생성할 때 PV 검색도 비활성화됩니다. - 3
additional_excluded_resources
목록에 제외하려는 OpenShift Container Platform 리소스를 추가할 수 있습니다.
-
변경 사항이 적용되도록
MigrationController
포드가 다시 시작될 때까지 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(사용자 정의 리소스)에서 네임스페이스를 매핑하는 경우 마이그레이션 중에 네임스페이스의 UID 및 GID 범위가 복사되므로 소스 또는 대상 클러스터에서 네임스페이스가 복제되지 않아야 합니다.
두 개의 소스 네임스페이스가 동일한 대상 네임스페이스에 매핑됨
spec: namespaces: - namespace_2 - namespace_1:namespace_2
소스 네임스페이스를 동일한 이름의 네임스페이스에 매핑하려면 매핑을 생성할 필요가 없습니다. 기본적으로 소스 네임스페이스와 대상 네임스페이스의 이름은 동일합니다.
잘못된 네임 스페이스 매핑
spec: namespaces: - namespace_1:namespace_1
올바른 네임 스페이스 참조
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. 영구 볼륨 클레임 매핑
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 이름을 변경할 수 있습니다.
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
또는cephrbd
의 경우accessMode: ReadWriteOnce
의 경우cephfs
입니다. -
PV가 Gluster와 NFS가 아니거나
cephfs
또는cephrbd
를 사용할 수 없는 경우 기본값은 동일한 프로비저너의 스토리지 클래스입니다. - 동일한 프로비저너의 스토리지 클래스를 사용할 수 없는 경우 기본값은 대상 클러스터의 기본 스토리지 클래스입니다.
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
- 허용되는 값은
snapshot
및filesystem
입니다. 기본값은filesystem
입니다. - 3
- MTC 웹 콘솔에서 파일 시스템 복사에 대한 확인 옵션을 선택하면
verify
매개변수가 표시됩니다.false
로 설정할 수 있습니다. - 4
MigPlan
CR의status.destStorageClasses
블록에서name
매개변수 값으로 기본값을 변경할 수 있습니다. 값을 지정하지 않으면 마이그레이션 후 PV에 스토리지 클래스가 없습니다.- 5
- 허용되는 값은
ReadWriteOnce
및ReadWriteMany
입니다. 이 값을 지정하지 않으면 기본값은 소스 클러스터 PVC의 액세스 모드입니다.MigPlan
CR에서 액세스 모드만 편집할 수 있습니다. MTC 웹 콘솔을 사용하여 편집할 수 없습니다.
추가 리소스
-
move
및copy
작업에 대한 자세한 내용은 MTC 워크플로를 참조하십시오. -
skip
작업에 대한 자세한 내용은 마이그레이션에서 PVC 제외를 참조하십시오. - 파일 시스템 및 스냅샷 복사 방법에 대한 자세한 내용은 데이터 복사 방법 정보를 참조하십시오.
11.5.6. 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
매개변수를 추가하여MigPlan
에includedResources
를 필터링합니다. 이 필드를 지정하면 라벨 선택기와 일치하는 리소스만 마이그레이션에 포함됩니다. 예를 들어app: frontend
레이블을 필터로 사용하여Secret
및ConfigMap
리소스 목록을 필터링할 수 있습니다.
프로세스
Kubernetes 리소스를 포함하도록
MigPlan
CR을 업데이트하고, 선택적으로labelSelector
매개변수를 추가하여 포함된 리소스를 필터링합니다.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
).
선택 사항:
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
선택한 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