1.1. if/else

我们要看的第一个控制结构是用于在模板中有条件地包含文本块。这就是 if/else 块。

条件的基本结构如下所示:

{{ if PIPELINE }}
  # Do something
{{ else if OTHER PIPELINE }}
  # Do something else
{{ else }}
  # Default case
{{ end }}

[!NOTE|style:flat] 注意,我们现在讨论的是管道而不是值。其原因是要明确控制结构可以执行整个管道,而不仅仅是评估一个值。

如果值为如下情况,则管道评估为 false。

  • 一个布尔型的假 False
  • 一个数字零 0
  • 一个空的字符串 ''
  • 一个 nil(空或 null)
  • 一个空的集合(mapslicetupledictarray

在其他情况下, 条件值为 true 此管道被执行。

我们为 ConfigMap 添加一个简单的条件。如果饮料被设置为咖啡,我们将添加另一个设置:

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Release.Name }}-configmap
data:
  myvalue: "Hello World"
  drink: {{ .Values.favorite.drink | default "tea" | quote }}
  food: {{ .Values.favorite.food | upper | quote }}
  {{ if and .Values.favorite.drink (eq .Values.favorite.drink "coffee") }}mug: true{{ end }}

注意 .Values.favorite.drink 必须已定义,否则在将它与 “coffee” 进行比较时会抛出错误。由于我们在上一个例子中注释掉了 drink:coffee,因此输出不应该包含 mug:true 标志。但是如果我们将该行添加回 values.yaml 文件中,输出应该如下所示:

# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: eyewitness-elk-configmap
data:
  myvalue: "Hello World"
  drink: "coffee"
  food: "PIZZA"
  mug: true
Copyright © 温玉 2021 | 浙ICP备2020032454号 all right reserved,powered by Gitbook该文件修订时间: 2022-01-08 03:09:47

results matching ""

    No results matching ""