Helm 控制语句

庆云8个月前技术文章207

Helm 控制结构(在模板语言中称为 "actions")提供给你和模板作者控制模板迭代流的能力。 Helm 的模板语言提供了以下控制结构:

  • if/else,用来创建条件语句

  • with,用来指定范围

  • range,提供 "for each" 类型的循环

除了这些之外,还提供了一些声明和使用命名模板的关键字:

  • define 在模板中声明一个新的命名模板

  • template 导入一个命名模板

  • block 声明一种特殊的可填充的模板块


1、If/Else

If/Else 语句中的条件在模板中称为管道,基本结构如下:

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


如果是以下值时,管道会被设置为 false,否则为 true:

  • 布尔 false

  • 数字 0

  • 空字符串

  • nil

  • 空集合(map, slice, tuple, dict, array


实例:

$ cat > mychart/values.yaml <<EOF
grayscale: "open"  # open or close
EOF

$ cat > mychart/templates/configmap.yaml <<EOF
apiVersion: v1
kind: ConfigMap
metadata:
 name: {{ .Release.Name }}-cm
 namespace: {{ .Release.Namespace }}
data:
 {{- if eq .Values.grayscale "open" }}
 environment: "Restricted"
 {{- else }}
 environment: "Prod"
 {{- end }}
EOF

$ helm install mychart ./mychart/ --debug --dry-run
......
......
......
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
 name: mychart-cm
 namespace: default
data:
 environment: "Restricted"


2、With

With 语句主要是用来控制变量的范围,也就是修改查找变量的作用域,基本结构如下:

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


实例:

$ cat > mychart/values.yaml <<EOF
support:
 author:
   name: "JokerZhang"
   mail: "jokerzhang@outlook.com"
EOF

$ cat > mychart/templates/configmap.yaml <<EOF
apiVersion: v1
kind: ConfigMap
metadata:
 name: {{ .Release.Name }}-cm
 namespace: {{ .Release.Namespace }}
data:
 {{- with .Values.support }}
 author_name: {{ .author.name }}
 author_mail: {{ .author.mail }}
 {{- end }}
EOF

$ helm install mychart ./mychart/ --debug --dry-run
......
......
......
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
 name: mychart-cm
 namespace: default
data:
 author_name: JokerZhang
 author_mail: jokerzhang@outlook.com

注意:我们需要注意对象的作用域,使用 $ 符号从父作用域中访问对象而不是直接获取。当模板开始执行后 $ 会被映射到根作用域,且执行过程中不会更改。


3、Range

Range 语句用于提供循环遍历集合输出的功能,基本结构如下:

{{- range 要遍历的对象 }}
 # do something
{{- end }}


实例:

$ cat > mychart/values.yaml <<EOF
depends:
 - jdk
 - mysql
 - npm
EOF

$ cat > mychart/templates/configmap.yaml <<EOF
apiVersion: v1
kind: ConfigMap
metadata:
 name: {{ .Release.Name }}-cm
 namespace: {{ .Release.Namespace }}
data:
 preconditions: |-
   {{- range .Values.depends }}
   - {{ . | title | quote }}
   {{- end }}
EOF

$ helm install mychart ./mychart/ --debug --dry-run
......
......
......
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
 name: mychart-cm
 namespace: default
data:
 preconditions: |-
   - "Jdk"
   - "Mysql"
   - "Npm"

注意: |- 表示在该数据项中允许使用多行文本。


相关文章

chronyc时间同步器配置

chronyc时间同步器配置

chronyc & chronydchrony 有两个核心组件:chronyd守护进程,主要用于调整内核中运行的系统时间和时间服务器同步chronyc命令行界面程序,让用户能够对 chrony...

Spark接入Kerberos交互式命令窗口提交任务

Spark接入Kerberos交互式命令窗口提交任务

1. Spark-shell首先需要使用有操作hdfs文件权限的keytab用户认证,认证上之后可以通过spark-shell交互命令行窗口执行任务如果集成了Ranger组件,如果创建的普通用户没有在...

REPMGR-PG高可用搭建(二)

REPMGR-PG高可用搭建(二)

REPMGR搭建步骤一、介绍repmgr是第二象限开源的一套流复制集群管理工具,用于管理PostgreSQL服务器群集中的复制和故障转移。 支持故障自动转移和手动切换;支持分布式管理集群节点,易扩展,...

docker日志管理

docker日志管理

docker的日志分类 一、Docker 引擎日志(也就是 dockerd 运行时的日志)Ubuntu14.04: /var/log/upstart/docker.logCentos 6/7或ubun...

开源大数据集群部署(十三)Ranger 集成Trino

开源大数据集群部署(十三)Ranger 集成Trino

1、安装ranger trino插件在trino的coordinator节点部署Ø 解压ranger-2.3.0-trino-plugin.tar.gz[root@hd2.dtstack.com ]#...

Phoenix 安装使用文档

Phoenix 安装使用文档

Phoenix 安装使用文档下载Phoenix直接到Phoenix官网下载安装包,官网地址为:http://mirror.bit.edu.cn/apache/phoenix/备注:Phoenix 版本...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。