Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes 如何持久化--在helm安装/升级中将键值设置为values.yaml_Kubernetes_Kubernetes Helm - Fatal编程技术网

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

Kubernetes 如何持久化--在helm安装/升级中将键值设置为values.yaml,kubernetes,kubernetes-helm,Kubernetes,Kubernetes Helm,如何在使用命令行设置values.helm安装时将参数键值持久化到values.yaml文件--名称测试--set image.tag=2020--set image.version=20如何将此image.tag和image.version值更新为values.yaml?dry run将给出结果,但不会更新值。yamlHelm是一个包管理器,它的全部功能是自动部署kubernetes应用程序。它的设计是有点静态的,只有图表的创建者才能对其进行更改 提供对传递到图表中的值的访问。其内容来自多个

如何在使用命令行设置values.helm安装时将参数键值持久化到values.yaml文件--名称测试--set image.tag=2020--set image.version=20如何将此image.tag和image.version值更新为values.yaml?dry run将给出结果,但不会更新值。yaml

Helm是一个包管理器,它的全部功能是自动部署kubernetes应用程序。它的设计是有点静态的,只有图表的创建者才能对其进行更改

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

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

这张照片的创作者值得称赞,不幸的是,我没能找到作者来信任他

  • 您不能按照自己的想法更改图表
    values.yaml
    文件,因为原始
    values.yaml
    将保持图表创建者所需的状态
  • 上面的流程图都是关于
    helm安装
    helm升级
    期间所做的更改

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

  • 图1的默认值为:
  • 您决定部署此图表,并使用
    --set
    更改一些值,如示例
    helm install--name abc--set image=abc--set version-123
    。导致:
  • 然后,要升级图表并修改
    版本
    值,但保持其他值不变,请运行:`helm upgrade--set version=124--重用值,下面是有效的结果值:
注意:正如我们在流程图中看到的那样,如果不指定--reuse values它将重置升级期间未设置--set的值,以返回到图表的原始值。在这种情况下,
图像
将再次成为
原始图像


所以,总结一下你的主要问题:

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

通过始终使用
--重用值
,您可以在
升级期间保留
--设置
值,但是更改将永远不会提交到
值.yaml
文件的原始模板

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

我希望这有助于澄清这个问题


如果我能为您提供更多帮助,请在评论中告诉我。

当kubectl get-o yaml的depl/change准备就绪时,您可以从kubes获得这些资料
当然不完全一样。

如果是您控制的图表,您应该能够使用您喜爱的文本编辑器编辑
values.yaml
文件,或者通过
helm install-f
选项提供备用yaml文件。这两种方法中的任何一种都能满足您的需要吗?
helm-get-values
将从集群中检索它们。有一个
helm升级--reuse values
选项将从该选项开始作为基础。另一个有用的观察结果是,有效的JSON也是有效的YAML,因此您可以将JSON文件传递给
helm安装-f
选项,这有时更容易编写脚本。感谢您的回答,helm是否升级--重用值将值更新为值中的键。YAML,我将尝试一下,这样做的原因是最终用户不知道在安装过程中使用了什么值(就像使用--set完成安装一样),因此如果他们想要升级,可能会遇到问题,我们每天都在设置多个群集,因此需要不断更新values.yaml,以便最终用户知道使用此参数部署的应用程序。@willrof如果是,我想更新/合并values.yaml中的键值,让我解释e2e场景,所以我传递--set参数将键值传递给values.yaml Ex.helm install--name abc--set image=abc--set version-123,这样键值将在安装中传递,但键值不会更新为实际值.yaml文件,因此,当第二个人必须更新helm release时,他们可能不知道在安装过程中使用了哪些值,所以当您传递到安装时,如何在同一时间将其更新为values.yaml?@willrof所以当我们这样做时--通过使用命令行传递键值来对任何helm安装进行干运行--设置我们可以请参见两个不同的内容1)用户提供的值:仅显示我们使用--set传递的值2)计算值:显示与VALUES.yaml中的键匹配的更新(传递给configmap)值。但是这个值实际上并没有在values.yaml中更新,因为它只是干运行,但是如果有可能,实际的计算值会更新为values.yaml?我相信这个图的起源是Harry Cao的这篇中间文章:
image: original-image
version: original-version
image: abc
version: 123
image: abc
version: 124