12.2. MTC カスタムリソースマニフェスト
Migration Toolkit for Containers (MTC) は以下のカスタムリソース (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> 2
12.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-migration
12.2.5. MigAnalytic
MigAnalytic
CR は、関連付けられた MigPlan
CR から、イメージの数、Kubernetes リソースおよび永続ボリューム (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
12.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
true
の場合、migration-controller
Pod がこのクラスターで実行されます。- 3
- Microsoft Azure のみ: リソースグループを指定します。
- 4
- オプション: 自己署名 CA 証明書の証明書バンドルを作成しており、
insecure な
パラメーターの値がfalse
の場合、base64 でエンコードされた証明書バンドルを指定します。 - 5
- SSL 検証を無効にするには
true
に設定します。 - 6
- クラスターを検証するには、
true
に設定します。 - 7
ステージ
Pod の作成後にRestic
Pod をソースクラスターで再起動するには、true
に設定します。- 8
- リモートクラスターおよび直接のイメージ移行のみ: 公開されるセキュアなレジストリールートを指定します。
- 9
- リモートクラスターのみ: URL を指定します。
- 10
- リモートクラスターのみ:
Secret
オブジェクトの名前を指定します。
12.2.7. MigHook
MigHook
CR は、指定の移行段階でカスタムコードを実行する移行フックを定義します。最大 4 つの移行フックを作成できます。各フックは異なる移行フェーズで実行されます。
フック名、ランタイム期間、カスタムイメージ、およびフックが実行されるクラスターを設定できます。
フックの移行フェーズおよび namespace は 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 Playbook。
custom
がfalse
の場合に必要です。 - 7
- フックの実行先のクラスターを指定します。有効な値は
ソース
または宛先
です。
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
に設定します。ソースクラスターの Pod は、Backup
ステージの後に0
にスケーリングされます。 - 5
- 移行中に適用されるラベルとアノテーションは保持するには、
true
を設定します。 - 6
- 宛先クラスターで移行される Pod のステータスをチェックして、
Running
状態にない Pod の名前を返すには、true
に設定します。
12.2.9. MigPlan
MigPlan
CR は移行計画のパラメーターを定義します。
宛先 namespace、フックフェーズ、および直接または間接的な移行を設定できます。
デフォルトで、宛先 namespace の名前はソース namespace と同じになります。別の宛先の namespace を設定した場合には、UID および GID の範囲が移行時にコピーされるため、namespace が移行元または移行先ホストで複製されないようにする必要があります。
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
- オプション: フックが実行される namespace を指定します。
- 4
- オプション: フックが実行される移行フェーズを指定します。1 つのフックを 1 つのフェーズに割り当てることができます。有効な値は、
PreBackup
、PostBackup
、PreRestore
、およびPostRestore
です。 - 5
- オプション:
MigHook
CR の名前を指定します。 - 6
- オプション:
MigHook
CR の namespace を指定します。 - 7
- オプション:
cluster-admin
権限でサービスアカウントを指定します。 - 8
true
の場合は、直接的なイメージ移行が無効になります。イメージはソースクラスターからレプリケーションリポジトリーに、レプリケーションリポジトリーから宛先クラスターにコピーされます。- 9
true
の場合は、直接的なボリューム移行が無効になります。PV はソースクラスターからレプリケーションリポジトリーに、レプリケーションリポジトリーから宛先クラスターにコピーされます。- 10
- namespace を 1 つ以上指定します。ソース namespace のみを指定する場合には、宛先 namespace は同じになります。
- 11
- 宛先 namespace が異なる場合には、宛先 namespace を指定します。
- 12
true
の場合、MigPlan
CR が検証されます。
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 Key Management Service を使用している場合は、キーの一意の識別子を指定します。
- 7
- AWS のみ: AWS バケットへのパブリックアクセスを付与する場合は、バケット URL を指定します。
- 8
- AWS のみ: バケットに対する要求の認証に使用する AWS 署名バージョン (例:
4
) を指定します。 - 9
- スナップショットを使用したコピー方法のみ: クラスターの地理的なリージョンを指定します。
- 10
- スナップショットを使用したコピー方法のみ: ストレージ用に作成した
Secret
オブジェクトの名前を指定します。 - 11
- クラスターを検証するには、
true
に設定します。