Container Registry は非推奨になりました

こんにちは、京セラコミュニケーションシステム 石関 (@kccs_daisuke-ishizeki）です。

この記事では Container Registry の非推奨と移行先の Artifact Registry についてざっくり紹介します。

ついに来たか！みたいな感じですね。

:::note warn
本記事は2023年6月ごろに作成しております。引用している内容は執筆時点での最新となります。
:::

## この記事の対象者

- Container Registry を利用されている方
- これから Container Registry を利用しようとしている方

## Container Registry の廃止について

Google Cloud には、コンテナ イメージの保存と管理を行うための 2 つのサービスがありますが、2023/5/15 に Container Registry を**非推奨**とする[リリースノート](https://cloud.google.com/container-registry/docs/release-notes?hl=ja#May_15_2023)が公開されました。
![ReleaseNote.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2728315/125e07b2-4a1c-0612-fc62-58e8af542858.png)
日本語の Container Registry のサポート終了に関するドキュメントページも公開されています。

https://cloud.google.com/container-registry/docs/deprecations/container-registry-deprecation?hl=ja

## いつまで使えるの？

記事作成時点では機能停止のスケジュールは発表されていません。

2024/5/15 以降も引き続き使用できるようですが、その場合は以下の条件を満たす必要があります。

- 2024/5/15 より前に Container Registry API を有効にしたプロジェクト
- イメージが Container Registry にプッシュされたプロジェクト

ですが、段階的に廃止されていくとのことですので、既存で利用している場合は計画的な移行を推奨します。

## 移行先は？

2020年にリリースされた [Artifact Registry](https://cloud.google.com/artifact-registry/docs?hl=ja) が推奨です。
これから利用する場合は [Artifact Registry](https://cloud.google.com/artifact-registry/docs?hl=ja) を利用しましょう！

移行に関する公式ドキュメントはこちらです。

https://cloud.google.com/artifact-registry/docs/transition/transition-from-gcr?hl=ja


## Artifact Registry とのざっくり機能比較

非推奨になったのはもちろんですが、今から Container Registry を選択するメリットは無いと思います！

|            特徴            |      Container Registry      |                                                                  Artifact Registry                                                                  |
| -------------------------- | ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| サポートされるファイル形式 | コンテナイメージ             | [コンテナイメージ、言語パッケージ、OSパッケージなど複数のアーティファクト](https://cloud.google.com/artifact-registry/docs/supported-formats?hl=ja) |
| ホスト名                   | gcr.io                       | pkg.dev                                                                                                                                             |
|                            |                              | gcr.io をサポート                                                                                                                                   |
| ロケーション               | マルチリージョンのみ         | マルチリージョンまたはリージョン                                                                                                                    |
| IAM                        | Cloud Storage バケットレベル | リポジトリレベルでより細かに設定可能                                                                                                                |
| 新機能の追加               | 重要なセキュリティ修正のみ   | あり                                                                                                                                                |

詳細な機能比較は以下のドキュメントを参照してください。

https://cloud.google.com/artifact-registry/docs/transition/transition-from-gcr?hl=ja#compare

## コスト比較

料金の概要ページを見てみると Container Registry 、Artifact Registry の課金要素は大きな変化は無さそうです。

|             Container Registry             |     Artifact Registry      |
| ------------------------------------------ | -------------------------- |
| ストレージ                                 | ストレージ                 |
| Cloud Storage の下り（外向き）ネットワーク | 下り（外向き）ネットワーク |
| (Option) 脆弱性スキャン                    | (Option) 脆弱性スキャン    |

以下の条件でコストシミュレーションしてみます。

```
ストレージ: 100GB
下りトラフィック: 100GB
Container Registry(GCS): アジアのマルチリージョン、Standard クラス、オペレーション料金は考慮しない
Artifact Registry: マルチリージョン(asia)
Cloud Build などリポジトリにアクセスするリソースのロケーション: asia-northeast1
```

### 結果

わたしの理解が間違っていなければ Artifact Registry の方が安価になるようです！
Container Registry(GCS) のオペレーション料金も考慮するとより節約できそうですね。

|          カテゴリ          | Container Registry | Artifact Registry |
| -------------------------- | ------------------ | ----------------- |
| ストレージ                 | USD 10.6           | USD 9.95          |
| 下り（外向き）ネットワーク | USD 8.0            | 無料[*1]          |
| 計                         | USD 18.6           | USD 9.95          |

*1 ドキュメントに以下の記載があり無料のトラフィックに該当すると思います。
> トラフィックの種類: マルチリージョンにあるリポジトリから同じリージョンにある別の Google Cloud サービスへのデータの移動で、両方のロケーションが同じ大陸にある
> 例: europe から europe-west1
> GB あたりの料金: 無料

https://cloud.google.com/artifact-registry/pricing?hl=ja

https://cloud.google.com/container-registry/pricing?hl=ja

## 移行方法

移行先の Artifact Registry へは以下のどちらかに移行できます。

1. Artifact Registry 標準リポジトリ
2. Artifact Registry gcr.io ドメインをサポートするリポジトリ

大きいところとして 1 は pkg.dev にドメインが変わります。そのためコンテナイメージのパス変更が必要になります。
変更作業のボリュームや影響が大きい場合は 2 の gcr.io ドメインをサポートする Artifact Registry へ移行し、その後標準リポジトリへ段階的に移行することが望ましいと思います。

ただし 2 は[制限事項](https://cloud.google.com/artifact-registry/docs/transition/setup-gcr-repo?hl=ja#limitations)があるため事前にご確認ください。

移行手順の詳細は以下の公式ドキュメントをご参照ください。

https://cloud.google.com/artifact-registry/docs/transition/setup-repo?hl=ja

https://cloud.google.com/artifact-registry/docs/transition/setup-gcr-repo?hl=ja

## おわりに

機能面以外にコスト的にも Artifact Registry への移行メリットがあることがわかりました。
現在 Container Registry は引き続き使用できますが、段階的に廃止されるとのことですので計画的に移行を進めましょう！