12.2. MTC 사용자 정의 리소스 매니페스트
MTC(Migration Toolkit for Containers)는 다음 사용자 정의 리소스(CR) 매니페스트를 사용하여 애플리케이션을 마이그레이션합니다.
12.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> 212.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>12.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
12.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-migration12.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-migration12.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-controllerpod가 이 클러스터에서 실행되지 않는 경우 클러스터 이름을 업데이트합니다.- 2
migration-controllerpod는true인 경우 이 클러스터에서 실행됩니다.- 3
- Microsoft Azure만 해당: 리소스 그룹을 지정합니다.
- 4
- 선택 사항: 자체 서명된 CA 인증서에 대한 인증서 번들을 생성하고
insecure매개변수 값이false인 경우 base64 인코딩 인증서 번들을 지정합니다. - 5
- SSL 확인을 비활성화하려면
true로 설정합니다. - 6
- 클러스터를 확인하려면
true로 설정합니다. - 7
Stagepod가 생성된 후 소스 클러스터에서Resticpod를 다시 시작하려면true로 설정합니다.- 8
- 원격 클러스터 및 직접 이미지 마이그레이션만 해당: 공용 보안 레지스트리 경로를 지정합니다.
- 9
- 원격 클러스터만 해당: URL을 지정합니다.
- 10
- 원격 클러스터만 해당:
Secret오브젝트의 이름을 지정합니다.
12.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입니다.
12.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로 설정합니다.
12.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인 경우 마이그레이션이 완료되었습니다. 이MigPlanCR에 대해 다른MigMigrationCR을 생성할 수 없습니다.- 2
- 선택 사항: 최대 4개의 마이그레이션 후크를 지정할 수 있습니다. 각 후크는 다른 마이그레이션 단계에서 실행되어야 합니다.
- 3
- 선택 사항: 후크를 실행할 네임스페이스를 지정합니다.
- 4
- 선택 사항: 후크가 실행되는 마이그레이션 단계를 지정합니다. 하나의 후크를 하나의 단계에 할당할 수 있습니다. 유효한 값은
PreBackup,PostBackup,PreRestore및PostRestore입니다. - 5
- 선택 사항:
MigHookCR의 이름을 지정합니다. - 6
- 선택 사항:
MigHookCR의 네임스페이스를 지정합니다. - 7
- 선택 사항:
cluster-admin권한이 있는 서비스 계정을 지정합니다. - 8
true인 경우 직접 이미지 마이그레이션이 비활성화됩니다. 이미지는 소스 클러스터에서 복제 리포지토리로, 복제 리포지토리에서 대상 클러스터로 복사됩니다.- 9
true인 경우 직접 볼륨 마이그레이션이 비활성화됩니다. PV는 소스 클러스터에서 복제 리포지토리로, 복제 리포지토리에서 대상 클러스터로 복사됩니다.- 10
- 하나 이상의 소스 네임스페이스를 지정합니다. 소스 네임스페이스만 지정하는 경우 대상 네임스페이스는 동일합니다.
- 11
- 대상 네임스페이스가 소스 네임스페이스와 다른 경우 지정합니다.
- 12
MigPlanCR이true인 경우 검증됩니다.
12.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로 설정합니다.