对象与Values
模板语法
对象
对象从模板引擎传递到模板中。而且您的代码可以传递对象(在查看
内置对象
-
Release
:这个对象描述了release 本身。它里面有几个对象:Release.Name
:release 名称,即是helm install --name
命令中指定的名称。Release.Time
:release 的时间Release.Namespace
:release 的namespace (如果清单未覆盖)Release.Service
:release 服务的名称(始终是Tiller
) 。Release.Revision
:此release 的修订版本号。它从1 开始,每helm upgrade
一次增加一个。Release.IsUpgrade
:如果当前操作是升级或回滚,则将其设置为true
。Release.IsInstall
:如果当前操作是安装,则设置为true
。
-
Values
:从values.yaml
文件和用户提供的文件传入模板的值。默认情况下,Values 是空的。 -
Chart
:Chart.yaml
文件的内容。任何数据Chart.yaml 将在这里访问。例如{{.Chart.Name}}-{{.Chart.Version}} 将打印出来mychart-0.1.0 。chart 指南中 Charts Guide 列出了可用字段 -
Files
:这提供对chart 中所有非特殊文件的访问。虽然无法使用它来访问模板,但可以使用它来访问chart 中的其他文件。请参阅 “访问文件” 部分。Files.Get
是一个按名称获取文件的函数(.Files.Get config.ini
)Files.GetBytes
是将文件内容作为字节数组而不是字符串获取的函数。这对于像图片这样的东西很有用。
-
Capabilities
:这提供了关于Kubernetes 集群支持的功能的信息。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
:包含有关正在执行的当前模板的信息 -
Name
:到当前模板的namespace 文件路径(例如mychart/templates/mytemplate.yaml
) -
BasePath
:当前chart 模板目录的namespace 路径(例如mychart/templates ) 。
Values
chart 中的values.yaml
文件- 如果这是一个子
chart ,来自父chart 的values.yaml
文件 value 文件通过helm install 或helm upgrade 的- f 标志传入文件(helm install -f myvals.yaml ./mychart
)- 通过
--set
(例如helm install --set foo=bar ./mychart
)
上面的列表按照特定的顺序排列:
Values 值使用
删除默认带的
favoriteDrink: coffee
现在我们可以在模板中使用这个:
apiVersion: v1
kind: ConfigMap
metadata:
name: {{.Release.Name}}-configmap
data:
myvalue: "Hello World"
drink: {{.Values.favoriteDrink}}
注意我们在最后一行favoriteDrink
的值。
让我们看看这是如何渲染的。
$ helm install --dry-run --debug ./mychart
SERVER: "localhost:44134"
CHART PATH: /Users/mattbutcher/Code/Go/src/k8s.io/helm/_scratch/mychart
NAME: geared-marsupi
TARGET NAMESPACE: default
CHART: mychart 0.1.0
MANIFEST:
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: geared-marsupi-configmap
data:
myvalue: "Hello World"
drink: coffee
由于 favoriteDrink
在默认 values.yaml
文件中设置为 coffee
,这就是模板中显示的值。我们可以轻松地在我们的--set
添标志来覆盖:
helm install --dry-run --debug --set favoriteDrink=slurm ./mychart
SERVER: "localhost:44134"
CHART PATH: /Users/mattbutcher/Code/Go/src/k8s.io/helm/_scratch/mychart
NAME: solid-vulture
TARGET NAMESPACE: default
CHART: mychart 0.1.0
MANIFEST:
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: solid-vulture-configmap
data:
myvalue: "Hello World"
drink: slurm
由于 --set
比默认 values.yaml
文件具有更高的优先级,我们的模板生成 drink: slurm
。
favorite
部分,然后在其中添加几个键:
favorite:
drink: coffee
food: pizza
现在我们稍微修改模板:
apiVersion: v1
kind: ConfigMap
metadata:
name: {{.Release.Name}}-configmap
data:
myvalue: "Hello World"
drink: {{.Values.favorite.drink}}
food: {{.Values.favorite.food}}
虽然以这种方式构建数据是可以的,但建议保持
删除默认的Key
如果您需要从默认值中删除一个键,可以覆盖该键的值为
livenessProbe:
httpGet:
path: /user/login
port: http
initialDelaySeconds: 120
如果尝试覆盖exec
而不是 httpGet
,使用 --set livenessProbe.exec.command=[cat,docroot/CHANGELOG.txt]
,
livenessProbe:
httpGet:
path: /user/login
port: http
exec:
command:
- cat
- docroot/CHANGELOG.txt
initialDelaySeconds: 120
但是,
helm install stable/drupal --set image=my-registry/drupal:0.1.0 --set livenessProbe.exec.command=[cat,docroot/CHANGELOG.txt] --set livenessProbe.httpGet=null
到这里,我们已经看到了几个内置对象,并用它们将信息注入到模板中。