如何在helmfile中获取值


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.yamlhooks.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

相关内容

  • 没有找到相关文章

最新更新