ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Helm templates 中的语法

2020-09-03 12:00:20  阅读:1143  来源: 互联网

标签:templates name yaml 作用域 value 语法 Release Values Helm


_helpers.tpl

在chart中以 “下划线” 开头的文件,称为”子模版”。
例如在 _helper.tpl 中定义子模块,格式:{{- define "模版名字" -}} 模版内容 {{- end -}}

{{- define "nginx.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
{{- end -}}

引用模板,格式:{{ include "模版名字" 作用域}}

apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ include "nginx.fullname" . }}

内置对象

Build-in Objects: https://helm.sh/docs/chart_template_guide/builtin_objects/

Chart 预定义对象可直接在各模板中使用。

Release:      代表Release对象,属性包含:Release.Name、Release.Namespace、Release.Revision等
Values:       表示 values.yaml 文件数据
Chart:        表示 Chart.yaml 数据
Files:        用于访问 chart 中非标准文件

Capabilities: 用于获取 k8s 集群的一些信息
   - Capabilities.KubeVersion.Major:K8s的主版本

Template:     表示当前被执行的模板
   - Name:表示模板名,如:mychart/templates/mytemplate.yaml
   - BasePath:表示路径,如:mychart/templates

变量

默认情况点( . ), 代表全局作用域,用于引用全局对象。
helm 全局作用域中有两个重要的全局对象:Values 和 Release

# Values
# 这里引用了全局作用域下的Values对象中的key属性。 
{{ .Values.key }}
Values代表的就是values.yaml定义的参数,通过.Values可以引用任意参数。
例子:
{{ .Values.replicaCount }}

# 引用嵌套对象例子,跟引用json嵌套对象类似
{{ .Values.image.repository }}

# Release 
其代表一次应用发布,下面是Release对象包含的属性字段:
Release.Name       - release的名字,一般通过Chart.yaml定义,或者通过helm命令在安装应用的时候指定。
Release.Time       - release安装时间
Release.Namespace  - k8s名字空间
Release.Revision   - release版本号,是一个递增值,每次更新都会加一
Release.IsUpgrade  - true代表,当前release是一次更新.
Release.IsInstall  - true代表,当前release是一次安装
Release.Service:   - The service that is rendering the present template. On Helm, this is always Helm.

自定义模版变量。

# 变量名以$开始命名, 赋值运算符是 := (冒号+等号)
{{- $relname := .Release.Name -}}

引用自定义变量:
#不需要 . 引用
{{ $relname }}

include

include 是一个函数,所以他的输出结果是可以传给其他函数的

# 例子1:
env:
  {{- include "xiaomage" . }}

# 结果:
          env:
- name: name
  value: xiaomage
- name: age
  value: secret
- name: favourite
  value: "Cloud Native DevSecOps"
- name: wechat
  value: majinghe11

# 例子2:
env:
  {{- include "xiaomage" . | indent 8}}

# 结果:
          env:
            - name: name
              value: xiaomage
            - name: age
              value: secret
            - name: favourite
              value: "Cloud Native DevSecOps"
            - name: wechat
              value: majinghe11

with

with 关键字可以控制变量的作用域,主要就是用来修改 . 作用域的,默认 . 代表全局作用域,with 语句可以修改 . 的含义

# 例子:
# .Values.favorite 是一个 object 类型
{{- with .Values.favorite }}
drink: {{ .drink | default "tea" | quote }}   # 相当于.Values.favorite.drink
food:  {{ .food  | upper | quote }}
{{- end }}

toYaml 转 yaml

将数据转为yaml格式

spec:
  strategy:
{{ toYaml .Values.strategy | indent 4 }}

------------------------------------------------------------------
values.yaml数据:
strategy:
  type: RollingUpdate
  rollingUpdate:
    maxUnavailable: 0

------------------------------------------------------------------
渲染效果:
spec:
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 0

参考:https://chenyongjun.vip/articles/136

标签:templates,name,yaml,作用域,value,语法,Release,Values,Helm
来源: https://www.cnblogs.com/klvchen/p/13606311.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有