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

Terraform新建App Engine标准应用版本未设置流量问题咨询

问题根因
  • 执行gcloud app deploy时,gcloud CLI默认会在版本部署完成后自动将100%流量切到新版本,因此手动部署时流量分配正常。
  • Terraform的google_app_engine_standard_app_version资源仅负责应用版本的创建与更新逻辑,默认不会为新版本分配任何流量,这是部署后新版本流量占比为0%的直接原因。流量分配属于独立的App Engine管理能力,不会放在版本资源的配置项中,因此你在版本资源文档中找不到相关配置是正常的。
配置方法

需要额外引入google_app_engine_service_traffic_split资源单独定义服务的流量拆分规则,操作如下:

  1. 在现有main.tf配置文件末尾追加以下流量配置代码:
resource "google_app_engine_service_traffic_split" "default" {
  service  = google_app_engine_standard_app_version.default.service
  migrate_traffic_strategy = "DEFAULT"

  split {
    shard_by = "IP"
    allocations = {
      (google_app_engine_standard_app_version.default.version_id) = 1
    }
  }
}
  1. 配置逻辑说明:
  • 上述配置会在新版本部署完成后,自动将对应服务100%的流量切到新版本,和gcloud app deploy的默认行为完全一致。
  • 如果需要灰度发布,可在allocations块中为多个版本分配流量权重,权重总和为1即可,例如给新版本分配0.1、历史稳定版本分配0.9,即可实现10%流量灰度。
  • shard_by参数支持按IP、Cookie维度做流量哈希,满足灰度场景下的会话保持需求。
  • 该资源通过引用版本资源的属性自动建立依赖关系,执行部署时会严格按照「先部署版本、再切流量」的顺序执行,无需手动配置依赖项。
注意事项
  • 你当前使用的Google Provider版本约束为<= 3.49,如果执行terraform plan时提示google_app_engine_service_traffic_split资源不存在,请将Provider版本升级到4.x及以上稳定版本即可。
  • 配置完成后先执行terraform plan确认变更符合预期,再执行terraform apply完成部署。
  • 若需要保留历史版本用于回滚,可移除版本资源中的delete_service_on_destroy = true配置,避免销毁资源时误删整个服务。

内容的提问来源于stack exchange,提问作者Duc Nguyen Viet

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 09:30:47