是否可以在不修改头盔图表的情况下向部署有头盔图表的吊舱规格中添加任意配置?

时间:2019-06-10 14:30:13

标签: kubernetes google-cloud-platform google-kubernetes-engine kubernetes-helm

我正在使用此头盔图表来部署:https://github.com/helm/charts/tree/master/stable/atlantis

它将部署以下有状态集:https://github.com/helm/charts/blob/master/stable/atlantis/templates/statefulset.yaml

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

我可以创建引用该头盔图的头盔图并将其添加到pod规范的配置中吗?再次修改原始图表吗?

编辑:我在说什么是在添加这样的环境变量:

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

也许我可以创建另一个图表作为该图表的父级,并覆盖整个env:块?

3 个答案:

答案 0 :(得分:3)

  

是否可以在不修改图表的情况下将任意配置值添加到随舵图部署的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 :(得分:0)

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

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

因此,将 kustomize 称为后期渲染器可能是大多数人现在对 helm3 的建议

答案 2 :(得分:-1)

您可以使用秘密文件中的附加环境变量扩展图表。在helm install命令中传递envvar:val。添加一个秘密模板。将环境值从环境中获取到秘密模板中并将其映射到pod规范中。

您可以像下面那样将env变量传递给helm install命令

-设置env = key