You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

借助Cloud Build与Cloud Run实现带渐进式发布/告警回滚的复杂蓝绿部署

Cloud Run渐进式发布与自动告警回滚的GCP原生实现方案

你完全可以用GCP原生工具组合实现需求,不需要自行开发复杂应用,具体方案如下:

一、渐进式流量提升(逐日扩容至100%)

通过Cloud Build + Cloud Scheduler + Cloud Functions的组合实现自动化流量递增:

  • 初始流量分配:在Cloud Build的绿色版本部署完成后,添加步骤执行gcloud run services update-traffic分配初始小流量(比如5%),同时用gcloud run services describe --service=你的服务名 --format='value(status.traffic.latestRevision)'提取当前稳定版本(蓝色)的修订ID,将其存入Cloud Storage或Secret Manager备用。
  • 定时流量递增:用Cloud Scheduler创建每日触发的定时任务,调用Cloud Functions。函数内实现逻辑:
    1. 调用gcloud run services describe获取当前各版本的流量占比。
    2. 计算下一个递增比例(比如每日提升15%,直到达到100%)。
    3. 执行gcloud run services update-traffic --service=你的服务名 --to-revisions=绿色版本ID=新比例,蓝色版本ID=剩余比例完成流量更新。
    4. 当绿色版本流量达到100%时,自动禁用或删除Cloud Scheduler的定时任务。

二、基于监控告警的自动回滚

通过Cloud Monitoring + Cloud Functions实现异常触发回滚:

  • 配置告警规则:在Cloud Monitoring中创建告警规则,可基于两类指标触发:
    • 指标类:比如Cloud Run的请求错误率(>5%)、平均延迟(>2s)等核心服务指标。
    • 日志类:从Cloud Logging中筛选特定错误日志(比如5xx错误、业务异常日志),设置出现次数阈值触发告警。
  • 告警触发回滚:将告警的通知渠道设置为调用Cloud Functions,函数内实现回滚逻辑:
    1. 从Cloud Storage/Secret Manager中取出之前存储的蓝色版本修订ID。
    2. 执行gcloud run services update-traffic --service=你的服务名 --to-revisions=蓝色版本ID=100%完成流量切回。
    3. 自动禁用Cloud Scheduler的渐进式流量提升任务,避免冲突。

三、权限与细节注意

  • 确保Cloud Functions拥有Cloud Run服务的编辑权限、Cloud Storage/Secret Manager的读写权限;Cloud Scheduler拥有调用Cloud Functions的权限;Cloud Build拥有创建/更新Scheduler、存储修订ID的权限。
  • 流量递增的比例和触发频率可根据业务需求调整,比如如果需要更精细的控制,可将Scheduler的触发频率改为每小时,同时调整每次递增的比例。
  • 回滚函数中可添加额外逻辑,比如发送通知到团队沟通工具,告知运维团队回滚已触发。

内容的提问来源于stack exchange,提问作者Brian K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 15:37:14