Helm文档 - Chart模板教程:Values文件

Values文件

在上一节中我们简单的提到了Helm模板提供的内置对象。其中的一个内置对象是Values。我们可以通过这个对象来访问传递给chart的值。Values对象的内容可以通过多种方式进行设置:

  1. Chart中的values.yaml文件
  2. 如果这是一个子chart的话,可以通过父chart中的values.yaml文件进行设置。
  3. 在helm install或helm upgrade命令上通过-f标志设置values文件(helm install -f myvals.yaml ./mychart)
  4. 通过–set配置的独立的参数(比如:helm install --set foo=bar
    ./mychart)

上面的列表是按照从低到高的优先级顺序排列的:values.yaml是默认值,它可以被父chart的values.yaml覆盖;而父chart的values.yaml提供的值可以被用户提供的values文件所覆盖;用户提供的values文件的值也可以被–set参数所设置的值覆盖。

Values文件是普通的YAML文件。让我们首先编辑mychart/values.yaml文件,然后编辑我们的ConfigMap模板。

删除默认的values.yaml文件,在这里我们仅仅只设置一个参数:

favoriteDrink: coffee

现在我们可以在模板中使用这个参数值了。

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Release.Name }}-configmap
data:
  myvalue: "Hello World"
  drink: {{ .Values.favoriteDrink }}

我们在最后一行通过{{ .Values.favoriteDrink }}访问了favoriteDrink值。
让我们看一下这是如何渲染的。

$ helm install --dry-run --debug good-puppy ./mychart
SERVER: "localhost:44134"
CHART PATH: /Users/mattbutcher/Code/Go/src/helm.sh/helm/_scratch/mychart
NAME:   good-puppy
TARGET NAMESPACE:   default
CHART:  mychart 0.1.0
MANIFEST:
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: good-puppy-configmap
data:
  myvalue: "Hello World"
  drink: coffee

因为favoriteDrink在默认的values.yaml文件被设置为coffee,这也正是在模板中显示的值。
我们可以通过在helm install命令中简单的添加一个–set标志来覆盖掉这个值:

helm install --dry-run --debug --set favoriteDrink=slurm good-puppy ./mychart
SERVER: "localhost:44134"
CHART PATH: /Users/mattbutcher/Code/Go/src/helm.sh/helm/_scratch/mychart
NAME:   good-puppy
TARGET NAMESPACE:   default
CHART:  mychart 0.1.0
MANIFEST:
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: good-puppy-configmap
data:
  myvalue: "Hello World"
  drink: slurm

由于–set比默认的values.yaml有更高的优先级,所以我们的模板中生成了“drink:slurm”。

Values文件中页可以包含更多结构化的内容。比如:我们将在values.yaml文件中创建一个favorite小节,并添加几个keys:

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 }}

虽然以这种方式构造数据是可能的,但仍然建议您保持较浅的层次,更倾向于平铺的结构。当我们学习到如何为子chart赋值时,我们将看到如何使用树结构来命名我们的values。

删除默认的key

如果你需要从默认的values中删除一个key,你可以覆盖这个key的值为null,在这种情况下,Helm将从覆盖的值合并中删除这个key。

例如:Drupal chart允许你配置liveness probe, 在这种情况下你可以配置一个自定义的镜像。下边是默认的值:

livenessProbe:
  httpGet:
    path: /user/login
    port: http
  initialDelaySeconds: 120

如果你想要将livenessProbe的处理器httpGet覆盖为exec,你可以使用 --set livenessProbe.exec.command=[cat,docroot/CHANGELOG.txt],Helm会将默认键和覆盖键合并在一起,产生如下YAML:

livenessProbe:
  httpGet:
    path: /user/login
    port: http
  exec:
    command:
    - cat
    - docroot/CHANGELOG.txt
  initialDelaySeconds: 120

然而,执行上边的模板是会报错的,因为你不可以声明两个以上的livenessProbe处理器。为了解决这个问题,你可以通过设置livenessProbe.httpGet为null来指示Helm删除掉它:

helm install stable/drupal --set image=my-registry/drupal:0.1.0 --set livenessProbe.exec.command=[cat,docroot/CHANGELOG.txt] --set livenessProbe.httpGet=null

至此,我们已经看到了几个内置对象,并使用它们将信息注入到模板中。接下来我们来看一下模板引擎的另一个方面:函数和管道。

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 数字20 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读