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. To initialize the gcloud CLI, run the following command:

    gcloud init
  3. 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 リポジトリにコピーします。

次のステップ