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

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

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

  • 対応するリージョン内に一覧表示された gcr.io プロジェクトごとに、Artifact Registry に gcr.io リポジトリまたは標準リポジトリを作成します。
  • 各リポジトリに IAM ポリシーを提案し、ユーザーの好みに応じてポリシーを適用するかアプリケーションをスキップします。
  • gcr.io エンドポイントからすべてのトラフィックを Artifact Registry にリダイレクトします。
  • リダイレクトをすでに有効にしている場合でも、Container Registry に保存されているすべてのコンテナ イメージを Artifact Registry gcr.io リポジトリまたは標準リポジトリにコピーします。

始める前に

  1. Google Cloud CLI をインストールします。
  2. gcloud CLI を初期化するには:

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

      Artifact Registry API を有効にします。

      API を有効にする

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

      Artifact Registry API を有効にします。

      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 コマンドを使用して、1 つの 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 に依存しなくなりました。

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

各イメージの最近アップロードされた特定のバージョンをコピーする場合は、--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 リポジトリにコピーします。

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

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

イメージをコピー

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

次のステップ