当前位置: 首页 > news >正文

k8s的包管理工具helm3--流程控制语句和变量(3)

helm3中的流程控制语句主要包括条件判断语句(if else)、作用域控制语句(with)、循环控制语句(range)。

一、helm3的流程控制语句

1. if/else语句

if/else语句用于条件判断,通过不同的条件设置完成不同的功能。

语法

{{- if 条件1 }}
....
{{- else if 条件2 }}
....
{{- else }}
....
{{- end }}

示例
创建values.yaml文件

[root@k8s-master m1]# cat chart5/values.yaml 
replics: 3
container_name: nginx
container_port: 80
ingress:enabled: true

创建templates/configmap.yaml文件

[root@k8s-master m1]# cat chart5/templates/configmap.yaml 
apiVersion: v1
kind: ConfigMap
metadata:name: {{ .Release.Name }}
data:{{- if .Values.ingress.enabled }}ingress: "正在配置ingress..."replicCount: {{ .Values.replics }}containerName: {{ .Values.container_name }}containerPort: {{ .Values.container_port }}{{- else }}ingress: "不配置ingress..."{{- end }}

部署chart

# Source: chart5/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:name: chart5
data:ingress: "正在配置ingress..."replicCount: 3containerName: nginxcontainerPort: 80

2.with语句

with语句用来改变当前的作用域,避免重复书写冗余的前缀

语法

{{- with 嵌套对象 }}  # 比如.Values.config就是嵌套对象
...
{{- end }}

在整个with语句的范围内,所有的嵌套对象都不需要再加相同的前缀。直接用.表示了之前的.Values.config对象。

示例
创建values.yaml文件

[root@k8s-master m1]# cat chart5/values.yaml 
config:database:username: "user01"password: "123456"port: 3306

创建templates/configmap.yaml文件

[root@k8s-master m1]# cat chart5/templates/configmap.yaml 
apiVersion: v1
kind: ConfigMap
metadata:name: {{ .Release.Name }}
data:{{- with .Values.config.database }}username: {{ .username }}   # .表示.Values.config.database对象password: {{ .password | b64enc}}port: {{ .port }}{{- end }}

部署chart

# Source: chart5/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:name: chart5
data:username: user01password: MTIzNDU2port: 3306

3.range语句

range语句循环遍历集合并输出,range遍历对象时,在range语句的作用域内,由于指定了对象,后续以.表示

语法

{{- range 要遍历的对象 }}
....
{{-end }}

示例
创建一个对象

[root@master m1]# cat chart1/values.yaml 
# 定义一个数组
people:- sex- age- height- hobby

创建一个yaml文件

apiVersion: v1
kind: ConfigMap
metadata:name: {{ .Release.Name }}
data:people: |-     # |- 表示后续为一个多行的字符串{{- range .Values.people }}- {{ . }}     # .表示values.yaml文件中的people对象,循环遍历people对象的内容,即sex,age...{{- end }}{{ range (list "aa" "bb" "cc") }}- {{ . }}      # .指列表,aa,bb,cc{{- end }}
~               

运行查看结果

# Source: chart1/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:name: chart1
data:people: |-- sex- age- height- hobby- aa- bb- cc

二、helm3中变量的使用

helm3中变量的使用包括**变量的定义和变量的使用。**通过在with语句和range语句中引入变量,可以简化编码内容。

1. 变量的定义

语法

其中变量的值可以是对象,列表,字典等。

$ 变量名 := 变量值

示例

在yml文件中分别给变量赋值字符串,列表和字典

data:{{- $variable1 := "aaa" }}{{- $variable2 := list "aaa" "bb" "cc" }}{{- $variable3 := dict "key1" "aa" "key2" "bb" }}value1: {{ $variable1 }}value2: {{ $variable2 | quote }}value3: {{ $variable3 | quote }}# 输出
data:value1: aaavalue2: "[aaa bb cc]"value3: "map[key1:aa key2:bb]"

2.变量解决对象作用域的问题

在with语句中,由于通过{{- with 对象 }}指定了对象的作用域,导致with语句的作用范围内,无法调用父级别的对象,通过引入变量可以解决该问题。在with语句外,将父级别的对象赋值给变量,然后再with语句内调用变量。

示例

在该yml文件中,.Release.Name为父级别的对象,无法直接在with语句中调用,会报错。通过name变量在with语句外进行赋值,然后再调用

[root@k8s-master m1]# cat chart5/values.yaml 
config:database:username: "user01"password: "123456"port: 3306[root@k8s-master m1]# cat chart5/templates/configmap.yaml 
apiVersion: v1
kind: ConfigMap
metadata:name: {{ .Release.Name }}
data:{{- $name := .Release.Name }}{{- with .Values.config.database }}username: {{ .username }}password: {{ .password }}port: {{ .port }}name: {{ $name }}{{- end }}

输出结果

# Source: chart5/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:name: chart5
data:username: user01password: 123456port: 3306name: chart5

3.变量在列表或元组中的使用

通过range循环遍历列表或元组,变量可以获取到列表中每个元素的索引和值

示例
values.yaml中定义一个列表

[root@k8s-master m1]# cat chart5/values.yaml 
database:- username- password- port

templates/configmap.yaml中通过index和database变量分别获取索引和值

[root@k8s-master m1]# cat chart5/templates/configmap.yaml 
apiVersion: v1
kind: ConfigMap
metadata:name: {{ .Release.Name }}
data:database: |-{{- range $index,$database := .Values.database }}{{ $index }}:{{ $database }}  {{- end }}

输出结果

# Source: chart5/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:name: chart5
data:database: |-0:username1:password2:port

4.变量在字典中的使用

通过range语句循环遍历字典,变量可以获取到字典中每个键值对的key和value值。

示例
values.yaml中定义一个字典database

[root@k8s-master m1]# cat chart5/values.yaml 
config:database:username: "user01"password: "123456"port: 3306

templates/configmap.yaml中通过key和database变量分别获取索引和值

[root@k8s-master m1]# vim chart5/templates/configmap.yaml 
apiVersion: v1
kind: ConfigMap
metadata:name: {{ .Release.Name }}
data:database: |-{{- range $key,$database := .Values.config.database }}{{ $key }}:{{ $database }}  {{- end }}

输出结果

# Source: chart5/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:name: chart5
data:database: |-password:123456port:3306username:user01
http://www.dtcms.com/a/551267.html

相关文章:

  • 电子商务网站建设与安全python编程快速上手
  • 合理的网站结构有没有做3d衣服模型网站
  • 金沙网站怎么做代理网站设计旅行社新闻内容
  • 长沙电商网站制作小说网站制作
  • 文山州住房和城乡建设网站珍岛信息技术有限公司做网站服务
  • 中国建设银行官网站贺岁产品wap网站制作方案
  • 进口彩妆做的好的网站生产 管理 软件 erp
  • 西安网站自然排名优化wordpress epix v1.2
  • ROS2系列 (10) : C++话题通信节点——发布者示例
  • 辽宁省建设厅网站怎样下载表格山东网站开发学校
  • 免费的建筑设计网站网络营销的名词解释是什么
  • 网站后台验证码不正确简单的wordpress模板下载
  • 安贞网站建设wordpress安装畅言
  • 青海网网站建设厦门医疗网站建设
  • 网站建设采取招标的方式微信网站定制
  • 在线设计装修户型图seo网络推广到底是做什么的
  • 网站log文件示例在线制作简历的网站
  • 唐山官方网站建设WordPress主题显示问题
  • 免费做app网站建设雄安免费网站建设哪家好
  • Win11本地账户改用Microsoft账户登录显示“发生了错误”
  • 中国能源建设集团招聘网站怎么安装免费的wordpress主题
  • 网站建设开发费用怎么设置网页版浏览器
  • 做网站开始要注意什么模板规格尺寸及价格
  • 网站建设技术支持中国建筑业协会
  • 偏移量解释
  • 知名的网站开发公司上海网站推广方法
  • 英山做网站多少钱宝贝做网站
  • 做签证网站期货交易软件定制开发
  • wordpress 电影下载站源码网站文章伪原创如何做
  • Linux Socket网络编程基础