第9章 高度な移行オプション
本セクションでは、移行の自動化、移行プランの変更に関する高度なオプションについて説明します。
関連情報
9.1. MTC カスタムリソース リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、MTC (Migration Toolkit for Containers) で使用されるカスタムリソース (CR) について説明します。
9.1.1. MTC カスタムリソースについて リンクのコピーリンクがクリップボードにコピーされました!
MTC (Migration Toolkit for Containers) は以下のカスタムリソース (CR) を作成します。
MigCluster (設定、MTC クラスター): クラスター定義
MigStorage (設定、MTC クラスター): ストレージ定義
MigPlan (設定、MTC クラスター): 移行計画
MigPlan CR は、移行されるソースおよびターゲットクラスター、レプリケーションリポジトリー、および namespace を記述します。これは 0、1 または多数の MigMigration CR に関連付けられます。
MigPlan CR を削除すると、関連付けられた MigMigration CR が削除されます。
BackupStorageLocation (設定、MTC クラスター): Velero バックアップオブジェクトの場所
VolumeSnapshotLocation (設定、MTC クラスター): Velero ボリュームスナップショットの場所
MigMigration (アクション、MTC クラスター): データのステージングまたは移行時に毎回作成される移行。各 MigMigration CR は MigPlan CR に関連付けられます。
Backup (アクション、ソースクラスター): 移行計画の実行時に、MigMigration CR は各ソースクラスターに 2 つの Velero バックアップ CR を作成します。
- Kubernetes オブジェクトのバックアップ CR #1
- PV データのバックアップ CR #2
Restore (アクション、ターゲットクラスター): 移行計画の実行時に、MigMigration CR はターゲットクラスターに 2 つの Velero 復元 CR を作成します。
- PV データの復元 CR #1 (バックアップ CR #2 の使用)
- Kubernetes オブジェクトの復元 CR #2 (バックアップ CR #1 の使用)
9.1.2. MTC カスタムリソースマニフェスト リンクのコピーリンクがクリップボードにコピーされました!
MTC (Migration Toolkit for Containers) は以下のカスタムリソース (CR) マニフェストを使用して、アプリケーションを移行します。
9.1.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:
- <source_namespace_1>
- <source_namespace_2>:<destination_namespace_3>
9.1.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>
9.1.2.3. DirectVolumeMigration リンクのコピーリンクがクリップボードにコピーされました!
DirectVolumeMigration CR は永続ボリューム (PV) をソースクラスターから宛先クラスターに直接コピーします。
apiVersion: migration.openshift.io/v1alpha1
kind: DirectVolumeMigration
metadata:
name: <direct_volume_migration>
namespace: openshift-migration
spec:
createDestinationNamespaces: false
deleteProgressReportingCRs: false
destMigClusterRef:
name: <host_cluster>
namespace: openshift-migration
persistentVolumeClaims:
- name: <pvc>
namespace: <pvc_namespace>
srcMigClusterRef:
name: <source_cluster>
namespace: openshift-migration
9.1.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
9.1.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
analyzeK8SResources: true
analyzePVCapacity: true
listImages: false
listImagesLimit: 50
migPlanRef:
name: <migplan>
namespace: openshift-migration
9.1.2.6. MigCluster リンクのコピーリンクがクリップボードにコピーされました!
MigCluster CR は、ホスト、ローカル、またはリモートクラスターを定義します。
apiVersion: migration.openshift.io/v1alpha1
kind: MigCluster
metadata:
labels:
controller-tools.k8s.io: "1.0"
name: <host_cluster>
namespace: openshift-migration
spec:
isHostCluster: true
# The 'azureResourceGroup' parameter is relevant only for Microsoft Azure.
azureResourceGroup: <azure_resource_group>
caBundle: <ca_bundle_base64>
insecure: false
refresh: false
# The 'restartRestic' parameter is relevant for a source cluster.
restartRestic: true
# The following parameters are relevant for a remote cluster.
exposedRegistryPath: <registry_route>
url: <destination_cluster_url>
serviceAccountSecretRef:
name: <source_secret>
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
- リモートクラスターのみ:
SecretCR の名前を指定します。
9.1.2.7. MigHook リンクのコピーリンクがクリップボードにコピーされました!
MigHook CR は、指定の移行段階でカスタムコードを実行する移行フックを定義します。最大 4 つの移行フックを作成できます。各フックは異なる移行フェーズで実行されます。
フック名、ランタイム期間、カスタムイメージ、およびフックが実行されるクラスターを設定できます。
フックの移行フェーズおよび namespace は MigPlan CR で設定されます。
apiVersion: migration.openshift.io/v1alpha1
kind: MigHook
metadata:
generateName: <hook_name_prefix>
name: <mighook>
namespace: openshift-migration
spec:
activeDeadlineSeconds: 1800
custom: false
image: <hook_image>
playbook: <ansible_playbook_base64>
targetCluster: source
- 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
- フックの実行先のクラスターを指定します。有効な値は
ソースまたは宛先です。
9.1.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
rollback: false
stage: false
quiescePods: true
keepAnnotations: true
verify: false
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に設定します。
9.1.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
srcMigClusterRef:
name: <source_cluster>
namespace: openshift-migration
destMigClusterRef:
name: <destination_cluster>
namespace: openshift-migration
hooks:
- executionNamespace: <namespace>
phase: <migration_phase>
reference:
name: <hook>
namespace: <hook_namespace>
serviceAccount: <service_account>
indirectImageMigration: true
indirectVolumeMigration: false
migStorageRef:
name: <migstorage>
namespace: openshift-migration
namespaces:
- <source_namespace_1>
- <source_namespace_2>
- <source_namespace_3>:<destination_namespace_4>
refresh: false
- 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 が検証されます。
9.1.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>
volumeSnapshotProvider: <snapshot_storage_provider>
backupStorageConfig:
awsBucketName: <bucket>
awsRegion: <region>
credsSecretRef:
namespace: openshift-config
name: <storage_secret>
awsKmsKeyId: <key_id>
awsPublicUrl: <public_url>
awsSignatureVersion: <signature_version>
volumeSnapshotConfig:
awsRegion: <region>
credsSecretRef:
namespace: openshift-config
name: <storage_secret>
refresh: false
- 1
- ストレージプロバイダーを指定します。
- 2
- スナップショットのコピー方法のみ: ストレージプロバイダーを指定します。
- 3
- AWS のみ: バケット名を指定します。
- 4
- AWS のみ: バケットリージョン (例:
us-east-1) を指定します。 - 5
- ストレージ用に作成した
SecretCR の名前を指定します。 - 6
- AWS のみ: AWS Key Management Service を使用している場合は、キーの一意の識別子を指定します。
- 7
- AWS のみ: AWS バケットへのパブリックアクセスを付与する場合は、バケット URL を指定します。
- 8
- AWS のみ: バケットに対する要求の認証に使用する AWS 署名バージョン (例:
4) を指定します。 - 9
- スナップショットを使用したコピー方法のみ: クラスターの地理的なリージョンを指定します。
- 10
- スナップショットを使用したコピー方法のみ: ストレージ用に作成した
SecretCR の名前を指定します。 - 11
- クラスターを検証するには、
trueに設定します。