如何持久化-在头盔安装/升级中将键值设置为values.yaml

时间:2020-06-07 17:33:02

标签: kubernetes kubernetes-helm

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

2 个答案:

答案 0 :(得分:2)

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

  • Values Files提供对传递到图表中的值的访问。其内容来自多种来源:

    • 图表中的values.yaml文件
    • 如果这是子图表,则是父图表的values.yaml文件
    • 值文件,如果通过头盔安装或通过-f标志(helm install -f myvals.yaml ./mychart)进行头盔升级
    • 通过--set(例如helm install --set foo=bar ./mychart)传递的
    • 单个参数
  • 这是值文件的基本层次结构,但还有更多内容:

enter image description here 对这张图片的创作者表示敬意,不幸的是,我无法找到该作者来赞美他。

  • 您无法完全按照自己的想法更改图表values.yaml的文件,因为原始的values.yaml将保持图表创建者所需的状态。
  • 上面的流程图全部涉及helm installhelm upgrade期间所做的更改。

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

  • 图表1的默认值为:
image: original-image
version: original-version
  • 您决定像在示例--set中一样,使用helm install --name abc --set image=abc --set version-123来更改此值来部署此图表。结果:
image: abc
version: 123
  • 然后您想要升级图表并修改version值,但将其他值保持不变,则运行:`helm upgrade --set version = 124 --reuse-values,这是结果值实际上:
image: abc
version: 124

注意::如流程图所示,如果您未指定--reuse-values ,它将重置不是--set的值在升级过程中回到图表的原始状态。在这种情况下,image将再次为original-image


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

如何持久化-在头盔安装/升级中将键值设置为values.yaml?

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

如果您是图表的所有者,建议您创建图表的发行版本,这是您的行为,因此您可以跟踪每个版本的默认版本。

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

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

答案 1 :(得分:0)

当您使用kubectl get -o yaml准备好depl / change时,可以从kubes中复制东西 当然不是完全一样。