将相同的helm值分配给多个目标

问题描述 投票:0回答:1

我正在制作一个Helm图表,它应该启动一个数据库以及一个使用数据库的客户端。为了避免冗余,我只想提供一个值(用户名,密码),该值应分配给客户端和数据库。并且只有当它不是默认值时,才应覆盖所有其他值。

因此,当我创建图表并将不同的值传递给db.env.POSTGRES_PASSWORD时,它应该覆盖users.env.DB_PASSWORD

helm install --debug --dry-run --set db.env.POSTGRES_PASSWORD=test

这是我的values.yml的一个简短片段

db:
  env:
    POSTGRES_PASSWORD: "default123"

users:
  env:
    DB_PASSWORD: "default123"

我想我必须在qazxsw poi文件中以某种方式这样做。像这样的东西,但它不起作用。

_helpers.tpl

错误:

{{- define "db.env.POSTGRES_PASSWORD" -}}
{{- default "password123" -}}
{{- end -}}

{{- if ne db.env.POSTGRES_PASSWORD "default123" }} # => This line causes the error
{{- define "users.env.DB_PASSWORD" -}}
{{- default .Values.db.env.POSTGRES_PASSWORD -}}
{{- end -}}
{{- end }}

请指出正确的方向,谢谢

kubernetes-helm go-templates
1个回答
0
投票

您可以将其重组为具有该密码的单个设置,然后将其注入多个位置。 Helm unexpected <define> in command 文件可能包括

values.yaml

然后单个部署的YAML文件可以包括

databasePassword: default123

对于你所询问的具体逻辑,重要的是env: - name: DB_PASSWORD value: {{ .Values.databasePassword | quote }} 必须始终处于最高级别(你不能有条件地定义模板);此外,模板和值设置在不同的命名空间中(您不能使用{{ define }}来更改define值)。您可以编写一个始终生成特定密码值的模板,为其选择一个源:

.Values

并在部署模板中调用它:

{{- define "users.env.DB_PASSWORD" -}}
{{- if ne .Values.db.env.POSTGRES_PASSWORD "default123" -}}
{{- .Values.db.env.POSTGRES_PASSWORD -}}
{{- else -}}
{{- .Values.users.env.DB_PASSWORD -}}
{{- end -}}

值得注意的是,env: - name: DB_PASSWORD value: {{ include "users.env.DB_PASSWORD" . | quote }} 有两个参数;如你所示调用default会产生错误,因为它不知道应用默认值的值。

© www.soinside.com 2019 - 2024. All rights reserved.