首页 > 解决方案 > 在 helm 值中添加单引号

问题描述

在我的 helm values.yaml 文件中,我试图用引号创建一个值,但是当我运行它时,它给出了不同的结果

值.yaml

annotation: '"ports": {"88":"sandbox-backendconfig"}}'

{{ .Values.annotation }}

当我做空跑时显示什么

"ports": {"88":"sandbox-backendconfig"}}

我怎样才能让它周围的单引号也显示出来

标签: kubernetesyamlkubernetes-helm

解决方案


当 Helm YAML 解析器读入values.yaml文件时,它发现 的值annotation:是一个单引号字符串,因此它保留了值的内容,没有外引号。

正如 YAML 规范所建议的那样,您可以通过双引号在单引号字符串中包含单引号。将其设为双引号字符串并使用反斜杠转义可能更熟悉。第三种可能性是将它变成一个块标量,这会将值放在单独的行上,但根本不需要任何转义。

annotation: '''"ports": {"88":"sandbox-backendconfig"}}'''
annotation: "'\"ports\": {\"88\":\"sandbox-backendconfig\"}}'"
annotation: >-
  '"ports": {"88":"sandbox-backendconfig"}}'

我不确定您要在什么上下文中使用它,但如果这是一种更结构化的格式,您可以使用 HelmtoYamltoJson函数为您构建注释值。

# values.yaml
ports:
  '88': sandbox-backendconfig
# templates/some-resource.yaml
annotations: {{ printf "\"ports\": %s" (toJson .Values.ports) | squote }}

推荐阅读