【问题标题】:adding single quotes to helm value在 helm 值中添加单引号
【发布时间】:2020-03-25 23:02:47
【问题描述】:

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

values.yaml

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

{{ .Values.annotation }}

当我做空跑时显示什么

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

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

【问题讨论】:

  • 你试过{{ .Values.annotation | quote }} 吗?

标签: kubernetes yaml kubernetes-helm


【解决方案1】:

当 Helm YAML 解析器读入 values.yaml 文件时,它发现 annotation: 的值是 single-quoted string,因此它保留了值的内容,没有外引号。

正如 YAML 规范所建议的那样,您可以通过将引号加倍来在单引号字符串中包含单引号。将其设为double-quoted string 并使用反斜杠转义可能更熟悉。第三种可能性是将其变为block scalar,这会将值放在单独的行上,但根本不需要任何转义。

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

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

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

【讨论】:

    【解决方案2】:

    检查下面的方法,

    值.yaml

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

    模板

    {{ .Values.annotation | squote }}
    

    这应该可以解决您的问题。

    squote 会在推导出的值周围加上单引号。

    【讨论】:

    • 我遇到了一个完全不相关的问题,但squote救了我,谢谢。
    猜你喜欢
    • 2020-08-01
    • 2020-03-02
    • 1970-01-01
    • 1970-01-01
    • 2021-10-17
    • 2013-11-24
    • 2017-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多