このドキュメントでは、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.
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します。
gcloud init
-
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.
この手順を省略すると、自動移行ツールによって Artifact Registry API を有効にするよう求められます。
必要なロール
自動移行ツールを使用するすべての移行オプションには、次のロールが必要です。
サービス アカウントのロール:
Artifact Registry に移行するプロジェクトごとに、Artifact Registry サービス アカウントに次のロールを付与する必要があります。
Artifact Registry サービス アカウントに Container 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
フラグを使用して、プロセス中にエラーやタイムアウトが発生した場合にイメージのコピーを再開することもできます。