如何向helm_release传递字符串列表?部署遇YAML解析错误
问题原因与解决方案
核心问题在于:Kubernetes Ingress的注解仅支持字符串类型,即便ALB控制器文档标注alb.ingress.kubernetes.io/subnets为stringList类型,也要求传入逗号分隔的字符串,而非直接传递数组。直接传数组会导致Helm渲染出类似[subnet-xxxx,subnet-yyyy]的格式,K8s无法将其反序列化为注解所需的字符串类型,从而报错。
具体修正步骤:
修改Helm模板(ingress.yaml)
将注解赋值逻辑改为用join函数把列表转为逗号分隔的字符串:annotations: alb.ingress.kubernetes.io/subnets: {{ join "," .Values.alb.subnets }}这样渲染后的注解值会是
subnet-xxxx,subnet-yyyy的字符串格式,ALB控制器会自动将其解析为stringList。确认Terraform配置无需额外调整
main.tf中用set_list传递var.data_subnet_ids的配置是正确的,因为Helm values里的alb.subnets依然是列表类型,只是模板渲染时做了格式转换。验证values.yaml默认值
values.yaml中alb.subnets定义为字符串列表的配置保持不变即可,例如:alb: subnets: - subnet-xxxx - subnet-yyyy
内容的提问来源于stack exchange,提问作者Georgi Koemdzhiev
相关产品推荐
相关产品推荐

