自動移行ツールを使用して、Container Registry から Artifact Registry でホストされている gcr.io
リポジトリに移行します。
Artifact Registry gcr.io
リポジトリへの移行は、ダウンタイムやサービスの停止を必要とせずに、トラフィックを受信する Container Registry エンドポイントで実行できます。
自動移行ツールでは、次の操作を実行できます。
- 対応するリージョンに一覧表示された
gcr.io
プロジェクトごとに、Artifact Registry でgcr.io
リポジトリを作成します。 - 各リポジトリの IAM ポリシーを提案し、ユーザーの好みに応じてポリシーを適用するか、適用をスキップします。
gcr.io
エンドポイントからのすべてのトラフィックを Artifact Registry にリダイレクトします。- リダイレクトをすでに有効にしている場合でも、Container Registry に保存されているすべてのコンテナ イメージを Artifact Registry
gcr.io
リポジトリにコピーします。
始める前に
-
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 の gcr.io
リポジトリに移行するには、次のロールが必要です。
サービス アカウントのロール:
artifact-registry-same-project-copier@system.gserviceaccount.com
のメールアドレスまたは Artifact Registry サービス アカウントで gcr.io
移行サービス アカウントを使用して、Artifact Registry の gcr.io
リポジトリに移行できます。
移行に使用するサービス アカウントに、Container Registry から Artifact Registry にイメージをコピーするために必要な権限があることを確認するには、移行に使用するサービス アカウントに、Container Registry のプロジェクト、フォルダ、または組織に対する Storage オブジェクト閲覧者 (roles/storage.objectViewer
)IAM ロールを付与するよう管理者に依頼します。
管理者は、カスタムロールや他の事前定義ロールを使用して、移行に使用するサービス アカウントに必要な権限を付与することもできます。
ユーザーロール:
Artifact Registry でホストされている gcr.io
リポジトリに移行するために必要な権限を取得するには、移行する Google Cloud 組織またはプロジェクトに対する Artifact Registry Container Registry 移行管理者ロール (roles/artifactregistry.containerRegistryMigrationAdmin
)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
Artifact Registry でホストされている gcr.io
リポジトリに移行する
gcloud artifacts docker upgrade migrate
コマンドを使用して、単一の 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 に依存しなくなりました。
Container Registry から pull された過去 30~180 日間のイメージのみをコピーする場合は、--recent-images=DAYS
フラグを指定します。DAYS は、ツールが pull をチェックする日数(30~180 日)に置き換えます。
最近アップロードされた各イメージの特定の数のバージョンをコピーする場合は、--last-uploaded-versions=VERSIONS
フラグを含めることができます。VERSIONS は、各イメージでコピーするバージョン数に置き換えます。コピー中に新しい画像がアップロードされると、指定されたバージョン数よりも多くのバージョンがコピーされることがあります。
--recent-images
フラグと --last-uploaded-versions
フラグは相互に排他的であり、同時に使用することはできません。
エラーやタイムアウトが発生した場合は、コマンドを安全に再実行できます。完了した手順はスキップされます。
カナリア読み取りで移行を遅くする
--canary-reads
フラグを使用すると、読み取りの割合のみを Artifact Registry にロールアウトできます。書き込みはロールアウトされません。Artifact Registry から pull された不足しているイメージは、リクエスト時に Container Registry からコピーされます。
カナリア読み取りによる移行には、次の 2 つの利点があります。
- Artifact Registry へのロールアウトは、まず少数のリクエストでテストできます。
- プロセスのほとんどでイメージが Container Registry に push されるため、ロールバックする方が安全です。
次の手順をおすすめします。
カナリア リードの割合を 1% に設定するには、次のコマンドを実行します。
gcloud artifacts docker upgrade migrate \ --projects=PROJECTS \ --canary-reads=1
すべてが正常に動作していることを確認します。
カナリア リードの割合を 10% に設定するには、次のコマンドを実行します。
gcloud artifacts docker upgrade migrate \ --projects=PROJECTS \ --canary-reads=10
すべてが正常に動作していることを確認します。
カナリア リードを 100% に設定するには、次のコマンドを実行します。
gcloud artifacts docker upgrade migrate \ --projects=PROJECTS \ --canary-reads=100
この時点で、すべての読み取りは Artifact Registry に送信され、すべての書き込みは引き続き Container Registry に送信されます。
移行を完了するには、--canary-reads
フラグなしで artifacts docker upgrade migrate
コマンドを実行して、Artifact Registry にも書き込みを送信します。
gcloud artifacts docker upgrade migrate \
--projects=PROJECTS
カナリア読み取りをロールバックする
カナリア読み取りをロールバックするには、次のコマンドを実行します。
gcloud artifacts docker upgrade migrate \
--projects=PROJECTS \
--canary-reads=0
gcloud artifacts settings disable-upgrade-redirection
コマンドまたは gcloud artifacts settings enable-upgrade-redirection
コマンドを実行すると、カナリア読み取りも無効になります。
AnalyzeIamPolicy の割り当て
多数のプロジェクトを移行していて、AnalyzeIamPolicy 割り当てが不足している場合は、--no-use-analyze-iam
フラグを使用できます。移行に --no-use-analyze-iam
フラグを使用すると、使用しない場合よりも処理が遅くなりますが、AnalyzeIamPolicy 割り当てに対するリクエストの送信を回避できます。