为什么我通过命令行使用 Helm 进行部署时会得到一些奇怪的字符?

Why I get some strange chars when I deploy with Helm via the command line?

我正在尝试部署 the nginx-ingress helm chart,我想提供一些 extraArgs

问题是,当我尝试从控制台传递参数时

helm upgrade --install ${release_name} \
--set controller.extraArgs={udp-services-configmap=default/cm-udp-services} \
stable/nginx-ingress

我在 describe 部署时得到了这个。

    Args:
      /nginx-ingress-controller
      --default-backend-service=default/tcp-udp-ic-nginx-ingress-default-backend
      --election-id=ingress-controller-leader
      --ingress-class=nginx
      --configmap=default/tcp-udp-ic-nginx-ingress-controller
      --0=udp-services-configmap:default/cm-udp-services

我只是不明白为什么我得到这个 0=.

但是,当我通过 values.yml 文件添加额外参数时,

  ## Additional command line arguments to pass to nginx-ingress-controller
  ## E.g. to specify the default SSL certificate you can use
  ## extraArgs:
  ##   default-ssl-certificate: "<namespace>/<secret_name>"
  extraArgs: {
               udp-services-configmap=default/cm-udp-services
  }

一切正常

有没有其他人遇到过这种情况?

编辑

尽管 weibeld 的回答解决了问题,但我发现当我部署 IC 时,不幸的是该服务没有打开配置映射中规定的端口。

删除大括号并用句点分隔 udp-services-configmap 参数:

helm upgrade --install ${release_name} \
--set controller.extraArgs.udp-services-configmap=default/cm-udp-services \
stable/nginx-ingress

而如果你使用values.yaml文件,通常的写法是:

controller:
  extraArgs:
    udp-services-configmap: default/cm-udp-services

在 YAML 中不需要花括号,除非表示空对象 (extraArgs: {})。