8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Container RegistryからArtifact Registryに移行する方法

Last updated at Posted at 2023-07-03

はじめに

本記事はContainer RegistryからArtifact Registryに移行する方法について記載しています。

リリースノートのMay 15, 2023よりContainer Registryは非推奨になり、Artifact Registryに置き換わります。

Artifact Registryの移行に関する概要及び機能の比較については、Container Registry からの移行より確認できます。

Artifact Registry

Artifact Registryは、Dockerイメージに限らず、ビルド アーティファクトを保存、管理、保護します。

次のアーティファクト形式のリポジトリを作成できます。

  • コンテナ イメージ: Docker、Helm
  • 言語パッケージ: Java、Node.js、Python
  • OS パッケージ: Debian、RPM

料金はArtifact Registry の料金から確認できます。

脆弱性スキャンを使用してコンテナイメージに対するスキャンを行うことができます。
料金については有効にしている場合、課金されます。

移行手順

標準リポジトリの移行手順は、公式ドキュメントの標準リポジトリへの移行より確認できます。

所感として移行作業自体は問題なく、簡単に終えることができました。
イメージをコピーするツールが用意されているため、Container RegistryからArtifact Registryにイメージをコピーできます。既存のイメージをArtifact Registryにプッシュする作業は不要です。

また、公式ドキュメントでは権限設定の記載がありますが、既に権限を持っている場合は不要です。

API有効化

Artifact Registry を使用するためには、Google CloudコンソールからArtifact Registry APIを有効にします。

スクリーンショット 2023-06-28 13.40.30.png

リポジトリ作成

Artifact Registryを開き「リポジトリを作成」を押します。

スクリーンショット 2023-06-28 13.43.54.png

「作成」を押します。

スクリーンショット 2023-06-28 13.45.14.png

イメージのコピー

Container Registry からのイメージをコピーするを参考にしながら、移行ツールとしてgcraneを利用します。

gcraneのダウンロード後、以下のようなコマンドを実行します。
PROJECT_IDのみ任意の値に変更

  • asia.gcr.ioの例
gcrane cp -r asia.gcr.io/PROJECT_ID asia-docker.pkg.dev/PROJECT_ID/asia.gcr.io

コマンドを実行後、イメージのコピーが完了するのを待ちます。

確認

イメージのコピーが完了すると、以下のような4つのリポジトリについて作成されたことが確認できます。

スクリーンショット 2023-06-28 13.48.40.png

エクスクラメーションマークのアイコンを押すと、以下のようなメッセージが確認できます。

スクリーンショット 2023-06-28 14.16.18.png

既知のイメージについて、全てコピーできたことが確認できます。

スクリーンショット 2023-06-28 14.57.43.png

Container Registryを使用していた場合は、Cloud Storageにイメージが保存されます。
従ってArtifact Registryに移行完了後、無駄な課金を発生させないたためには、Cloud Storageに残っているイメージは削除しましょう。
(※削除する場合は、Container Registryのイメージが参照されていないことを確認すること)

公式のツールではありませんが、gcr-cleanerというツールが存在します。

ルーティング

Container RegistryからArtifact Registryにアクセスを切り替えるために、ルーティングを有効にします。

権限確認

以下のような画面が表示される場合は、権限が不足しています。

スクリーンショット 2023-06-28 14.58.17.png

「Artifact Registryにルーティング」を押すと以下のようなメッセージが表示されるため、不足している権限が確認できます。

スクリーンショット 2023-06-28 14.19.52.png

権限追加

コンソールから権限を追加する場合は、IAMを開いて対象のプリシンパルにアクセス権を付与します。

スクリーンショット 2023-06-28 15.01.04.png

再度、Artifact Registryの設定画面にアクセスすると、「Artifact Registryのルーティング」のボタンが確認できます。
「Artifact Registryにルーティング」を押します。

スクリーンショット 2023-06-28 16.09.13.png

Artifact Registryに対するルーティングが有効になりました。

スクリーンショット 2023-06-28 16.09.30.png

コンソールからContainer Registryにアクセスすると、Artifact Registryにリダイレクトされます。

検証

Artifact Registryが使用できる状態になったため、イメージのプッシュができることも確認します。

イメージのプッシュ

テストとしてイメージのプッシュを行うために、nginxのイメージを取得します。

$ docker pull nginx

タグ付けを行います。

$ docker tag nginx asia.gcr.io/<Project ID>/test-image

イメージをプッシュします。

$ docker push asia.gcr.io/pj-ccoe-prd/test-image

イメージがプッシュされて、アップロードされたことを確認します。

スクリーンショット 2023-06-28 16.17.34.png

動作確認

Cloud Runの場合は、影響を受けるジョブの「コンテナ イメージの URL」を編集して、Artifact RegistryのURLに更新するだけです。

設定変更後、問題なくジョブを実行できることを確認します。

おわりに

Dockerイメージ以外も扱うことができるようなので、CI/CDツールと統合するなどパイプラインの構築に使えると思います。

8
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?