Helm 控制语句

庆云2年前技术文章699

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"

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


相关文章

Hive优化之配置参数的优化(一)

Hive优化之配置参数的优化(一)

 Hive是大数据领域常用的组件之一,主要是大数据离线数仓的运算,关于Hive的性能调优在日常工作和面试中是经常涉及的一个点,因此掌握一些Hive调优是必不可少的一项技能。影响Hive效率的...

企业级大数据安全架构(五)

企业级大数据安全架构(五)

本章节介绍安全架构里面一个重要组件Knox安装,我们是通过ambari安装,如果安装开源Knox可参考官网文档1 ambari页面add service2勾选Knox安装点击NEXT3选择安装knox...

MongoDB的MMAPv1存储引擎

 在MongoDB 3.0之前,默认存储引擎为MMAPv1。从MongoDB 4.0开始,MMAPv1存储引擎开始被遗弃。MMAPv1是基于内存映射文件的原始存储引擎。一、journal1、将数据写入...

Atlas集成Hive

Atlas集成Hive

1 集成原理2 验证Hive元数据采集效果(1) 查看Atlas里是否有Hive元数据(2) 进入Hive创建一个库表create database if not exists foo;(3) 进入A...

grafana版本升级

grafana版本升级

      因Grafana需接入腾讯云监控数据,安装腾讯云监控插件。腾讯云监控应用插件需运行在 Grafana ≥ 7.3且 < 8.0 的版本上。当前使用版本为...

MySQL DBA 常用工具 SQL

MySQL DBA 常用工具 SQL

【前言】本篇文章介绍一些 MySQL 管理的实用语句及适用的场景。SQL 基于 MySQL 5.7 版本。1. 长事务事务长时间未提交,即使状态为Sleep也可能造成一些锁等待的问题,使用该查询可以查...

发表评论    

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