10.2. MTC 사용자 정의 리소스 매니페스트

MTC(Migration Toolkit for Containers)는 다음 사용자 정의 리소스(CR) 매니페스트를 사용하여 애플리케이션을 마이그레이션합니다.

10.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
1
마이그레이션할 이미지를 포함하는 하나 이상의 네임스페이스입니다. 기본적으로 대상 네임스페이스의 이름은 소스 네임스페이스와 동일합니다.
2
다른 이름으로 대상 네임스페이스의 소스 네임스페이스에 매핑합니다.

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

10.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
1
대상 클러스터의 PV에 네임스페이스를 만들려면 true로 설정합니다.
2
마이그레이션 후 DirectVolumeMigrationProgress CR을 삭제하려면 true로 설정합니다. 문제 해결을 위해 DirectVolumeMigrationProgress CR이 유지되기 위한 기본값은 false입니다.
3
대상 클러스터가 호스트 클러스터가 아닌 경우 클러스터 이름을 업데이트합니다.
4
마이그레이션할 하나 이상의 PVC를 지정합니다.

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

10.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
1
선택 사항: 이미지 수를 반환합니다.
2
선택 사항: Kubernetes 리소스의 수, 종류 및 API 버전을 반환합니다.
3
선택 사항: PV 용량을 반환합니다.
4
이미지 이름 목록을 반환합니다. 기본값은 false이므로 출력이 과도하게 길지 않습니다.
5
선택 사항: listImagestrue인 경우 최대 이미지 이름 수를 지정합니다.

10.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 오브젝트의 이름을 지정합니다.

10.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). customtrue인 경우 필수 항목입니다.
6
base64로 인코딩된 Ansible 플레이북입니다. customfalse인 경우 필수 항목입니다.
7
후크를 실행할 클러스터를 지정합니다. 유효한 값은 source 또는 destination입니다.

10.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로 설정합니다.

10.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, PreRestorePostRestore입니다.
5
선택 사항: MigHook CR의 이름을 지정합니다.
6
선택 사항: MigHook CR의 네임스페이스를 지정합니다.
7
선택 사항: cluster-admin 권한이 있는 서비스 계정을 지정합니다.
8
true인 경우 직접 이미지 마이그레이션이 비활성화됩니다. 이미지는 소스 클러스터에서 복제 리포지토리로, 복제 리포지토리에서 대상 클러스터로 복사됩니다.
9
true인 경우 직접 볼륨 마이그레이션이 비활성화됩니다. PV는 소스 클러스터에서 복제 리포지토리로, 복제 리포지토리에서 대상 클러스터로 복사됩니다.
10
하나 이상의 소스 네임스페이스를 지정합니다. 소스 네임스페이스만 지정하는 경우 대상 네임스페이스는 동일합니다.
11
대상 네임스페이스가 소스 네임스페이스와 다른 경우 지정합니다.
12
MigPlan CR이 true인 경우 검증됩니다.

10.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로 설정합니다.