【问题标题】:Helm pass values to the templates for multiple environmentHelm 将值传递给多个环境的模板
【发布时间】:2020-01-13 09:59:32
【问题描述】:

我是 Helm 的新手,正在努力配置 deployment.yaml.Mychart 树结构如下所示。但是我应该如何将 dev 和 prod 的值传递给 deployment.yaml?

例如,如果我想为 prod 使用不同的副本,我应该添加其他值,例如下面,或者 deployment.yaml 始终保持原样并使用 mulipe values.yaml,如下所示。

 replicas: {{ .Values.replicaCount .values.dev.replicacount }}

或者只使用下面的标签就足够了。假设如果 git branch 等于 master 然后使用下面的命令

helm install . -f values.production.yaml

如果 git 分支等于开发,则使用以下命令

 helm install . -f values.dev.yaml


+-- charts
|   \-- my-chart
|       +-- Chart.yaml        # Helm chart metadata
|       +-- templates
|       |   \-- ...
|       +-- values.yaml       # default values
|       +-- values.dev.yaml   # development override values
|       +-- values.prod.yaml  # production override values

【问题讨论】:

    标签: kubernetes kubernetes-helm


    【解决方案1】:

    每个环境应该有一个values.yaml 文件。

    这意味着在您的templates/deployment.yaml 中您将拥有

     replicas: {{ .Values.replicaCount }}
    

    然后,对于每个环境,您将拥有一个特定的values.yaml。喜欢:

    +-- values.yaml       # default values
    +-- values.dev.yaml   # development override values
    +-- values.prod.yaml  # production override values
    

    【讨论】:

    • 所以使用 helm install 。 -f values.prod.yaml 命令在 Jenkins 中根据 git 分支覆盖了我想要的内容,对吗?
    • 您可以将不同的values.yaml 保留在不同的分支中,也可以在具有不同后缀的同一分支中保留。我会说第二个选项更经常使用。就像在 Spring Boot 应用程序中,你通常将不同环境的配置文件保存在同一个分支中,但通过后缀来区分它们。
    • 您能分享一个小例子吗?
    • 第二个选项正是您在列表中所拥有的。在主目录中,在 master 分支中,您拥有所有环境的所有配置文件:values.yamlvalues.dev.yamlvalues.prod.yaml
    • 那么helm怎么知道用哪一个呢?
    【解决方案2】:

    这实际上取决于您的环境之间的差异。

    helm docs中所述:

    存在三种潜在的价值来源:

    • 图表的values.yaml 文件
    • helm install -fhelm upgrade -fhelm installhelm upgrade 上提供的值文件
    • 传递给--set--set-string 标志的值

    在高层次上,您可能需要考虑以下两种方法:

    1. 如果您的环境之间存在重大差异,则可以选择传递不同的 values.yaml 文件,并且值得额外维护。

    2. 另一方面,如果差异仅在于几个字段 - 请考虑仅使用一个具有默认值的基本 values.yaml 文件,并仅使用 --set 标志覆盖特定字段。


    (*) 在您的具体情况下,您将 DEV/PROD 配置划分为不同的文件,这是一种很好的做法,但在某些情况下,差异可能仅在于一两个 url(可能还有一些您将无论如何都想作为内联值传递)。这样您就可以省去额外的维护费用。

    【讨论】:

      猜你喜欢
      • 2019-03-14
      • 2020-06-23
      • 2020-05-28
      • 2016-11-17
      • 2018-02-09
      • 2016-02-15
      • 1970-01-01
      • 2012-08-24
      • 1970-01-01
      相关资源
      最近更新 更多