10.4. 마이그레이션 계획 옵션
MigPlan
CR(사용자 정의 리소스)에서 구성 요소를 제외, 편집 및 매핑할 수 있습니다.
10.4.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
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
매개변수의 기본값은 다음 논리에 따라 결정됩니다.
-
소스 클러스터 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 웹 콘솔을 사용하여 편집할 수 없습니다.
10.4.6. MTC 웹 콘솔에서 스토리지 클래스 변환
동일한 클러스터 내에서 마이그레이션하여 PV(영구 볼륨)의 스토리지 클래스를 변환할 수 있습니다. 이렇게 하려면 MTC(Migration Toolkit for Containers) 웹 콘솔에서 마이그레이션 계획을 생성하고 실행해야 합니다.
사전 요구 사항
-
MTC가 실행 중인 클러스터에
cluster-admin
권한이 있는 사용자로 로그인해야 합니다. - MTC 웹 콘솔에 클러스터를 추가해야 합니다.
프로세스
- OpenShift Container Platform 웹 콘솔의 왼쪽 탐색 창에서 프로젝트를 클릭합니다.
프로젝트 목록에서 프로젝트를 클릭합니다.
프로젝트 세부 정보 페이지가 열립니다.
- DeploymentConfig 이름을 클릭합니다. 실행 중인 pod의 이름을 기록해 둡니다.
- 프로젝트의 YAML 탭을 엽니다. PV를 찾고 해당 PVC(영구 볼륨 클레임)의 이름을 기록해 둡니다.
- MTC 웹 콘솔에서 마이그레이션 계획을 클릭합니다.
- 마이그레이션 계획 추가를 클릭합니다.
계획 이름을 입력합니다.
마이그레이션 계획 이름에는 3~63자의 소문자 영숫자(
a-z, 0-9
0-9)가 포함되어야 하며 공백이나 밑줄(_
)을 포함해서는 안 됩니다.- 마이그레이션 유형 메뉴에서 스토리지 클래스 변환을 선택합니다.
- 소스 클러스터 목록에서 스토리지 클래스 변환을 위해 원하는 클러스터를 선택합니다.
다음을 클릭합니다.
네임스페이스 페이지가 열립니다.
- 필요한 프로젝트를 선택합니다.
다음을 클릭합니다.
영구 볼륨 페이지가 열립니다. 페이지에 기본적으로 선택한 모든 PV가 프로젝트에 표시됩니다.
- 각 PV에 대해 원하는 대상 스토리지 클래스를 선택합니다.
다음을 클릭합니다.
마법사는 새 마이그레이션 계획을 검증하고 준비 상태임을 표시합니다.
닫기를 클릭합니다.
새 계획이 마이그레이션 계획 페이지에 나타납니다.
변환을 시작하려면 새 계획의 옵션 메뉴를 클릭합니다.
마이그레이션에서 단계 및 컷오버 의 두 가지 옵션이 표시됩니다.
참고축소 마이그레이션은 애플리케이션의 PVC 참조를 업데이트합니다.
단계 마이그레이션은 애플리케이션의 PVC 참조를 업데이트하지 않습니다.
원하는 옵션을 선택합니다.
선택한 옵션에 따라 마이그레이션 단계 또는 컷오버 마이그레이션 알림이 표시됩니다.
마이그레이션을 클릭합니다.
선택한 옵션에 따라 시작 단계 또는 컷오버 시작 메시지가 표시됩니다.
현재 마이그레이션의 상태를 보려면 마이그레이션 열에서 번호를 클릭합니다.
마이그레이션 페이지가 열립니다.
현재 마이그레이션에 대한 자세한 내용과 진행 상황을 모니터링하려면 유형 열에서 마이그레이션을 선택합니다.
마이그레이션 세부 정보 페이지가 열립니다. 마이그레이션이 DirectVolume 단계로 진행되고 단계 상태가
Running Rsync Pods to migrate Persistent Volume data
로 되는 경우 세부 정보 보기를 클릭하고 복사본의 자세한 상태를 확인할 수 있습니다.- 이동 경로 표시줄에서 단계 또는 컷오버 를 클릭하고 모든 단계가 완료될 때까지 기다립니다.
OpenShift Container Platform 웹 콘솔의 영구 볼륨 클레임 탭을 엽니다.
초기 PVC의 이름으로 새 PVC를 볼 수 있지만 대상 스토리지 클래스를 사용하는 PVC는
new
PVC로 끝납니다.- 왼쪽 탐색 창에서 Pod 를 클릭합니다. 프로젝트의 Pod가 다시 실행 중인지 확인합니다.
추가 리소스
-
move
및copy
작업에 대한 자세한 내용은 MTC 워크플로를 참조하십시오. -
skip
작업에 대한 자세한 내용은 마이그레이션에서 PVC 제외를 참조하십시오. - 파일 시스템 및 스냅샷 복사 방법에 대한 자세한 내용은 데이터 복사 방법 정보를 참조하십시오.
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
매개변수를 추가하여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