Container Registry から Artifact Registry に自動的に移行する

自動移行ツールを使用して、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 リポジトリにコピーします。

始める前に

  1. Install the Google Cloud CLI.

  2. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  3. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. Enable the Artifact Registry API.

    Enable the 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 リポジトリにコピーします。

次のステップ