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

Terraform创建Kubernetes Secret生成YAML格式错误排查

问题原因

核心错误是嵌套调用了yamlencode函数。
yamlencode的作用是将Terraform原生的结构化对象(map、结构体等)序列化为YAML格式的纯文本。你在最外层已经对整个Thanos配置对象调用了yamlencode,正常情况下内层的config如果是嵌套对象,外层序列化时会自动生成YAML的嵌套层级结构。
但你提前对config对应的内层对象单独调用了一次yamlencode,相当于把config的值先转成了一段YAML字符串,外层yamlencode处理时就会把这个值当成普通的多行字符串,而不是嵌套对象,最终生成的YAML里config就变成了|开头的多行文本块,内部内容全是带引号的字符串格式,和预期的嵌套结构完全不符,自然无法被应用正常识别。

修复方法

删除内层多余的yamlencode调用,只保留最外层的一次序列化即可,修正后的locals配置如下:

locals {
  service_account_value = base64decode(var.json_key)

  thanos_config = yamlencode(
    {
      type = "GCS"
      config = {
        bucket          = var.bucket_name
        service_account = local.service_account_value
      }
    }
  )
}

修正后生成的YAML会完全匹配你手动创建的目标结构:config会作为嵌套对象存在,service_account字段会自动按多行字面量格式(|-)输出,保留服务账号JSON的原始内容,不会出现多余引号、层级错误的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 18:33:30