bases:
- common.yaml
releases:
- name: controller
values:
- values/controller-values.yaml
hooks:
- events: [ "presync" ]
....
- events: [ "postsync" ]
.....
common.yaml
environments:
default:
values:
- values/common-values.yaml
通用值
a:b
当我将钩子的值添加到公共文件时,我想将其移动到文件中。值有效,但我想将它添加到不同的文件,而不是公共文件,所以我尝试添加基本
bases:
- common.yaml
- hooks.yaml
releases:
- name: controller
values:
- values/controller-values.yaml
hooks:
{{ toYaml .Values.hooks | indent 6 }}
hooks.yaml
environments:
default:
values:
- values/hooks-values.yaml
hooks-values.yaml
hooks:
- events: [ "presync" ]
....
- events: [ "postsync" ]
.....
但我弄错了解析:template:stringTemplate:21:21:执行"字符串模板";在<处;。Values.hooks>:映射没有键"的条目;钩子";
我也试着把它改成
hooks:
- values/hooks-values.yaml
我犯了一个错误第22行:不能解组!!strvalues/...
转换为事件。挂钩
我认为第一个问题是在bases:
下同时指定common.yaml
和hooks.yaml
时,它们没有正确合并。由于它们提供相同的密钥,因此稍后包含在bases:
下的密钥很可能会覆盖另一个。
为了解决这个问题,您可以在helmfile:中的bases
中使用一个条目
bases:
- common.yaml
然后将您的价值文件添加到common.yaml
:
environments:
default:
values:
- values/common-values.yaml
- values/hooks-values.yaml
我不认为这是最佳实践,但它应该有效:(
第二个问题是对bases
进行了特殊处理,即在处理基本分层之前渲染helmfile.yaml,因此您的值(来自bases
(在可以直接在helmfile中引用它们的位置不可用。如果您将environments
直接嵌入到helmfile中,那就可以了。但是,如果您想继续使用bases
,似乎有几个解决方法,最简单的方法似乎是在bases
之后添加---
,如同一线程的下一条注释中所述。
因此,helmfile的工作版本可能是:
bases:
- common.yaml
---
releases:
- name: controller
chart: stable/nginx
version: 1.24.1
values:
- values/controller-values.yaml
hooks:
{{ toYaml .Values.hooks | nindent 6 }}
PS:chart: stable/nginx
只是被随机选择以能够helmfile build