11.2. MTC 사용자 정의 리소스 매니페스트
MTC(Migration Toolkit for Containers)는 다음 사용자 정의 리소스(CR) 매니페스트를 사용하여 애플리케이션을 마이그레이션합니다.
11.2.1. DirectImageMigration
DirectImageMigration
CR은 소스 클러스터에서 대상 클러스터로 이미지를 직접 복사합니다.
apiVersion: migration.openshift.io/v1alpha1 kind: DirectImageMigration metadata: labels: controller-tools.k8s.io: "1.0" name: <direct_image_migration> spec: srcMigClusterRef: name: <source_cluster> namespace: openshift-migration destMigClusterRef: name: <destination_cluster> namespace: openshift-migration namespaces: 1 - <source_namespace_1> - <source_namespace_2>:<destination_namespace_3> 2
11.2.2. DirectImageStreamMigration
DirectImageStreamMigration
CR은 소스 클러스터에서 대상 클러스터로 직접 이미지 스트림 참조를 복사합니다.
apiVersion: migration.openshift.io/v1alpha1 kind: DirectImageStreamMigration metadata: labels: controller-tools.k8s.io: "1.0" name: <direct_image_stream_migration> spec: srcMigClusterRef: name: <source_cluster> namespace: openshift-migration destMigClusterRef: name: <destination_cluster> namespace: openshift-migration imageStreamRef: name: <image_stream> namespace: <source_image_stream_namespace> destNamespace: <destination_image_stream_namespace>
11.2.3. DirectVolumeMigration
DirectVolumeMigration
CR은 소스 클러스터에서 대상 클러스터로 직접 PV(영구 볼륨)를 복사합니다.
apiVersion: migration.openshift.io/v1alpha1 kind: DirectVolumeMigration metadata: name: <direct_volume_migration> namespace: openshift-migration spec: createDestinationNamespaces: false 1 deleteProgressReportingCRs: false 2 destMigClusterRef: name: <host_cluster> 3 namespace: openshift-migration persistentVolumeClaims: - name: <pvc> 4 namespace: <pvc_namespace> srcMigClusterRef: name: <source_cluster> namespace: openshift-migration
11.2.4. DirectVolumeMigrationProgress
DirectVolumeMigrationProgress
CR은 DirectVolumeMigration
CR의 진행 상황을 보여줍니다.
apiVersion: migration.openshift.io/v1alpha1 kind: DirectVolumeMigrationProgress metadata: labels: controller-tools.k8s.io: "1.0" name: <direct_volume_migration_progress> spec: clusterRef: name: <source_cluster> namespace: openshift-migration podRef: name: <rsync_pod> namespace: openshift-migration
11.2.5. MigAnalytic
MigAnalytic
CR은 이미지 수, Kubernetes 리소스 및 관련 MigPlan
CR에서 영구 볼륨 (PV) 용량을 수집합니다.
수집하는 데이터를 구성할 수 있습니다.
apiVersion: migration.openshift.io/v1alpha1 kind: MigAnalytic metadata: annotations: migplan: <migplan> name: <miganalytic> namespace: openshift-migration labels: migplan: <migplan> spec: analyzeImageCount: true 1 analyzeK8SResources: true 2 analyzePVCapacity: true 3 listImages: false 4 listImagesLimit: 50 5 migPlanRef: name: <migplan> namespace: openshift-migration
11.2.6. MigCluster
MigCluster
CR은 호스트, 로컬 또는 원격 클러스터를 정의합니다.
apiVersion: migration.openshift.io/v1alpha1 kind: MigCluster metadata: labels: controller-tools.k8s.io: "1.0" name: <host_cluster> 1 namespace: openshift-migration spec: isHostCluster: true 2 # The 'azureResourceGroup' parameter is relevant only for Microsoft Azure. azureResourceGroup: <azure_resource_group> 3 caBundle: <ca_bundle_base64> 4 insecure: false 5 refresh: false 6 # The 'restartRestic' parameter is relevant for a source cluster. restartRestic: true 7 # The following parameters are relevant for a remote cluster. exposedRegistryPath: <registry_route> 8 url: <destination_cluster_url> 9 serviceAccountSecretRef: name: <source_secret> 10 namespace: openshift-config
- 1
migration-controller
pod가 이 클러스터에서 실행되지 않는 경우 클러스터 이름을 업데이트합니다.- 2
migration-controller
pod는true
인 경우 이 클러스터에서 실행됩니다.- 3
- Microsoft Azure만 해당: 리소스 그룹을 지정합니다.
- 4
- 선택 사항: 자체 서명된 CA 인증서에 대한 인증서 번들을 생성하고
insecure
매개변수 값이false
인 경우 base64 인코딩 인증서 번들을 지정합니다. - 5
- SSL 확인을 비활성화하려면
true
로 설정합니다. - 6
- 클러스터를 확인하려면
true
로 설정합니다. - 7
Stage
pod가 생성된 후 소스 클러스터에서Restic
pod를 다시 시작하려면true
로 설정합니다.- 8
- 원격 클러스터 및 직접 이미지 마이그레이션만 해당: 공용 보안 레지스트리 경로를 지정합니다.
- 9
- 원격 클러스터만 해당: URL을 지정합니다.
- 10
- 원격 클러스터만 해당:
Secret
오브젝트의 이름을 지정합니다.
11.2.7. MigHook
MigHook
CR은 마이그레이션의 지정된 단계에서 사용자 정의 코드를 실행하는 마이그레이션 후크를 정의합니다. 최대 4개의 마이그레이션 후크를 생성할 수 있습니다. 각 후크는 마이그레이션의 다른 단계에서 실행됩니다.
후크 이름, 런타임 기간, 사용자 정의 이미지 및 후크를 실행할 클러스터를 구성할 수 있습니다.
후크의 마이그레이션 단계 및 네임스페이스는 MigPlan
CR에 구성됩니다.
apiVersion: migration.openshift.io/v1alpha1 kind: MigHook metadata: generateName: <hook_name_prefix> 1 name: <mighook> 2 namespace: openshift-migration spec: activeDeadlineSeconds: 1800 3 custom: false 4 image: <hook_image> 5 playbook: <ansible_playbook_base64> 6 targetCluster: source 7
- 1
- 선택 사항: 각 마이그레이션 후크마다 고유한 이름이 있도록 이 매개변수의 값에 고유한 해시가 추가됩니다.
name
매개변수의 값을 지정할 필요가 없습니다. - 2
generateName
매개변수 값을 지정하지 않으면 마이그레이션 후크 이름을 지정합니다.- 3
- 선택 사항: 후크를 실행할 수 있는 최대 초를 지정합니다. 기본값은
1800
입니다. - 4
true
인 경우 후크는 사용자 정의 이미지입니다. 사용자 지정 이미지는 Ansible을 포함하거나 다른 프로그래밍 언어로 작성할 수 있습니다.- 5
- 사용자 지정 이미지를 지정합니다(예:
quay.io/konveyor/hook-runner:latest
).custom
가true
인 경우 필수 항목입니다. - 6
- base64로 인코딩된 Ansible 플레이북입니다.
custom
가false
인 경우 필수 항목입니다. - 7
- 후크를 실행할 클러스터를 지정합니다. 유효한 값은
source
또는destination
입니다.
11.2.8. MigMigration
MigMigration
CR은 MigPlan
CR을 실행합니다.
단계 또는 증분 마이그레이션을 실행하거나 진행 중인 마이그레이션을 취소하거나 완료된 마이그레이션을 롤백하도록 Migmigration
CR을 구성할 수 있습니다.
apiVersion: migration.openshift.io/v1alpha1 kind: MigMigration metadata: labels: controller-tools.k8s.io: "1.0" name: <migmigration> namespace: openshift-migration spec: canceled: false 1 rollback: false 2 stage: false 3 quiescePods: true 4 keepAnnotations: true 5 verify: false 6 migPlanRef: name: <migplan> namespace: openshift-migration
- 1
- 진행 중인 마이그레이션을 취소하려면
true
로 설정합니다. - 2
- 완료된 마이그레이션을 롤백하려면
true
로 설정합니다. - 3
- 단계적 마이그레이션을 실행하려면
true
로 설정합니다. 데이터가 증분적으로 복사되고 소스 클러스터의 pod가 중지되지 않습니다. - 4
- 마이그레이션 중에 애플리케이션을 중지하려면
true
로 설정합니다.backup
단계 후에 소스 클러스터의 pod는0
으로 조정됩니다. - 5
- 마이그레이션 프로세스 중에 적용되는 레이블 및 주석을 유지하려면
true
로 설정합니다. - 6
- 대상 클러스터에서 마이그레이션된 pod의 상태를 확인하고
Running
상태가 아닌 pod의 이름을 반환하려면true
로 설정합니다.
11.2.9. MigPlan
MigPlan
CR은 마이그레이션 계획의 매개변수를 정의합니다.
대상 네임스페이스, 후크 단계, 직접 또는 간접 마이그레이션을 구성할 수 있습니다.
기본적으로 대상 네임스페이스의 이름은 소스 네임스페이스와 동일합니다. 다른 대상 네임스페이스를 구성하는 경우 마이그레이션 중에 UID 및 GID 범위가 복사되므로 소스 또는 대상 클러스터에서 네임스페이스가 복제되지 않도록 해야 합니다.
apiVersion: migration.openshift.io/v1alpha1 kind: MigPlan metadata: labels: controller-tools.k8s.io: "1.0" name: <migplan> namespace: openshift-migration spec: closed: false 1 srcMigClusterRef: name: <source_cluster> namespace: openshift-migration destMigClusterRef: name: <destination_cluster> namespace: openshift-migration hooks: 2 - executionNamespace: <namespace> 3 phase: <migration_phase> 4 reference: name: <hook> 5 namespace: <hook_namespace> 6 serviceAccount: <service_account> 7 indirectImageMigration: true 8 indirectVolumeMigration: false 9 migStorageRef: name: <migstorage> namespace: openshift-migration namespaces: - <source_namespace_1> 10 - <source_namespace_2> - <source_namespace_3>:<destination_namespace_4> 11 refresh: false 12
- 1
true
인 경우 마이그레이션이 완료되었습니다. 이MigPlan
CR에 대해 다른MigMigration
CR을 생성할 수 없습니다.- 2
- 선택 사항: 최대 4개의 마이그레이션 후크를 지정할 수 있습니다. 각 후크는 다른 마이그레이션 단계에서 실행되어야 합니다.
- 3
- 선택 사항: 후크를 실행할 네임스페이스를 지정합니다.
- 4
- 선택 사항: 후크가 실행되는 마이그레이션 단계를 지정합니다. 하나의 후크를 하나의 단계에 할당할 수 있습니다. 유효한 값은
PreBackup
,PostBackup
,PreRestore
및PostRestore
입니다. - 5
- 선택 사항:
MigHook
CR의 이름을 지정합니다. - 6
- 선택 사항:
MigHook
CR의 네임스페이스를 지정합니다. - 7
- 선택 사항:
cluster-admin
권한이 있는 서비스 계정을 지정합니다. - 8
true
인 경우 직접 이미지 마이그레이션이 비활성화됩니다. 이미지는 소스 클러스터에서 복제 리포지토리로, 복제 리포지토리에서 대상 클러스터로 복사됩니다.- 9
true
인 경우 직접 볼륨 마이그레이션이 비활성화됩니다. PV는 소스 클러스터에서 복제 리포지토리로, 복제 리포지토리에서 대상 클러스터로 복사됩니다.- 10
- 하나 이상의 소스 네임스페이스를 지정합니다. 소스 네임스페이스만 지정하는 경우 대상 네임스페이스는 동일합니다.
- 11
- 대상 네임스페이스가 소스 네임스페이스와 다른 경우 지정합니다.
- 12
MigPlan
CR이true
인 경우 검증됩니다.
11.2.10. MigStorage
MigStorage
CR은 복제 리포지토리의 오브젝트 스토리지를 설명합니다.
Amazon Web Services(AWS), Microsoft Azure, Google Cloud Storage, Multi-Cloud Object Gateway 및 일반 S3 호환 클라우드 스토리지를 지원합니다.
AWS 및 스냅샷 복사 방법에는 추가 매개 변수가 있습니다.
apiVersion: migration.openshift.io/v1alpha1 kind: MigStorage metadata: labels: controller-tools.k8s.io: "1.0" name: <migstorage> namespace: openshift-migration spec: backupStorageProvider: <backup_storage_provider> 1 volumeSnapshotProvider: <snapshot_storage_provider> 2 backupStorageConfig: awsBucketName: <bucket> 3 awsRegion: <region> 4 credsSecretRef: namespace: openshift-config name: <storage_secret> 5 awsKmsKeyId: <key_id> 6 awsPublicUrl: <public_url> 7 awsSignatureVersion: <signature_version> 8 volumeSnapshotConfig: awsRegion: <region> 9 credsSecretRef: namespace: openshift-config name: <storage_secret> 10 refresh: false 11
- 1
- 스토리지 공급자를 지정합니다.
- 2
- 스냅샷 복사 방법만: 스토리지 공급자를 지정합니다.
- 3
- AWS만 해당: 버킷 이름을 지정합니다.
- 4
- AWS만 해당: 버킷 리전을 지정합니다(예:
us-east-1
). - 5
- 스토리지를 위해 생성한
Secret
오브젝트의 이름을 지정합니다. - 6
- AWS만 해당: AWS 키 관리 서비스를 사용하는 경우 키의 고유 식별자를 지정합니다.
- 7
- AWS만 해당: AWS 버킷에 대한 공용 액세스 권한이 부여된 경우 버킷 URL을 지정합니다.
- 8
- AWS만 해당: 버킷에 대한 요청을 인증하기 위해 AWS 서명 버전을 지정합니다(예:
4
). - 9
- 스냅샷 복사 방법만 해당: 클러스터의 지역 리전을 지정합니다.
- 10
- 스냅샷 복사 방법만 해당: 스토리지를 위해 생성한
Secret
오브젝트의 이름을 지정합니다. - 11
- 클러스터를 확인하려면
true
로 설정합니다.