このドキュメントでは、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
リポジトリにコピーします。
始める前に
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Enable the Artifact Registry 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 リポジトリに移行する
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
フラグを使用してイメージのコピーを再開することもできます。