写点什么

helm values.yaml

作者:ghostwritten
  • 2022 年 5 月 10 日
  • 本文字数:1394 字

    阅读完需:约 5 分钟

helm values.yaml

1. values.yaml

上面的内置对象中有一个对象就是 Values,该对象提供对传入 chart 的值的访问,Values 对象的值有 4 个来源:


  • chart 包中的 values.yaml 文件

  • 父 chart 包的 values.yaml 文件

  • 通过 helm install 或者 helm upgrade 的-f 或者--values参数传入的自定义的 yaml 文件

  • 通过--set 参数传入的值


chart 的 values.yaml 提供的值可以被用户提供的 values 文件覆盖,而该文件同样可以被--set提供的参数所覆盖。


这里我们来重新编辑 mychart/values.yaml 文件,将默认的值全部清空,添加一个新的数据:(values.yaml)


course: k8s
复制代码


然后我们在上面的 templates/configmap.yaml 模板文件中就可以使用这个值了:(configmap.yaml)


apiVersion: v1kind: ConfigMapmetadata:  name: {{ .Release.Name }}-configmapdata:  myvalue: "Hello World"  course: {{ .Values.course }}
复制代码


可以看到最后一行我们是通过{{ .Values.course }}来获取 course 的值的。现在我们用 debug 模式来查看下我们的模板会被如何渲染:


$ helm install --dry-run --debug ./mycharthelm install --dry-run --debug .[debug] Created tunnel using local port: '33509'
[debug] SERVER: "127.0.0.1:33509"
[debug] Original chart version: ""[debug] CHART PATH: /root/course/kubeadm/helm/mychart
NAME: nasal-anacondaREVISION: 1RELEASED: Sun Sep 9 17:37:52 2018CHART: mychart-0.1.0USER-SUPPLIED VALUES:{}
COMPUTED VALUES:course: k8s
HOOKS:MANIFEST:
---# Source: mychart/templates/configmap.yamlapiVersion: v1kind: ConfigMapmetadata: name: nasal-anaconda-configmapdata: myvalue: "Hello World" course: k8s
复制代码


我们可以看到 ConfigMap 中 course 的值被渲染成了 k8s,这是因为在默认的 values.yaml 文件中该参数值为 k8s,同样的我们可以通过--set参数来轻松的覆盖 course 的值:


$ helm install --dry-run --debug --set course=python ./mychart[debug] Created tunnel using local port: '44571'
......
---# Source: mychart/templates/configmap.yamlapiVersion: v1kind: ConfigMapmetadata: name: named-scorpion-configmapdata: myvalue: "Hello World" course: python
复制代码


由于--set 比默认 values.yaml 文件具有更高的优先级,所以我们的模板生成为 course: python


values 文件也可以包含更多结构化内容,例如,我们在 values.yaml 文件中可以创建 course 部分,然后在其中添加几个键:


course:  k8s: devops  python: django
复制代码


现在我们稍微修改模板:


apiVersion: v1kind: ConfigMapmetadata:  name: {{ .Release.Name }}-configmapdata:  myvalue: "Hello World"  k8s: {{ .Values.course.k8s }}  python: {{ .Values.course.python }}
复制代码


同样可以使用 debug 模式查看渲染结果:


$ helm install --dry-run --debug ./mychart[debug] Created tunnel using local port: '33801'......---# Source: mychart/templates/configmap.yamlapiVersion: v1kind: ConfigMapmetadata:  name: exhaling-turtle-configmapdata:  myvalue: "Hello World"  k8s: devops  python: django
复制代码


可以看到模板中的参数已经被 values.yaml 文件中的值给替换掉了。虽然以这种方式构建数据是可以的,但我们还是建议保持 value 树浅一些,平一些,这样维护起来要简单一点。

发布于: 刚刚阅读数: 2
用户头像

ghostwritten

关注

还未添加个人签名 2018.11.14 加入

还未添加个人简介

评论

发布
暂无评论
helm values.yaml_Kubernetes_ghostwritten_InfoQ写作社区