はじめに
Container Registry が非推奨となり、Artifact Registry への移行が必要になりました。
移行のタイムライン、移行手順について記載します。
移行が必要
Google Cloud は、コンテナイメージの管理サービスを Container Registry から Artifact Registry へと移行することを決定しました。次のタイムラインで移行されるので、 Container Registry を使用しているプロジェクトは移行が必要です。
重要なタイムライン
- 2024年5月15日以降: Container Registry の使用歴がないプロジェクトでは、gcr.io ドメインのイメージが Artifact Registry でホストされるようになります。
- 2025年3月18日: Container Registry の提供が終了します。
- 2025年4月22日以降: Container Registry からの既存イメージの読み取りができなくなります。
Artifact Registry の利点
- コンテナイメージとコンテナ以外のアーティファクトの両方をサポート
- Cloud IAM を通じたリポジトリレベルのアクセス制御
- リージョンリポジトリのサポートによる可用性とスピードの向上
- セキュリティ、スケーラビリティ、コントロールの大幅な改善
移行オプション
- gcr.io リポジトリ: Container Registry の gcr.io ホスト名にマッピングされたリポジトリ
- pkg.dev リポジトリ: Artifact Registry の全機能をサポートする独立したリポジトリ
自動移行ツールの利用
Google Cloud は自動移行ツールを提供しており、以下の利点があります:
- ダウンタイムやサービス停止なしで移行可能
- Artifact Registry に gcr.io リポジトリを自動作成
- IAM ポリシーの提案と適用
- トラフィックのリダイレクト設定
- コンテナイメージの自動コピー
Container Registry から Artifact Registry への移行手順
Google Cloud は Container Registry の提供を終了し、Artifact Registry への移行を推奨しています。以下では、自動移行ツールを使用して、Container Registry から Artifact Registry に移行する手順をステップバイステップで解説します。
前提条件
-
Google Cloud CLI のインストールと更新
- 以下のコマンドで Google Cloud CLI をインストールまたは最新バージョンに更新します。
gcloud components update
- 以下のコマンドで Google Cloud CLI をインストールまたは最新バージョンに更新します。
-
Artifact Registry API の有効化
- Artifact Registry API を有効にします。
gcloud services enable artifactregistry.googleapis.com
- Artifact Registry API を有効にします。
-
必要な IAM ロールの確認
- サービスアカウントに以下のロールが付与されていることを確認してください:
-
roles/storage.objectViewer
(Container Registry のイメージ閲覧権限)
-
- ユーザーには以下のロールが必要です:
-
roles/artifactregistry.containerRegistryMigrationAdmin
(Artifact Registry 移行管理者)
-
- サービスアカウントに以下のロールが付与されていることを確認してください:
移行手順
1. 自動移行コマンドの実行
以下のコマンドを実行して、Container Registry から Artifact Registry に移行します:
gcloud artifacts docker upgrade migrate \
--projects=PROJECT_ID
-
PROJECT_ID
は移行対象の Google Cloud プロジェクト ID を指定します。 - 複数プロジェクトを同時に移行する場合は、カンマ区切りで複数のプロジェクト ID を指定できます。
このコマンドにより、以下の操作が自動的に実行されます:
- 各リージョンに対応する gcr.io リポジトリを Artifact Registry に作成。
- IAM ポリシーの提案と適用(またはスキップ)。
- Container Registry の gcr.io エンドポイントから Artifact Registry へのトラフィックリダイレクト。
- Container Registry に保存されているすべてのコンテナイメージを Artifact Registry にコピー。
2. 特定条件でのイメージコピー
特定条件でのみイメージをコピーしたい場合、以下のオプションを使用できます:
過去一定期間内に pull されたイメージのみコピー
gcloud artifacts docker upgrade migrate \
--projects=PROJECT_ID \
--recent-images=DAYS
-
DAYS
は過去の日数(30~180日)を指定します。
各イメージの最新バージョンのみコピー
gcloud artifacts docker upgrade migrate \
--projects=PROJECT_ID \
--last-uploaded-versions=VERSIONS
-
VERSIONS
はコピーする最新バージョン数を指定します。
注意: --recent-images
と --last-uploaded-versions
は併用できません。
3. イメージのみコピー
他の移行手順をスキップし、コンテナイメージだけを Artifact Registry にコピーしたい場合は、以下のコマンドを使用します:
gcloud artifacts docker upgrade migrate \
--projects=PROJECT_ID \
--copy-only
移行後の確認
-
リポジトリとイメージの確認
- 移行後、Artifact Registry 上でリポジトリとイメージが正しく作成されているか確認します。
gcloud artifacts repositories list gcloud artifacts docker images list LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME
- 移行後、Artifact Registry 上でリポジトリとイメージが正しく作成されているか確認します。
-
CI/CD パイプラインの更新
- Container Registry を参照している設定やスクリプト(例: CI/CD パイプライン)を Artifact Registry に変更します。
-
Docker 認証情報の更新
- Docker クライアントで Artifact Registry を使用する場合、認証情報を設定します。
gcloud auth configure-docker LOCATION-docker.pkg.dev
- Docker クライアントで Artifact Registry を使用する場合、認証情報を設定します。
まとめ
Container Registry から Artifact Registry への移行は、自動移行ツールを使用することで簡単かつ安全に実施できます。期限が迫っているため、早めに対応しましょう。