使用在环境中定义的嵌套值

问题描述

我有以下头盔文件

releases:
  - name: whoami-mn
    namespace: whoami-mn-{{ .Environment.Name }}
    chart: tons/whoami-mn
    version: {{ .Values.chartVersions.whoami }}
    installed: {{ .Values.installed }}
    values:
      - env/{{ .Environment.Name }}-values.yaml

environments:
  dev:
    values:
      - installed: true
      - chartVersions:
          whoami: 0.3.0
          otherApp: 0.2.0
  prod:
    values:
      - installed: true
      - chartVersions:
          whoami: 0.2.0
          otherApp: 0.1.0

但是运行helmfile -e dev template时出现以下错误 in ./helmfile.yaml: error during helmfile.yaml.part.0 parsing: template: stringTemplate:5:23: executing "stringTemplate" at <.Values.chartVersions.whoami>: map has no entry for key "chartVersions"

我可以做以下事情

environments:
  dev:
    values:
      - installed: true
      - chartVersionWhoami: 0.3.0

那行得通,但我更希望将所有图表版本分组在父键下。关于如何使前者正常工作的任何建议?

更新: 以下作品

...
version: {{ (index .Values "chartVersions").whoamiMn }}
...

具有如下定义的环境

environments:
  dev:
    values:
      - installed: true
      - chartVersions:
          whoamiMn: 0.3.0

但是我真的觉得我的第一次尝试也应该有效!

解决方法

经过实验并进一步讨论here。我发现可以通过在environments之前列出releases来解决此问题。从我的书呆子角度来看,我很高兴将releases列在首位,但可以使用。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...