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. 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.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

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

次のステップ