【问题标题】:Helm - using global values by defaultHelm - 默认使用全局值
【发布时间】:2019-12-11 02:42:13
【问题描述】:

我是 Helm 的新手。

我在父图表中有一个默认值。我想默认在每个子图表中使用这个值,但也有可能覆盖特定子图表的值。

例子:

# Parent-chart values.yaml

global:
  schedule: 10m

默认情况下,所有子图表都将使用此值。但是如果我运行这样的东西:

helm install --set subchart-A.schedule="20m"

子图-A 将使用值“20m”。

我在考虑两种可能性:

  1. 也许我可以以某种方式将子图表值链接到全局值:
# Subchart values.yaml

schedule: {{ .Values.global.schedule }} # it doesn't work

在这种情况下,可以覆盖单个子图的特定值。

  1. 也许我可以写一个函数
# Pseudocode:

if subchart.schedule is null
  printf global.schedule
else
  printf subchart.schedule

你会做什么以及通常有什么可能?

【问题讨论】:

  • 你能用default吗?类似{{ .Values.global.schedule | default subchart-A.schedule }}helm.sh/docs/topics/chart_template_guide/variables
  • 值 yaml 文件不能接受变量。所以,选项1被排除。正如您所提到的,选项 2 是更好的选择。
  • @hmatt1,谢谢,它完全符合我的需要(但颠倒过来,默认为全局)。不幸的是,文档中并不清楚。您可以将其添加为答案,然后我将关闭问题。

标签: kubernetes-helm


【解决方案1】:

这里是documentation 供参考。

您可以指定默认值!

文档中的示例:

{{- with .Values.favorite }}
drink: {{ .drink | default "tea" | quote }}
food: {{ .food | upper | quote }}
release: {{ .Release.Name }}
{{- end }}

在你的情况下,它会是这样的:

{{ subchart-A.schedule | default .Values.global.schedule }}

【讨论】:

  • {{ subchart-A.schedule | default .Values.global.schedule }} 使用上述选项,我们仍然无法渲染或运行它给出的子图表,并在 <.values.global.schedule> 处出现错误:nil pointer evaluation interface {}.schedule
  • @RajuRh 对您来说可能会有所不同。您的 values.yaml 中有什么内容?如果你看这个问题,他们正在处理这个问题:global: schedule: 10m
  • 父图表的值类似于 `global: schedule: 40` 子图表值文件 ` schedule: 30 ` 子图表的配置图包含 Test1: "{{ .Values.schedule | default .Values.global.schedule }}" 现在,如果我尝试在子图表上执行 helm 模板,则会出错。
猜你喜欢
  • 1970-01-01
  • 2022-01-17
  • 2013-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-27
  • 1970-01-01
相关资源
最近更新 更多