【问题标题】:kube helm charts - multiple values fileskube helm 图表 - 多个值文件
【发布时间】:2021-04-14 02:38:55
【问题描述】:

这可能是一个简单的问题,但如果它是可重复的,则在任何地方都找不到;

是否可以为 helm 图表(比如稳定/jenkins)提供值文件并为其提供两个不同的值文件?

我想在 values_a.yaml 中有一些像这样的值:

master:
  componentName: "jenkins-master"
  image: "jenkins/jenkins"
  tag: "lts"
...
  password: {{ .Values.secrets.masterPassword }}

在 values_b.yaml 中 - 将使用 AWS KMS 加密

secrets:
  masterPassword: xxx

上面的代码不起作用,想知道,因为你可以把这些变量放在 kube manifests 中

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Values.config.name }}
  namespace: {{ .Values.config.namespace }}
...

它们能否以某种方式传递给其他值文件


编辑:

如果可能的话,我会放

master:
  password: xxx

在 values_b.yaml 中,但 vars 不能被复制,官方 helm 图表需要来自该文件的 master.password val - 所以必须以某种方式将其传递到那里,但以加密方式

【问题讨论】:

    标签: kubernetes kubernetes-helm


    【解决方案1】:

    我不太确定,但helm 的这个功能可能会对您有所帮助。

    Helm 为您提供了在执行 helm installhelm upgrade 时传递自定义 Values.yaml 的功能,其优先级高于主 Values.yaml 的字段。

    对于 Helm 3

    $ helm install <name> ./mychart -f myValues.yaml
    

    对于 Helm 2

    $ helm install --name <name> ./mychart --values myValues.yaml
    

    【讨论】:

    • hmmm 并没有真正的帮助,因为我已经在使用它helm3 upgrade --install jenkins stable/jenkins -f jenkins.yaml 并且这些值不在典型的 yaml 文件中,而是在 yaml 内部的自定义 yaml 中,例如。 ` configScripts:欢迎消息:| (这是新行和我的密码配置'`
    • @potatopotato,你为什么不为密码创建一个 k8s 密码?并从您的 Values.yaml 中引用秘密名称。你不需要额外的 Values.yaml 。通过 Values.yaml 文件提供凭据并不是一个好习惯。
    • 好吧,即使秘密也必须存储在某个地方,我的计算机或某个 git repo 并将其推送到那里,最好以某种方式对其进行加密 - aws kms 是一个很好的方法
    • 您可以使用多个-f--values 选项:helm install ... -f values_a.yaml -f values_b.yaml。但是你不能在任何 Helm 值文件中使用模板,除非图表特别支持它(使用 tpl 函数)。
    【解决方案2】:

    有效的答案来自 Kamol Hasan 响应的 cmets 中的 David Maze。

    您可以使用多个 -f 或 --values 选项: helm install ... -f 值_a.yaml -f 值_b.yaml。但是你不能在任何地方使用模板 Helm 值文件,除非图表特别支持它(使用 tpl 函数)。

    如果您使用多个 -f,则最新值文件会覆盖较早的值。

    【讨论】:

      猜你喜欢
      • 2020-04-11
      • 2019-03-14
      • 2021-09-06
      • 2021-11-28
      • 1970-01-01
      • 2021-05-31
      • 1970-01-01
      • 2020-02-25
      • 2018-10-13
      相关资源
      最近更新 更多