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

自動移行ツールを使用して、Container Registry から Artifact Registry でホストされる gcr.io リポジトリまたは標準 Artifact Registry リポジトリに移行します。

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. 移行オプションを選択する
    • Artifact Registry でホストされている gcr.io リポジトリに移行する場合は、移行する Container Registry プロジェクトで Artifact Registry API を有効にします。この手順をスキップすると、Artifact Registry API を有効にするよう求めるプロンプトも表示されます。

      Enable the Artifact Registry API.

      Enable the API

    • 標準の Artifact Registry リポジトリに移行する場合は、Container Registry コンテナ イメージを移行するプロジェクトで Artifact Registry API を有効にします。Container Registry が有効になっている同じプロジェクトを使用することも、別のプロジェクトを使用することもできます。

      Enable the Artifact Registry API.

      Enable the API

必要なロール

自動移行ツールを使用するすべての移行オプションで、次のロールが必要です。

Artifact Registry サービス アカウントに必要なロール:

Container Registry から Artifact Registry にイメージをコピーするために必要な権限を Artifact Registry サービス アカウントに付与するには、Artifact Registry サービス アカウントに Container Registry プロジェクトに対するストレージ オブジェクト閲覧者 roles/storage.objectViewer)の IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。

管理者は、カスタムロールや他の事前定義ロールを使用して、Artifact Registry サービス アカウントに必要な権限を付与することもできます。

IAM の推奨事項の生成に必要なロール:

許可ポリシーの分析に必要な権限を取得するには、移行する Container Registry プロジェクトに対して次の IAM ロールを付与するよう管理者に依頼してください。

ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。

これらの事前定義ロールには、許可ポリシーの分析に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

許可ポリシーを分析するには、次の権限が必要です。

  • cloudasset.assets.analyzeIamPolicy
  • cloudasset.assets.searchAllResources
  • cloudasset.assets.searchAllIamPolicies
  • IAM のカスタムロールでポリシーを分析するには: iam.roles.get
  • Google Cloud CLI を使用してポリシーを分析するには: serviceusage.services.use

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

次のロールは、移行オプションに応じて異なるリソースに付与されます。

gcr.io リポジトリ

Artifact Registry でホストされている gcr.io リポジトリに移行するために必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。

  • Artifact Registry リポジトリを作成し、個々のリポジトリへのアクセス権を付与する: Container Registry イメージを含む Google Cloud プロジェクトの Artifact Registry 管理者roles/artifactregistry.admin
  • Cloud Storage ストレージ バケットに適用される既存の Container Registry 構成を表示して管理する: Container Registry イメージを含む Google Cloud プロジェクトの Storage 管理者roles/storage.admin

ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

標準リポジトリ

標準の Artifact Registry リポジトリに移行するために必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。

  • Artifact Registry リポジトリを作成し、個々のリポジトリへのアクセス権を付与する: Artifact Registry API が有効になっている Google Cloud プロジェクトに対する Artifact Registry 管理者roles/artifactregistry.admin
  • Cloud Storage ストレージ バケットに適用される既存の Container Registry 構成を表示して管理する: Container Registry イメージを含む Google Cloud プロジェクトの Storage 管理者roles/storage.admin

ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

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~150 日間のイメージのみをコピーする場合は、--recent-images=DAYS フラグを指定します。DAYS は、ツールが pull をチェックする日数(30 ~ 150 日)に置き換えます。

各イメージの最近アップロードした特定の数のバージョンをコピーする場合は、--last-uploaded-versions=VERSIONS フラグを指定します。VERSIONS は、各イメージに対してコピーするバージョンの数に置き換えます。コピー中に新しいイメージがアップロードされると、指定された数以上のバージョンがコピーされる可能性があります。

--recent-images フラグと --last-uploaded-versions フラグは相互に排他的であり、同時に使用することはできません。

エラーやタイムアウトが発生した場合は、コマンドを安全に再実行できます。完了した手順はスキップされます。

標準の Artifact Registry リポジトリに移行する

  1. gcr.io プロジェクトを Artifact Registry リポジトリに移行するには、次のコマンドを実行します。

    gcloud artifacts docker upgrade migrate \
        --from-gcr=GCR_HOSTNAME/GCR_PROJECT \
        --to-pkg-dev=AR_PROJECT/AR_REPOSITORY
    

    次のように置き換えます。

    • GCR_HOSTNAME は、Container Registry ホスト名に置き換えます。ホスト名は、コンテナ イメージの保存場所によって異なります。

      • gcr.io は米国でイメージをホストします。
      • us.gcr.io は米国でイメージをホストしますが、その場所は、gcr.io によってホストされるイメージからは独立したストレージ バケットです。
      • eu.gcr.io は、欧州連合の加盟国でイメージをホストします。
      • asia.gcr.io は、アジアでイメージをホストします。
    • GCR_PROJECT は、Container Registry の Google Cloud プロジェクト ID に置き換えます。プロジェクト ID にコロン(:)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。

    • AR_PROJECT は、Artifact Registry API を有効にした Google Cloud プロジェクト ID に置き換えます。

    • AR_REPOSITORY は、Artifact Registry リポジトリの名前に置き換えます。

移行ツールは次の手順を実施します。

  • リポジトリがまだ存在しない場合は、Artifact Registry リポジトリを作成します。
  • リポジトリの IAM ポリシーを提案し、ユーザーの設定に応じてポリシーを適用するか、アプリケーションをスキップします。
  • 指定した Container Registry のリージョンとプロジェクトのイメージを Artifact Registry リポジトリにコピーします。

Container Registry から pull された過去 30~150 日間のイメージのみをコピーする場合は、--recent-images=DAYS フラグを指定します。DAYS は、ツールが pull をチェックする日数(30 ~ 150 日)に置き換えます。

エラーやタイムアウトが発生した場合は、コマンドを安全に再実行できます。完了した手順はスキップされます。

イメージをコピー

移行ツールは、コンテナ イメージを実行すると、コンテナ イメージを自動的にコピーしますが、自動移行の他のすべての手順をスキップし、このツールを使用して 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 リポジトリにコピーします。

Container Registry から標準の Artifact Registry リポジトリにイメージをコピーするには、次のコマンドを実行します。

gcloud artifacts docker upgrade migrate \
    --from-gcr=GCR_HOSTNAME/GCR_PROJECT \
    --to-pkg-dev=AR_PROJECT/AR_REPOSITORY \
    --copy-only

次のように置き換えます。

  • GCR_HOSTNAME は、Container Registry ホスト名に置き換えます。ホスト名は、コンテナ イメージの保存場所によって異なります。

    • gcr.io は米国でイメージをホストします。
    • us.gcr.io は米国でイメージをホストしますが、その場所は、gcr.io によってホストされるイメージからは独立したストレージ バケットです。
    • eu.gcr.io は、欧州連合の加盟国でイメージをホストします。
    • asia.gcr.io は、アジアでイメージをホストします。
  • GCR_PROJECT は、Container Registry の Google Cloud プロジェクト ID に置き換えます。プロジェクト ID にコロン(:)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。

  • AR_PROJECT は、Artifact Registry API を有効にした Google Cloud プロジェクト ID に置き換えます。

  • AR_REPOSITORY は、Artifact Registry リポジトリの名前に置き換えます。

このツールは、すべての移行手順をスキップし、Container Registry 内の指定されたロケーションとプロジェクトから Artifact Registry リポジトリにイメージをコピーします。

プロセス中にエラーまたはタイムアウトが発生した場合は、--copy-only フラグを使用してイメージのコピーを再開することもできます。

次のステップ