如何通过Helm --set命令设置无引号的数组键值对?
解决Helm --set配置数组内嵌套键值对的无引号问题
你之前的写法错误地把整个ip: 10.0.40.83当成了数组的单个字符串元素,导致生成带引号的配置。要实现和原values.yaml一致的对象结构,需要直接指定数组元素的嵌套键:
正确的--set命令
使用点语法直接定位到数组元素的ip键:
helm install <release-name> <chart-name> --set sftp.ipAddresses[0].ip=10.0.40.83
执行后生成的配置会和原values.yaml完全一致:
sftp: ipAddresses: - ip: 10.0.40.83
为什么之前的写法不行?
你之前的--set 'sftp.ipAddresses[0]'=ip:\ 10.0.40.83是把数组的第一个元素赋值为字符串ip: 10.0.40.83,Helm会自动给字符串添加引号以避免解析问题。而正确的写法是告诉Helm,数组元素是一个对象,要设置这个对象的ip属性值。
补充:多元素数组的写法
如果需要配置多个IP地址,可以继续追加数组索引:
helm install <release-name> <chart-name> \ --set sftp.ipAddresses[0].ip=10.0.40.83 \ --set sftp.ipAddresses[1].ip=10.0.40.84
备选方案:使用--set-json(Helm 3.9+支持)
如果习惯JSON语法,也可以用--set-json直接传入对象数组:
helm install <release-name> <chart-name> --set-json 'sftp.ipAddresses=[{"ip": "10.0.40.83"}]'
这样生成的配置同样符合要求,且不会出现引号问题。
内容的提问来源于stack exchange,提问作者TodayGuessWhat
相关产品推荐
相关产品推荐

