1.7.4. 非推奨の API の更新
ソースクラスターが非推奨の API を使用する場合、MTC (Migration Toolkit for Containers) Web コンソールで移行計画を作成する際に以下の警告メッセージが表示されます。
Some namespaces contain GVKs incompatible with destination cluster
See details をクリックして namespace および互換性のない API を表示します。この警告メッセージは移行をブロックしません。
MTC (Migration Toolkit for Containers) を使用した移行時に、非推奨の API は Kubernetes オブジェクトの Velero バックアップ #1 に保存されます。Velero バックアップをダウンロードし、非推奨の API yaml ファイルを展開し、それらを oc convert コマンドで更新できます。次に、ターゲットクラスターで更新された API を作成できます。
手順
- 移行計画を実行します。
MigPlanカスタムリソース (CR) を表示します:$ oc describe migplan <migplan_name> -n openshift-migration1 - 1
MigPlanCR の名前を指定します。
出力は以下の例のようになります。
metadata: ... uid: 79509e05-61d6-11e9-bc55-02ce4781844a1 status: ... conditions: - category: Warn lastTransitionTime: 2020-04-30T17:16:23Z message: 'Some namespaces contain GVKs incompatible with destination cluster. See: `incompatibleNamespaces` for details' status: "True" type: GVKsIncompatible incompatibleNamespaces: - gvks:2 - group: batch kind: cronjobs version: v2alpha1 - group: batch kind: scheduledjobs version: v2alpha1MigPlanUID に関連付けられたMigMigration名を取得します。$ oc get migmigration -o json | jq -r '.items[] | select(.metadata.ownerReferences[].uid=="<migplan_uid>") | .metadata.name'1 - 1
MigPlanCR UID を指定します。
MigMigration名に関連付けられたMigMigrationUID を取得します。$ oc get migmigration <migmigration_name> -o jsonpath='{.metadata.uid}'1 - 1
MigMigration名を指定します。
MigMigrationUID に関連付けられたVeleroバックアップ名を取得します。$ oc get backup.velero.io --selector migration-initial-backup="<migmigration_uid>" -o jsonpath={.items[*].metadata.name}1 - 1
MigMigrationUID を指定します。
ストレージプロバイダーのコマンドを実行して、
Veleroバックアップの内容をローカルマシンにダウンロードします。AWS S3:
$ aws s3 cp s3://<bucket_name>/velero/backups/<backup_name> <backup_local_dir> --recursive1 - 1
- バケット、バックアップ名、およびローカルバックアップのディレクトリー名を指定します。
GCP
$ gsutil cp gs://<bucket_name>/velero/backups/<backup_name> <backup_local_dir> --recursive1 - 1
- バケット、バックアップ名、およびローカルバックアップのディレクトリー名を指定します。
Azure:
$ azcopy copy 'https://velerobackups.blob.core.windows.net/velero/backups/<backup_name>' '<backup_local_dir>' --recursive1 - 1
- バックアップ名とローカルバックアップのディレクトリー名を指定します。
Veleroバックアップアーカイブファイルを展開します。$ tar -xfv <backup_local_dir>/<backup_name>.tar.gz -C <backup_local_dir>非推奨のそれぞれの API でオフラインモードで
oc convertを実行します。$ oc convert -f <backup_local_dir>/resources/<gvk>.jsonターゲットクラスターで変換された API を作成します。
$ oc create -f <gvk>.json