如何通过--set向Helm传递JSON配置变量避免被解析为数组
问题原因
Helm 的 --set 参数默认具备自动类型解析能力,会将外层包裹大括号的内容识别为字典/数组结构而非原始字符串,因此你传入的JSON字符串会被提前解析成键值对结构,最终渲染时就出现了被转为数组格式的错误。
你现有的ConfigMap模板逻辑没有问题,quote过滤器的用法是正确的。
解决方法
方案1:使用
--set-string强制传入字符串类型(最推荐)--set-string是Helm专门提供的、强制将参数值识别为纯字符串的参数,不会触发自动结构解析,直接修改部署命令即可:helm upgrade my-app --install --set-string envVars.CREDS='{"key":"val"}'方案2:通过values文件传递配置
如果使用自定义values文件部署,直接在values.yaml中把JSON值定义为字符串即可,不会触发自动解析:# values.yaml 示例内容 envVars: CREDS: '{"key":"val"}'部署时直接指定values文件:
helm upgrade my-app --install -f values.yaml方案3:转义大括号强制识别为字符串
如果必须使用--set参数,可以转义JSON外层的大括号,避免被Helm识别为结构定义:helm upgrade my-app --install --set envVars.CREDS='\{\"key\":\"val\"\}'
内容的提问来源于stack exchange,提问作者itaied
相关产品推荐
相关产品推荐

