helm 模板开发入门 (一)
目录
警告
本文最后更新于 2020-06-18 17:27,文中内容可能已过时。
chart 包目录结构:
|
|
Chart.yaml
|
|
第一个模板:
1. 创建 chart:
|
|
2. 创建资源清单模板:
vim mychart/templates/configmap.yaml
|
|
3. 安装
|
|
上面的 {{.Release.Name}} 意思是获取 Release 对象的 Name 值
helm 模板提供的内置对象:
Release:
- Release.Name: release 的名称
- Release.Time: release 的发布时间
- Release.Namespace: release 的 namespace
- Release.Service: 发布服务的名称,总是 Tiller
- Release.Revision: release 的版本修订号。它从 1 开始,随着 release 的升级而增加。
- Release.IsUpgrade: 如果当前操作是升级或回滚,则为 true
- Release.IsInstall: 如果当前操作是安装,则为 true
Values:从 values.yaml 文件和用户提供的文件传递到模板的值。默认情况下 Values 为空。
Chart:读取 Chart.yaml 文件的内容。例如 {{.Chart.Name}}-{{.Chart.Version}} 将打印出 mychart-0.1.0。
Files:这提供对图表中所有非特殊文件的访问。虽然无法使用它来访问模板,但是可以使用它来访问图表中的其他文件。
- Files.Get 是一个按名称获取文件的函数(.Files.Get config.ini)
- Files.GetBytes 是将文件内容作为字节数组而不是字符串获取的函数。这对于像图片这样的东西很有用。
Capabilities: 提供了关于 Kubernetes 集群支持的功能的信息
- Capabilities.APIVersions:是一组版本信息。
- Capabilities.APIVersions.Has $version:是否支持指定的 api 或 resources 版本
- Capabilities.KubeVersion:提供查找 Kubernetes 版本的方法。它有以下值:Major、Minor、GitVersion、GitCommit、GitTreeState、BuildDate、GoVersion、Compiler 和 Platform。
- Capabilities.TillerVersion:提供了一种查找 tiller 版本的方法。它有以下值:SemVer, GitCommit, GitTreeState。
Template: Contains information about the current template that is being executed
- Name: 当前模板的文件路径 (例如 mychart/templates/mytemplate.yaml)
- BasePath: 当前 chart 模板目录路径 (例如 mychart/templates)
这些值可用于任何顶级模板。这并不一定意味着它们将在任何地方都可用。
values 文件
传递到 chart 中的值。它的内容来自四个来源:
- chart 包的 values.yaml 文件
- 如果是子 chart,则 values.yaml 文件为父 chart 包的
- 通过 - f 参数指定一个文件 (helm install -f myvals.yaml ./mychart)
- 通过–set 指定 (helm install –set foo=bar ./mychart)
上面的列表按特定性顺序排列:values.yaml 是默认值,可以被父图表的覆盖 values.yaml,而后者可以由用户提供的值文件覆盖,而后者又可以由–set 参数覆盖。
示例: 1. 添加一个 value
|
|
2. 修改模板 cat templates/configmap.yaml
|
|
3. 升级 chart
|
|
4. 查看渲染后的结果
|
|
请我喝杯水

