我可以在不修改 Helm 图表的情况下向使用 Helm 图表部署的 pod 规范添加任意配置吗?

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

我正在使用此 Helm 图表进行部署:https://github.com/helm/charts/tree/master/stable/atlantis

它部署了这个有状态集:https://github.com/helm/charts/blob/master/stable/atlantis/templates/statefulset.yaml

有没有一种方法可以将任意配置值添加到使用 Helm 图表部署的 pod 规范,而无需修改图表?例如,我想添加一个 env: var,它从秘密中获取其值到此图表部署的有状态集的 pod 规范

我可以创建引用此 Helm 图表的自己的 Helm 图表并将其添加到 pod 规范的配置中吗?不修改原来的图表再一次?

编辑:我所说的是添加一个像这样的环境变量:

env:
- name: GET_THIS_VAR_IN_ATLANTIS
  valueFrom:
    secretKeyRef:
      name: my-secret
      key: abc

也许我可以创建另一个图表作为该图表的父图表并覆盖整个

env:
块?

kubernetes google-cloud-platform google-kubernetes-engine kubernetes-helm
2个回答
3
投票

有没有一种方法可以将任意配置值添加到使用 Helm Chart 部署的 Pod 规范中,而无需修改图表?

您只能进行图表本身支持的更改。

如果您查看链接到的 StatefulSet 定义,就会发现那里有很多

{{ if .Values.foo }}
旋钮。这是一个相当可定制的图表,您可能可以更改大多数内容。作为图表作者,您必须明确编写所有这些条件和宏扩展。

例如,我想添加一个 env: var,它从秘密中获取其值到此图表部署的有状态集的 pod 规范

这个非常具体的图表包含一个块

{{- range $key, $value := .Values.environment }}
- name: {{ $key }}
  value: {{ $value | quote }}
{{- end }}

这样您就可以编写自定义 Helm YAML 值文件并添加到

environment:
  arbitraryKey: "any fixed value you want"

然后使用

helm install -f
选项在安装图表时提供该选项。

此图表不支持从机密注入环境值,除了默认支持的六个特定值(例如,GitHub 令牌)。

正如我所说,这根本不是通用的:这是特定于该特定图表在其模板扩展中所支持的内容的。


1
投票

应该将之前的答案标记为答案,但 helm3 中的情况发生了变化。

虽然仍然没有内置的修补图表的方法,但现在有对“后渲染器”的内置支持https://helm.sh/docs/topics/advanced/

因此,调用 kustomize 作为后渲染器可能是大多数人现在对 helm3 的建议

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