【问题标题】:Not able to render the helm template without quotes无法在没有引号的情况下呈现 helm 模板
【发布时间】:2021-01-02 04:43:18
【问题描述】:

我已经使用了几乎所有可能的方式来渲染 helm 模板。但是现在我没有想法并寻求帮助:

values.yaml:

rollout:
  namespace: xyz
  project: default
  baseDomain: "stage.danger.zone"
  clusterDomain: cluster.local
  

manifest.yaml

apps:
  certmanager:
    source:
      repoURL: 'https://artifactory.intern.example.io/artifactory/helm'
      targetRevision: 0.0.6
      chart: abc
    helm:
      releaseName: abc
    values:
      global:
        imagePullSecrets:
          - name: artifactory
      baseDomain: "{{ .Values.rollout.baseDomain }}"

当我尝试在我的 main.yaml 文件中使用以下命令呈现模板时,将产生最终结果:

values: {{- tpl (toYaml $appValue.values | indent 6) $ }}

预期结果:

baseDomain:stage.danger.zone (不带引号)

我得到的是:

baseDomain:'stage.danger.zone'

如果我尝试从 baseDomain: "{{ .Values.rollout.baseDomain }}" 中删除双引号,则会收到以下错误:

[debug] error converting YAML to JSON: yaml: invalid map key: map[interface {}]interface {}{".Values.baseDomain":interface {}(nil)}

有什么帮助或想法来实现同样的目标吗?

【问题讨论】:

    标签: kubernetes-helm helmfile


    【解决方案1】:

    这是 YAML 的预期行为。

    一个肮脏和糟糕的黑客将是

    values: {{- tpl (toYaml $appValue.values | fromYaml | toYaml | indent 6) $ }}
    

    然后你就看不到单引号了。

    但是,即使您的值中有 ' 单引号,这也不是问题。您可以包含此变量,例如如下所示:

          hosts:
            - host: some-gateway.{{ .Values.rollout.baseDomain }}
              serviceName: gateway
              servicePort: 8080
              path: /
    

    然后它会显示你的变量值没有' 单引号。

    渲染输出示例:

            hosts:
            - host: some-gateway.stage.danger.zone
              path: /
              serviceName: gateway
              servicePort: 8080
    

    【讨论】:

      猜你喜欢
      • 2012-10-30
      • 1970-01-01
      • 1970-01-01
      • 2011-11-11
      • 2020-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多