内置对象

Release

Release.Name release 名字
Release.Namespace release 命名空间
Release.Service release 服务的名称
Release.Revision release 修订版本号,从 1 开始累加
Release.IsUpgrade 如果当前操作是升级或回滚,则将其设置为 true
Release.IsInstall 如果当前操作是安装,则设置为 true。

Values

从values.yaml文件和用户提供的文件传入模板的值。默认情况下,Values 是空的。
清空默认的Values 文件,写入如下内容

  1. favoriteDrink: coffee

查看渲染的的结果

  1. $ helm install geared-marsupi ./mychart --dry-run --debug
  2. ...
  3. ---
  4. # Source: mychart/templates/configmap.yaml
  5. apiVersion: v1
  6. kind: ConfigMap
  7. metadata:
  8. name: geared-marsupi-configmap
  9. data:
  10. myvalue: "Hello Mychart"
  11. drink: coffee

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

  1. helm install solid-vulture ./mychart --dry-run --debug --set favoriteDrink=slurm

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

Chart

Files

Capabilities

Capabilities.APIVersions 是一组版本信息。 Capabilities.APIVersions.Has $version 指示是否在群集上启用版本(batch/v1)。
Capabilities.KubeVersion 提供了查找 Kubernetes 版本的方法。它具有以下值:Major,Minor,GitVersion,GitCommit,GitTreeState,BuildDate,GoVersion,Compiler,和 Platform。
Capabilities.TillerVersion 提供了查找 Tiller 版本的方法。它具有以下值:SemVer,GitCommit,和 GitTreeState。

Template

Template.Name
Template.BasePath

函数

  1. apiVersion: v1
  2. kind: ConfigMap
  3. metadata:
  4. name: {{ .Release.Name }}-configmap
  5. data:
  6. myvalue: "Hello Mychart"
  7. drink: {{ quote .Values.favoriteDrink }}

执行

  1. helm install my-chart ./mychart --dry-run --debug
  2. ...
  3. ---
  4. # Source: mychart/templates/configmap.yaml
  5. apiVersion: v1
  6. kind: ConfigMap
  7. metadata:
  8. name: my-chart-configmap
  9. data:
  10. myvalue: "Hello Mychart"
  11. drink: "coffee"

管道

  1. apiVersion: v1
  2. kind: ConfigMap
  3. metadata:
  4. name: {{ .Release.Name }}-configmap
  5. data:
  6. myvalue: "Hello Mychart"
  7. drink: {{ .Values.favoriteDrink | quote}}

执行结果

  1. $ helm install my-chart ./mychart --dry-run --debug
  2. ---
  3. # Source: mychart/templates/configmap.yaml
  4. apiVersion: v1
  5. kind: ConfigMap
  6. metadata:
  7. name: my-chart-configmap
  8. data:
  9. myvalue: "Hello Mychart"
  10. drink: "coffee"

default 函数

default 函数:default 默认值 给的值。这个函数可以在模板中指定默认值,避免这个值被省略。

  1. apiVersion: v1
  2. kind: ConfigMap
  3. metadata:
  4. name: {{ .Release.Name }}-configmap
  5. data:
  6. myvalue: "Hello Mychart"
  7. drink: {{ .Values.favoriteDrink | default "tea" | quote}}

注释掉

  1. #favoriteDrink: coffee

执行

  1. helm install my-chart ./mychart --dry-run --debug
  2. ---
  3. # Source: mychart/templates/configmap.yaml
  4. apiVersion: v1
  5. kind: ConfigMap
  6. metadata:
  7. name: my-chart-configmap
  8. data:
  9. myvalue: "Hello Mychart"
  10. drink: "tea"

流程控制

修改values.yaml

  1. favorite:
  2. drink: coffee
  1. apiVersion: v1
  2. kind: ConfigMap
  3. metadata:
  4. name: {{ .Release.Name }}-configmap
  5. data:
  6. myvalue: "Hello Mychart"
  7. drink: {{ .Values.favorite.drink | default "tea" | quote}}
  8. {{if eq .Values.favorite.drink "coffee"}}
  9. mug: "true"
  10. {{ end }}

执行

  1. helm install my-chart ./mychart --dry-run --debug
  2. ...
  3. ---
  4. # Source: mychart/templates/configmap.yaml
  5. apiVersion: v1
  6. kind: ConfigMap
  7. metadata:
  8. name: my-chart-configmap
  9. data:
  10. myvalue: "Hello Mychart"
  11. drink: "coffee"
  12. mug: "true"

会有空格

  1. apiVersion: v1
  2. kind: ConfigMap
  3. metadata:
  4. name: {{ .Release.Name }}-configmap
  5. data:
  6. myvalue: "Hello Mychart"
  7. drink: {{ .Values.favorite.drink | default "tea" | quote}}
  8. {{- if eq .Values.favorite.drink "coffee"}}
  9. mug: "true"
  10. {{- end }}

会移除左边的空格

  1. helm install my-chart ./mychart --dry-run --debug
  2. ...
  3. ---
  4. # Source: mychart/templates/configmap.yaml
  5. apiVersion: v1
  6. kind: ConfigMap
  7. metadata:
  8. name: my-chart-configmap
  9. data:
  10. myvalue: "Hello Mychart"
  11. drink: "coffee"
  12. mug: "true"