はじめに
Google Cloud Platformにおけるコンテナイメージの保存と管理は今までContainer Registryが提供されていましたが、今後提供される新しい機能などはArtifact Registryの方に盛り込まれるそうです。
それゆえ、新規プロジェクトで用いるならばArtifact Registryを採用した方が何かと良さそうです。
今回初めてこのArtifact Registryを利用したのですが、幾つか罠があったので書き留めておきます。
注意点その1 Docker認証が違う
Dockerコマンドでpullやpushを行う際、Dockerの認証が必要ですが、それぞれコマンドが異なります。
- Container Registryの場合
gcloud auth configure-docker
- Artifact Registryの場合
gcloud auth configure-docker [選択したリージョン]-docker.pkg.dev
まぁ、これはリポジトリのドメインがContainer Registryの場合、gcr.io
で固定だったから指定しなくてもよかった、っていうので普通にわかるんですよ。
問題は次、、、
注意点その2 リポジトリの階層が違う
これが分かっていなくて、認証通ってるのにpushできず半日無駄な時間を使ってしまいました、、、
- Container Registryの場合
gcr.io/[作成プロジェクトID(固定)]/[イメージ名+タグ(任意)]
- Artifact Registryの場合
[選択したリージョン]-docker.pkg.dev/[作成プロジェクトID(固定)]/[リポジトリ名(任意)]/[イメージ名+タグ(任意)]
そうです。Artifact Registryになって[リポジトリ名(任意)]
というのが増えているんです。
TerraformでContainer Registryと同じ感覚でArtifact Registryを作成したら実はそれはイメージ名でなくリポジトリ名だったので、Container Registryと同じ階層の名前でpushしても全然できないという、、、
権限も確実にあるし、認証も通ってるし、、、何なんだ!と思いながら公式を隅から隅まで読んでたらそれに気づいたという、、、