首页 > 解决方案 > 如何创建一个基本上只是设置另一个图表的值的自定义 Helm 图表?

问题描述

我是 Helm 的新手,我还没有完全掌握这些概念。我目前正在尝试做的是创建一个自定义图表,基本上只是为默认稳定存储库中可用的另一个图表设置特定值。几乎我想做的是有这个:

helm install \
-f my-custom-values.yaml \
stable/target-chart \
--name=my-release

改变成

helm install my-apps/my-release

my-release中使用相同的值my-custom-values.yaml。它本质上是将预先存在的图表与我的自定义值捆绑到一个新的图表中。

有没有办法做到这一点?我想我也许可以克隆源图表,但我觉得这不是一件实际的事情。

标签: kubernetesgoogle-kubernetes-enginekubernetes-helm

解决方案


第一个变体有什么问题?如果您有一个可以传递给 helm 的自定义 values.yaml,为什么需要从命令行中删除它?

但是,如果您准备好玩一下... :)

一种方法是创建自己的图表,该图表主要是空的,但包含一个引用 .yaml 的 requirements.yaml stable/target-chart

requirements.yaml(就在 Chart.yaml 旁边)

dependencies:
  - name: stable/target-chart
    version: 1.0.0.0.0.0
    alias: somealiasforvaluesyaml

然后在您的 values.yaml 中覆盖该子图表的值:

somealiasforvaluesyaml:
  keyfromthattargetchart: newvalue

  subkeyfromthattargetchart:
    enabled: true
    setting: "value"

您在 requirements.yaml 中提供的别名是图表中 values.yaml 中的部分。

在安装之前,您需要告诉 helm 更新这些要求:

helm repo update
helm dependency update

然后就是helm install这个(虚拟?)图表。此图表不包含任何资源,在 linux 包管理器中不会被称为包 - 但它们也使用过渡包或只是其他包的集合(如 build-essential)

考虑到您已经有 values.yaml 来覆盖目标图表中的那些,这有点多吗?由于传递给安装的 cust-values .yaml-f只需要包含自定义项,因为它将修改目标图表中的 values.yaml ,因此问题中的第一个命令看起来是正确的方法。


推荐阅读