🔄
Cloud Runのリビジョン管理、1000回以上のデプロイを実際に試してみた結果!
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個までしか表示されない。
追加確認
一番古いリビジョンにトラフィックが向いている場合削除対象はどれになるか。
一番古いリビジョンにトラフィックを移行
デプロイスクリプト(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個までしか表示されませんでした。
Google Cloud Console上からトラフィックの移行は可能
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
結論
- 公式ドキュメントでは1000個のリビジョンを保持すると記載されていますが、実際には1000個以上保持される場合がある。
- Google Cloud Console上では1000個までしか表示されないが、gcloudコマンドを使用すると1000個以上のリビジョンを確認することできる。
Discussion