🔄

Cloud Runのリビジョン管理、1000回以上のデプロイを実際に試してみた結果!

2024/08/29に公開

TL;DR

公式ページに記載されておりました。
https://cloud.google.com/run/docs/managing/revisions?hl=ja

  • Cloud Runは自動的に最大1000個のリビジョンを保持します。
  • 1000個を超えると、最も古いリビジョンから順に自動的に削除されます。
  • 手動でリビジョンを削除する必要はない。

なぜ検証したか

過去 Google App Engineでバージョン数に制限があり、それを超えてデプロイしようとするとデプロイ失敗することがあった。
そのためCloud Runのリビジョン数に制限があるのか気になり調査を行った。

検証

デプロイスクリプト(deploy.sh)

deploy.sh
#!/bin/bash

SERVICE_NAME="revision-test"
REGION="us-central1"

gcloud run deploy $SERVICE_NAME \
  --image gcr.io/cloudrun/hello \
  --platform managed \
  --region $REGION \
  --allow-unauthenticated
for i in {1..1000}; do echo "Deploying $i of 1000"; ./deploy.sh; echo "Waiting 1 seconds"; sleep 1; done

結果

  • Cloud Runのデプロイを1000回以上行ってもデプロイエラーは発生しない。
  • Google Cloud Console上でもリビジョンは1000個までしか表示されない。

n1.png

追加確認

一番古いリビジョンにトラフィックが向いている場合削除対象はどれになるか。

一番古いリビジョンにトラフィックを移行

n2.png

デプロイスクリプト(deploy.sh)の修正

--no-traffic を追加

deploy.sh
#!/bin/bash

SERVICE_NAME="revision-test"
REGION="us-central1"

gcloud run deploy $SERVICE_NAME \
  --image gcr.io/cloudrun/hello \
  --platform managed \
  --region $REGION \
  --allow-unauthenticated \
  --no-traffic

検証結果

Google Cloud Console上では1000個までしか表示されませんでした。

n3.png

Google Cloud Console上からトラフィックの移行は可能

n4.png

gcloudコマンドで確認

gcloud run revisions list --service=$SERVICE_NAME --region=$REGION --platform=managed | wc -l

    1014
gcloud run revisions list --service=$SERVICE_NAME --region=$REGION --platform=managed | tail -n 5

✔  revision-test-00005-h78          revision-test  2024-08-28 03:42:42 UTC  hogehoge@hogehoge.com
✔  revision-test-00004-m2t          revision-test  2024-08-28 03:40:40 UTC  hogehoge@hogehoge.com
✔  revision-test-00003-lls          revision-test  2024-08-28 03:38:57 UTC  hogehoge@hogehoge.com
✔  revision-test-00002-r4d          revision-test  2024-08-28 03:37:56 UTC  hogehoge@hogehoge.com
✔  revision-test-00001-fhr          revision-test  2024-08-28 03:23:39 UTC  hogehoge@hogehoge.com

結論

  1. 公式ドキュメントでは1000個のリビジョンを保持すると記載されていますが、実際には1000個以上保持される場合がある。
  2. Google Cloud Console上では1000個までしか表示されないが、gcloudコマンドを使用すると1000個以上のリビジョンを確認することできる。

Discussion