Helm 语法说明
基础命令
helm 的常用命令:$ helm --help
helm create <包名> # 创建一个项目
helm template <包路径> # 可以将一个本地的包导出YAML文件打印出来
helm install <发布的名称> <包路径> # 安装包
基本模板语法
内置对象
对于模板来说,有几个是内置有的对象:
Release
,就是我们用 install 安装时候生成的,比如Release.Name
就是我们用install
安装的发布名称;Values
,这个对应的是Values.yaml
文件里面的变量,比如helm template -f <values文件>
就可以指定一个values.yaml
文件;Chart
,对应的是Chart.yaml
,用于获取 Chart 相关信息。
基础语法
变量使用
模板中的变量都放在`{{}}` 中,比如:`{{ .Values.images }}` 表示 `Values` 对象下的`images` 字段:使用-删除空格和换行符
YAML 文件对于空格是敏感的,所以在制作模板的时候我们需要注意对齐,比如:image:
{{ if ne .Values.image }}
nginx
{{ end }}
上面这个语句会被转义为:image:
nginx
可以看到 `{{}}` 里面的内容被删除了,但原来那行还在。(这里空行不会报错,k8s会读这一行,但这里的nginx的缩进是4个,会因为对齐报错)
要想删除那行其他的空格和换行符可以用`{{- `或者`-}}`,一个是删除左边的空格和换行符,一个是删除右边的空格和换行符。运算符
支持运算符:eq: 等于(equal to)
ne: 不等于(not equal to)
lt: 小于(less than)
le: 小于等于(less than or equal to)
gt: 大于(greater than)
ge: 大于等于(greater than or equal to)
条件语句
if/else 用法:
{{if 命令}} |
比如:{{if lt (default .Values.version 1) 5}}
注:这里为什么要加default?是因为如果不带参数的进行判断会报错 error calling lt: incompatible types for comparison
详情可以参考:https://github.com/helm/helm/issues/6376