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

如何从HelmRelease文件动态传递Values至Terraform helm_release资源

解决方案

要在Terraform中实现从远程test-helm-release.yaml动态提取.spec.values及其他字段的需求,无需使用set参数,可通过base64decode+yamldecode组合解析YAML内容,直接复用原values结构,完整实现代码如下:

data "github_repository_file" "test_platform" {
  repository = "test-platform"
  branch     = "test"
  file       = "internal/default/test-helm-release.yaml"
}

# 解码并解析远程YAML文件为Terraform可操作的对象
locals {
  parsed_config = yamldecode(base64decode(data.github_repository_file.test_platform.content))
  # 提取chart名称、版本和values内容
  target_chart    = local.parsed_config.spec.chart.spec.chart
  target_version  = local.parsed_config.spec.chart.spec.version
  target_values   = local.parsed_config.spec.values
}

resource "helm_release" "test_platform" {
  name              = "test-platform"
  repository        = "https://test-platform/charts"
  chart             = local.target_chart
  version           = local.target_version
  namespace         = "test-system"
  create_namespace  = true
  timeout           = 800
  # 将解析后的values对象转为YAML字符串传入,完全复用原文件结构
  values            = [yamlencode(local.target_values)]

  lifecycle {
    ignore_changes = all
  }
}

关键说明

  • YAML解析逻辑:github_repository_file返回的content是Base64编码的字符串,需先用base64decode解码,再通过yamldecode转换为Terraform映射对象,方便提取指定字段。
  • values参数处理:helm_release的values参数接受YAML格式的字符串列表,因此用yamlencode将提取到的target_values映射转回标准YAML字符串,确保和原文件的values结构完全一致。
  • 重复键处理:原YAML中重复的key1字段会被yamldecode自动去重,保留最后一个值,和你之前用yq的处理逻辑一致。
  • 版本兼容性:该方案要求Terraform版本≥0.12,确保支持yamldecode和base64decode函数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 12:20:42