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

このドキュメントでは、Container Registry から pkg.dev Artifact Registry リポジトリに移行するために必要な手順について説明します。

ほとんどの Container Registry ユーザーは、pkg.dev リポジトリではなく、Artifact Registry でホストされる gcr.io リポジトリに移行する必要があります。Artifact Registry の gcr.io リポジトリと pkg.dev リポジトリの違いを理解している場合にのみ、次の手順に沿って操作してください。

自動移行ツールは、選択した移行パスに応じて次の操作を実行できます。

  • 対応するリージョンの gcr.io プロジェクト用に Artifact Registry に pkg.dev リポジトリを作成します。
  • リポジトリの IAM ポリシーを提案し、ユーザーの設定に応じてポリシーを適用するか、適用をスキップします。
  • Container Registry に保存されているすべてのコンテナ イメージを Artifact Registry pkg.dev リポジトリにコピーします。

始める前に

  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 に移行するプロジェクトごとに、Artifact Registry サービス アカウントに次のロールを付与する必要があります。

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

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

ユーザー役割:

pkg.dev Artifact Registry リポジトリに移行するために必要な権限を取得するには、移行する Google Cloud 組織またはプロジェクトに対する Artifact Registry Container Registry 移行管理者ロール(roles/artifactregistry.containerRegistryMigrationAdmin)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。

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

pkg.dev Artifact Registry リポジトリに移行する

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

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

イメージをコピー

移行ツールは、コンテナ イメージを実行すると、コンテナ イメージを自動的にコピーしますが、自動移行の他のすべての手順をスキップし、このツールを使用して Artifact Registry にイメージをコピーする場合は、--copy-onlyフラグを渡すことができます。

Container Registry から pkg.dev 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 フラグを使用してイメージのコピーを再開することもできます。

次のステップ