如何在 helm 安装/升级中将 --set key 值持久化到 value.yaml

vee*_*987 5 kubernetes kubernetes-helm

如何在使用命令行设置values.helm install 时将参数键值保存到values.yaml 文件中。--name test --set image.tag=2020 --set image.version=20 如何将此image.tag和image.version值更新为values.yaml?试运行会给出结果,但不会更新values.yaml

Wil*_*.F. 5

Helm是一个包管理器,它的作用是自动部署 kubernetes 应用程序。它被设计为有点静态,并且只能由图表的创建者更改。

  • 值文件提供对传递到图表中的值的访问。其内容来自多个来源:

    • 图表中values.yaml的文件
    • 如果这是子图表,则为父图表的values.yaml文件
    • -f如果使用标志 ( helm install -f myvals.yaml ./mychart)传递到 helm install或 helm Upgrade中,则为值文件
    • --set使用(例如helm install --set foo=bar ./mychart)传递的各个参数
  • 这是值文件的基本层次结构,但还有更多内容:

在此输入图像描述 感谢这张图片的创作者,不幸的是我找不到作者来感谢他。

  • 您无法values.yaml完全按照您的想法更改图表文件,因为原始文件values.yaml将保持图表创建者所需的状态。
  • 上面的流程图都是关于helm install或期间所做的更改helm upgrade

我将尝试举例说明您的使用场景:

  • 图 1 的默认值包括:
image: original-image
version: original-version
Run Code Online (Sandbox Code Playgroud)
  • 您决定部署此图表,并使用--set示例中的方法更改一些值helm install --name abc --set image=abc --set version-123。导致:
image: abc
version: 123
Run Code Online (Sandbox Code Playgroud)
  • 然后,您想要升级图表并修改该version值,但保持其他值不变,您可以运行:`helm update --set version=124 --reuse-values,以下是有效的结果值:
image: abc
version: 124
Run Code Online (Sandbox Code Playgroud)

注意:正如我们在流程图中看到的,如果您不指定 --reuse-values ,它将重置升级期间未包含的值--set以返回图表的原始值。在这种情况image下又会是original-image


因此,总结一下您的主要问题:

如何在 helm 安装/升级中将 --set key 值持久保存到 value.yaml ?

您可以始终使用 来保留--set值,但是更改永远不会提交到文件的原始模板。upgrade--reuse-valuesvalues.yaml

如果您是图表的所有者,建议您创建图表的发布版本,以便您可以跟踪每个版本中的默认值。

我希望它有助于澄清问题。

如果我可以进一步帮助您,请在评论中告诉我。