1,Values对象是为Chart模板提供值,这个对象的值有4个来源:
chart 包中的 values.yaml 文件
父 chart 包的 values.yaml 文件
通过 helm install 或者 helm upgrade 的 `-f`或者 `--values`参数传入的自定义的 yaml 文件
通过 `--set` 参数传入的值
chart 的 values.yaml 提供的值可以被用户提供的 values 文件覆盖,而该文件同样可以被 `--set`提供的参数所覆盖。
2,管道与函数
前面讲的模块,其实就是将值传给模板引擎进行渲染,模板引擎还支持对拿到数据进行二次处理。
例如从.Values中读取的值变成字符串,可以使用`quote`函数实现:
```
# vi templates/deployment.yaml
app: {{ quote .Values.label.app }}
# helm install --dry-run web ../mychart/
project: ms
app: "nginx"
```
quote .Values.label.app 将后面的值作为参数传递给quote函数。
模板函数调用语法为:functionName arg1 arg2...
3,流程控制
流程控制是为模板提供了一种能力,满足更复杂的数据逻辑处理。
Helm模板语言提供以下流程控制语句:
- `if/else` 条件块
- `with` 指定范围
- `range` 循环块
4,使用 Harbor 作为 Chart 仓库
**1、启用Harbor的Chart仓库服务**
```
# ./install.sh --with-chartmuseum
```
启用后,默认创建的项目就带有helm charts功能了。
**2、安装push插件**
https://github.com/chartmuseum/helm-push
```shell
helm plugin install https://github.com/chartmuseum/helm-push
```
**3、添加repo**
```
helm repo add --username admin --password Harbor12345 myrepo http://192.168.31.70/chartrepo/library
```
**4、推送与安装Chart**
```
# helm push mysql-1.4.0.tgz --username=admin --password=Harbor12345 http://192.168.31.70/chartrepo/library
# helm install web --version 1.4.0 myrepo/demo
```