Helm ABC:修订间差异

来自牛奶河Wiki
跳到导航 跳到搜索
无编辑摘要
第101行: 第101行:


==== Sample ====
==== Sample ====
需要说明的是默认值:如果值是 true/false,{{ ...| default false }} 显然是正确的(default true 不合适),否则当原值不存在,或者是 false,都会触发 default。
需要说明的是默认值:如果值是 true/false,<nowiki>{{ ...| default false }}</nowiki> 显然是正确的(default true 不合适),否则当原值不存在,或者是 false,都会触发 default。
  <small><nowiki># values.yaml
  <small><nowiki># values.yaml
loop:
loop:

2024年7月23日 (二) 16:01的版本

yaml 中的语法、函数。

控制结构

# values.yaml
favorite:
  drink: coffee
  food: pizza
pizzaToppings:
  - mushrooms
  - cheese
  - peppers
  - onions

# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ $.Release.Name }}-configmap
data:
  myvalue: "Hello World"
  {{- with .Values.favorite }}
  drink: {{ .drink | default "tea" | quote }}
  food: {{ .food | upper | quote }}
  {{ if eq .drink "coffee" }}mug: "true"{{ end }}
  {{- end }}
  toppings: |-
    {{- range .Values.pizzaToppings }}
    - {{ . | title | quote }}
    {{- end }}

# Output
apiVersion: v1
kind: ConfigMap
metadata:
  name: edgy-dragonfly-configmap
data:
  myvalue: "Hello World"
  drink: "coffee"
  food: "PIZZA"
  mug: "true"
  toppings: |-
    - "Mushrooms"
    - "Cheese"
    - "Peppers"
    - "Onions"

if

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

  # if 写成换行,就需要用 {{- 格式删除空格/回车
  {{- if eq $.Values.favorite.drink "coffee" }}
  mug: "true"
  {{- end }}

  # 要确保 {{- 和其他命令之间有一个空格。{{- 3 }} 表示“删除左边空格并打印3”,而 {{-3 }} 表示“打印 -3 ”。

with

用来指定范围,PIPELINE 值不为空时执行

{{- with PIPELINE }}
# restricted scope
{{- end }}

# 修改配置映射中的 . 的作用域指向 .Values.favorite
# .drink --> .Values.favorite.drink
# $.Release --> .Release

range

range 方法遍历列表(list)、元组(tuple )、map、dict 等多值结构,若不指定变量,则 . 为当前的值。

注意:range 内部会改变变量路径,相当于 with。解决办法是预先定义变量,或者使用 $. 绝对路径。

  ## 1
  toppings: |-
    {{- range $index, $topping := .Values.pizzaToppings }}
    {{ $index }}: {{ $topping }}
    {{- end }}

  ## 1 - output
  toppings: |-
    0: mushrooms
    1: cheese
    2: peppers
    3: onions 

  ## 2
  sizes: |-
    {{- range tuple "small" "medium" "large" }}
    - {{ . }}
    {{- end }}

  ## 2 - output
  sizes: |-
    - small
    - medium
    - large

Sample

需要说明的是默认值:如果值是 true/false,{{ ...| default false }} 显然是正确的(default true 不合适),否则当原值不存在,或者是 false,都会触发 default。

# values.yaml
loop:
  - 1
  - 2
enable:
  pizza: true
  baozi: false
favorite:
  drink: coffee
  food: pizza
pizzaToppings:
  - mushrooms
  - cheese
  - peppers
  - onions

# templates/configmap.yaml
{{- $Release        := .Release.Name }}
{{- $enable         := .Values.enable.pizza | default false }}
{{- $favorite       := .Values.favorite }}
{{- $pizzaToppings  := .Values.pizzaToppings }}
{{- if $enable }}
{{- range $loop1 := .Values.loop }}
apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ $Release }}-configmap-{{ $loop1 }}
  myvalue: "Hello World"
  {{- range $ky, $val := $favorite }}
  {{ $ky }}: {{ $val }}
  {{- end }}
toppings: |-
  {{- range $pizzaToppings }}
  - {{ . | title }}
  {{- end }}
---
{{- end }}
{{- end }}

函数

Error

  • Error: YAML parse error on ??.yaml: error converting YAML to JSON: yaml: line 8: did not find expected key

一般此种情况,多是缩进格式问题