k8s包管理工具:helm3 使用手册

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 命令}}
...
{{else if 命令}}
...
{{else}}
...
{{end}}

比如:

{{if lt (default .Values.version 1) 5}}

注:这里为什么要加default?是因为如果不带参数的进行判断会报错 error calling lt: incompatible types for comparison
详情可以参考:https://github.com/helm/helm/issues/6376

特定的函数语法

shikanon wechat
欢迎您扫一扫,订阅我滴↑↑↑的微信公众号!