Cloud Run部署失败:存在配置不同的同名修订版本
问题解决:Cloud Run部署报错ALREADY_EXISTS(修订名冲突)
原因分析
你遇到的报错确实和之前通过Google Cloud Console修改旧修订配置有关:
Cloud Run的修订版本名按递增序列生成(比如go-app-00014-yev)。当你手动修改了某个旧修订的配置(环境变量、资源限制等),这个修订的配置哈希会和原本通过gcloud部署时的配置产生差异。后续执行gcloud run deploy时,系统自动生成的修订号刚好和这个被修改过的旧修订同名,但当前部署的配置与旧修订的配置不匹配,因此触发ALREADY_EXISTS错误。
解决方法
方法1:指定自定义修订后缀避免重名
部署时通过--revision-suffix参数给新版本指定唯一后缀,生成的修订名将自动带上这个后缀,不会和现有修订冲突:
gcloud run deploy go-app --revision-suffix=deploy-$(date +%Y%m%d)
(示例用日期作为后缀,你也可以换成任意自定义标识)
方法2:删除冲突的旧修订
先列出当前服务的所有修订,定位冲突的那个:
gcloud run revisions list --service=go-app
删除该冲突修订:
gcloud run revisions delete go-app-00014-yev --service=go-app
删除完成后,重新执行gcloud run deploy命令即可正常部署。
方法3:对齐配置后重新部署(不推荐)
如果一定要保留这个修订名,需要将本次部署的配置(环境变量、资源设置等)手动对齐到之前修改过的旧修订配置,比如通过gcloud run deploy的--set-env-vars、--memory等参数同步配置。不过这种方式操作繁琐,不如前两种方法高效。
内容的提问来源于stack exchange,提问作者CentoKili53
相关产品推荐
相关产品推荐

