Helm模版渲染技巧

Helm 模板渲染技巧

Helm 是一个强大的 Kubernetes 包管理工具,模板渲染是其核心功能之一。以下是一些高级技巧,涵盖数组、字典、循环和工具库(如 base64)的使用方法。


数组操作

在 Helm 模板中,数组(列表)是常见的数据结构。以下是一些数组操作技巧:

定义数组
values.yaml 中定义数组:

items:
  - item1
  - item2
  - item3

遍历数组
使用 range 遍历数组并生成内容:

{{- range .Values.items }}
- name: {{ . }}
{{- end }}

获取数组长度
通过 len 函数获取数组长度:

{{ len .Values.items }}

合并数组
使用 concat 函数合并多个数组:

{{ $combined := concat .Values.array1 .Values.array2 }}

字典操作

字典(键值对)是 Helm 模板中另一种常见的数据结构。

定义字典
values.yaml 中定义字典:

config:
  key1: value1
  key2: value2

访问字典值
通过键名直接访问字典值:

{{ .Values.config.key1 }}

遍历字典
使用 range 遍历字典:

{{- range $key, $value := .Values.config }}
- {{ $key }}: {{ $value }}
{{- end }}

检查键是否存在
通过 hasKey 函数检查键是否存在:

{{ if hasKey .Values.config "key1" }}
  key1 exists
{{ end }}

循环与条件控制

Helm 支持复杂的循环和条件控制逻辑。

range 循环
遍历数组或字典并生成内容:

{{- range $index, $item := .Values.items }}
- index: {{ $index }}, item: {{ $item }}
{{- end }}

if-else 条件
根据条件渲染内容:

{{- if eq .Values.env "prod" }}
  production environment
{{- else }}
  non-production environment
{{- end }}

with
限定作用域以避免重复书写路径:

{{- with .Values.config }}
  key1: {{ .key1 }}
  key2: {{ .key2 }}
{{- end }}

工具库函数

Helm 提供了丰富的工具库函数,以下是一些常用函数:

base64 编码与解码
使用 b64encb64dec 进行 Base64 编码与解码:

{{ .Values.password | b64enc }}
{{ .Values.encodedString | b64dec }}

字符串操作
使用 trimreplace 等函数处理字符串:

{{ .Values.name | trim }}
{{ .Values.path | replace "/" "-" }}

数学运算
使用 addsub 等函数进行数学运算:

{{ add .Values.num1 .Values.num2 }}

时间格式化
使用 now 函数获取当前时间:

{{ now | date "2006-01-02" }}

高级技巧

模板嵌套
通过 include 函数复用模板:

{{- define "mytemplate" }}
  template content
{{- end }}

{{ include "mytemplate" . }}

默认值设置
使用 default 函数设置默认值:

{{ .Values.name | default "anonymous" }}

变量赋值
通过 $ 定义变量:

{{- $name := .Values.name -}}
name: {{ $name }}

缩进控制
使用 nindentindent 控制缩进:

{{ .Values.content | nindent 4 }}

示例:综合使用

以下是一个综合示例,展示数组、字典、循环和工具库的使用:

{{- $config := .Values.config -}}
apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Release.Name }}-config
data:
  {{- range $key, $value := $config }}
  {{ $key }}: {{ $value | b64enc | quote }}
  {{- end }}
  items:
    {{- range $index, $item := .Values.items }}
    - {{ $item | upper }}
    {{- end }}

通过以上技巧,可以更高效地编写 Helm 模板,实现复杂的渲染逻辑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云原生运维

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值