自動移行ツールを使用して、Container Registry から Artifact Registry でホストされる gcr.io
リポジトリに移行します。
Artifact Registry gcr.io
リポジトリへの移行は、ダウンタイムやサービスの停止を必要とせずに、トラフィックを受信する Container Registry エンドポイントで実行できます。
自動移行ツールは次のアクションを実行できます。
- 対応するリージョンに一覧表示された
gcr.io
プロジェクトごとに、Artifact Registry でgcr.io
リポジトリを作成します。 - リポジトリごとに IAM ポリシーを提案し、ユーザーの設定に応じてポリシーを適用するか、適用をスキップします。
- すべてのトラフィックを
gcr.io
エンドポイントから Artifact Registry にリダイレクトします。 - リダイレクトをすでに有効にしている場合でも、Container Registry に保存されているすべてのコンテナ イメージを Artifact Registry
gcr.io
リポジトリにコピーします。
始める前に
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Enable the Artifact Registry API.
この手順をスキップすると、Artifact Registry API を有効にするよう自動移行ツールから求められます。
必要なロール
自動移行ツールを使用して Artifact Registry の gcr.io
リポジトリに移行するには、次のロールが必要です。
サービス アカウントのロール:
artifact-registry-same-project-copier@system.gserviceaccount.com
のメールアドレスを持つ gcr.io
移行サービス アカウントまたは Artifact Registry サービス アカウントを使用して、Artifact Registry の gcr.io
リポジトリに移行できます。
移行に使用しているサービス アカウントに、Container Registry から Artifact Registry にイメージをコピーするために必要な権限が付与されるように、移行に使用しているサービス アカウントに Container Registry プロジェクト、フォルダ、または組織に対する ストレージ オブジェクト閲覧者 (roles/storage.objectViewer
)IAM ロールを付与するよう管理者に依頼します。ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。
管理者は、カスタムロールや他の事前定義ロールを使用して、移行に使用しているサービス アカウントに必要な権限を付与することもできます。
ユーザー役割:
Artifact Registry でホストされている gcr.io
リポジトリに移行するために必要な権限を取得するには、移行する Google Cloud 組織またはプロジェクトに対する Artifact Registry Container Registry 移行管理者ロール (roles/artifactregistry.containerRegistryMigrationAdmin
)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
Artifact Registry でホストされている gcr.io
リポジトリに移行する
gcloud artifacts docker upgrade migrate
コマンドを使用して、単一の Google Cloud プロジェクトまたは複数の Google Cloud プロジェクトを同時に移行できます。
gcr.io
リポジトリに移行するには、次のコマンドを実行します。
gcloud artifacts docker upgrade migrate \
--projects=PROJECTS
PROJECTS は、Artifact Registry でホストされている gcr.io
リポジトリに移行する単一プロジェクトのプロジェクト ID、または Artifact Registry でホストされている gcr.io
リポジトリに移行するプロジェクト ID のカンマ区切りのリストです。
移行ツールは次の手順を実施します。
- 対応するリージョンに一覧表示された
gcr.io
プロジェクトごとに、Artifact Registry でgcr.io
リポジトリを作成します。 - リポジトリごとに IAM ポリシーを提案し、ユーザーの設定に応じてポリシーを適用するか、適用をスキップします。
- すべてのトラフィックを
gcr.io
エンドポイントから Artifact Registry にリダイレクトします。Artifact Registry は、すべてのコンテナ イメージが Artifact Registry にコピーされるまで、リクエスト時に Container Registry から不足しているイメージをコピーして、一時的に不足しているイメージを提供します。 gcr.io
バケットに保存されているすべてのコンテナ イメージを、Artifact Registry でホストされている新しく作成されたgcr.io
リポジトリにコピーします。- リクエスト時のコピーを無効にします。Artifact Registry でホストされている
gcr.io
リポジトリは、Container Registry に依存しなくなりました。
Container Registry から pull された過去 30 ~ 180 日間のイメージのみをコピーする場合は、--recent-images=DAYS
フラグを指定します。DAYS は、ツールが pull をチェックする日数(30 ~ 180 日)に置き換えます。
各画像の最近アップロードされたバージョンを特定の数だけコピーする場合は、--last-uploaded-versions=VERSIONS
フラグを指定します。VERSIONS は、各イメージにコピーするバージョンの数に置き換えます。コピー中に新しい画像がアップロードされると、指定したバージョン数を超えるバージョンがコピーされる場合があります。
--recent-images
フラグと --last-uploaded-versions
フラグは相互に排他的であり、併用することはできません。
エラーやタイムアウトが発生した場合は、コマンドを安全に再実行できます。完了した手順はスキップされます。
イメージをコピー
移行ツールは、コンテナ イメージを実行すると、コンテナ イメージを自動的にコピーしますが、自動移行の他のすべての手順をスキップし、このツールを使用して Artifact Registry にイメージをコピーする場合は、--copy-only
フラグを渡すことができます。
Container Registry から Artifact Registry でホストされている gcr.io
リポジトリにイメージをコピーするには、次のコマンドを実行します。
gcloud artifacts docker upgrade migrate \
--projects=PROJECTS \
--copy-only
PROJECTS は、Artifact Registry でホストされている gcr.io
リポジトリに移行する単一プロジェクトのプロジェクト ID、または Artifact Registry でホストされている gcr.io
リポジトリに移行するプロジェクト ID のカンマ区切りのリストです。
このツールはすべての移行手順をスキップし、指定したプロジェクトのイメージを Container Registry から Artifact Registry でホストされている gcr.io
リポジトリにコピーします。