如何通过Helm的--set参数设置'- {}'类型的空映射值?
问题原因
- 报错核心是类型不匹配:你通过
--set networkpolicy[0].egress[0]="''{}''"传入的是字符串形式的{},而Kubernetes NetworkPolicy的egress规则要求该字段为map类型,因此校验失败。 - 另外你的命令里存在一处笔误:
podSelectory多写了一个末尾的y,正确字段名是podSelector,如果不修正会出现后续配置不生效的问题。
解决方法
直接使用以下写法传入空map即可,Helm会自动识别{}为空map类型而非字符串,完全匹配Kubernetes API要求的字段格式:
helm --debug --v 3 --kubeconfig $kubeconf upgrade --install $name \ $helmchart \ --set networkpolicy[0].name="my-app" \ --set networkpolicy[0].podSelector.matchLabels.app="my-app" \ --set networkpolicy[0].egress[0]={}
如果你的shell环境下直接写{}会被识别为特殊字符,可以用单引号包裹大括号:
--set networkpolicy[0].egress[0]='{}'
内容的提问来源于stack exchange,提问作者chuet
相关产品推荐
相关产品推荐

