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> 210.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
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-migration10.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-migration10.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
trueの場合、migration-controllerPod がこのクラスターで実行されます。- 3
- Microsoft Azure のみ: リソースグループを指定します。
- 4
- オプション: 自己署名 CA 証明書の証明書バンドルを作成しており、
insecure なパラメーターの値がfalseの場合、base64 でエンコードされた証明書バンドルを指定します。 - 5
- SSL 検証を無効にするには
trueに設定します。 - 6
- クラスターを検証するには、
trueに設定します。 - 7
ステージPod の作成後にResticPod をソースクラスターで再起動するには、trueに設定します。- 8
- リモートクラスターおよび直接のイメージ移行のみ: 公開されるセキュアなレジストリールートを指定します。
- 9
- リモートクラスターのみ: URL を指定します。
- 10
- リモートクラスターのみ:
Secretオブジェクトの名前を指定します。
10.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
- フックの実行先のクラスターを指定します。有効な値は
ソースまたは宛先です。
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に設定します。ソースクラスターの Pod は、Backupステージの後に0にスケーリングされます。 - 5
- 移行中に適用されるラベルとアノテーションは保持するには、
trueを設定します。 - 6
- 宛先クラスターで移行される Pod のステータスをチェックして、
Running状態にない Pod の名前を返すには、trueに設定します。
10.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の場合、移行が完了します。このMigPlanCR の別のMigMigrationCR を作成することはできません。- 2
- オプション: 最大 4 つの移行フックを指定できます。各フックは異なる移行フェーズで実行される必要があります。
- 3
- オプション: フックが実行される namespace を指定します。
- 4
- オプション: フックが実行される移行フェーズを指定します。1 つのフックを 1 つのフェーズに割り当てることができます。有効な値は、
PreBackup、PostBackup、PreRestore、およびPostRestoreです。 - 5
- オプション:
MigHookCR の名前を指定します。 - 6
- オプション:
MigHookCR の namespace を指定します。 - 7
- オプション:
cluster-admin権限でサービスアカウントを指定します。 - 8
falseの場合、直接的なイメージ移行が無効にされます。イメージはソースクラスターからレプリケーションリポジトリーに、レプリケーションリポジトリーから宛先クラスターにコピーされます。- 9
falseの場合、直接的なボリューム移行が無効にされます。PV はソースクラスターからレプリケーションリポジトリーに、レプリケーションリポジトリーから宛先クラスターにコピーされます。- 10
- namespace を 1 つ以上指定します。ソース namespace のみを指定する場合には、宛先 namespace は同じになります。
- 11
- 宛先 namespace が異なる場合には、宛先 namespace を指定します。
- 12
trueの場合、MigPlanCR が検証されます。
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 Key Management Service を使用している場合は、キーの一意の識別子を指定します。
- 7
- AWS のみ: AWS バケットへのパブリックアクセスを付与する場合は、バケット URL を指定します。
- 8
- AWS のみ: バケットに対する要求の認証に使用する AWS 署名バージョン (例:
4) を指定します。 - 9
- スナップショットを使用したコピー方法のみ: クラスターの地理的なリージョンを指定します。
- 10
- スナップショットを使用したコピー方法のみ: ストレージ用に作成した
Secretオブジェクトの名前を指定します。 - 11
- クラスターを検証するには、
trueに設定します。