使用google_container_engine_versions获取GKE 1.31版本报错求助
Terraform获取GKE 1.31系列REGULAR渠道最新版本报错排查
你的报错核心原因是:当给google_container_engine_versions数据源指定version_prefix = "1.31."时,release_channel_latest_version只会包含对应渠道中版本号匹配该前缀的最新版本。如果在你指定的region里,REGULAR渠道的当前最新版本已经超出1.31系列(比如升级到1.32+),该渠道就不会出现在release_channel_latest_version这个map中,导致访问["REGULAR"]时触发报错。
解决方案
方案1:精准指定渠道+前缀,直接获取对应版本
通过release_channel参数锁定REGULAR渠道,结合version_prefix筛选1.31系列,直接取latest_master_version:
data "google_container_engine_versions" "regular_1_31" { provider = google-beta location = var.region release_channel = "REGULAR" version_prefix = "1.31." } min_master_version = data.google_container_engine_versions.regular_1_31.latest_master_version
方案2:筛选所有可用版本中的目标版本
如果需要更灵活的版本筛选逻辑,可以先获取全量版本,再过滤出REGULAR渠道下的1.31系列版本,取最新的:
data "google_container_engine_versions" "gke_versions" { provider = google-beta location = var.region } locals { # 筛选REGULAR渠道下以1.31开头的版本 regular_1_31_versions = [ for v in data.google_container_engine_versions.gke_versions.available_versions : v if startswith(v, "1.31.") && contains(data.google_container_engine_versions.gke_versions.release_channel_versions["REGULAR"], v) ] # 排序后取最后一个(即最新版本) latest_regular_1_31 = sort(local.regular_1_31_versions)[length(local.regular_1_31_versions)-1] } min_master_version = local.latest_regular_1_31
补充说明
- 不同region的GKE版本推送进度可能不同,即使官方文档显示REGULAR渠道有1.31.x版本,也需要确认你指定的region是否已同步推送该版本。
- 如果方案1返回空,说明当前region的REGULAR渠道已无1.31系列版本,此时需要考虑升级到更高版本,或切换到仍在维护1.31的渠道/region。
内容的提问来源于stack exchange,提问作者Haribabu Gunupuru
相关产品推荐
相关产品推荐

