Kubernetes——Helm(二)

我们已经知道了如何将信息传到模板中。 但是传入的信息并不能被修改。有时我们希望以一种更有用的方式来转换所提供的数据。

一、函数初体验

quote函数:把.Values对象中的字符串属性用引号引起来,然后放到模板中。

  
apiVersion: v1
kind: ConfigMap
metadata:
  name: {
  
  { .Release.Name }}-configmap
data:
  name: {
  
  { quote .Values.name1 }}

[root@master ~]# helm install --dry-run goodly-guppy ./mychart
NAME: goodly-guppy
LAST DEPLOYED: Wed Jul  3 15:40:03 2024
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
HOOKS:
MANIFEST:
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: goodly-guppy-configmap
data:
  name: "test1"

二、函数详解

语法是 :functionName arg1 arg2...

2.1 管道符

借鉴UNIX中的概念,管道符是将一系列的模板语言紧凑地将多个流式处理结果合并的工具。换句话说,管道符是按顺序完成一系列任务的方式。

示例:

apiVersion: v1
kind: ConfigMap
metadata:
  name: {
  
  { .Release.Name }}-configmap
data:
  myvalue: "Hello World"
  name: {
  
  { .Values.name1 | quote }}

在这个示例中,并不是调用quote 参数,而是倒置了命令。使用管道符(|)将参数“发送”给函数: .Values.name1 | quote 

使用管道符可以将很多函数链接在一起:

apiVersion: v1
kind: ConfigMap
metadata:
  name: {
  
  { .Release.Name }}-configmap
data:
  myvalue: "Hello World"
  name: {
  
  { .Values.name1 | upper | quote }}

倒置命令是模板中的常见做法。

模板执行结果

[root@master ~]# helm install --dry-run goodly-guppy ./mychart
NAME: goodly-guppy
LAST DEPLOYED: Wed Jul  3 15:46:19 2024
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
HOOKS:
MANIFEST:
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: goodly-guppy-configmap
data:
  name: "TEST1"

2.2  常用函数

repeat函数会返回给定参数特定的次数,重复次数

用两个参数的函数来阐述: repeat COUNT STRING

[root@master ~]# vim mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: {
  
  { .Release.Name }}-configmap
data:
  name: {
  
  { .Values.name1 | upper | repeat 2 | quote }}
~      

[root@master ~]# helm install --dry-run goodly-guppy ./mychart
NAME: goodly-guppy
LAST DEPLOYED: Wed Jul  3 15:56:22 2024
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
HOOKS:
MANIFEST:
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: goodly-guppy-configmap
data:
  name: "TEST1TEST1"                                                

default函数:允许你在模板中指定一个默认值,以防这个值被忽略。

drink: {
  
  { .Values.name1 | default "test" | quote }}

移除从value文件中移除name1的值

#name1: test1

修改configmap文件

apiVersion: v1
kind: ConfigMap
metadata:
  name: {
  
  { .Release.Name }}-configmap
data:
  name: {
  
  { .Values.name1 | default "test" | quote }}

执行结果

[root@master ~]# helm install --dry-run goodly-guppy ./mychart     
NAME: goodly-guppy
LAST DEPLOYED: Wed Jul  3 16:13:31 2024
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
HOOKS:
MANIFEST:
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: goodly-guppy-configmap
data:
  name: "test"

lookup函数:可以用于在运行的集群中 查找 资源。lookup函数简述为查找 apiVersion, kind, namespace,name -> 资源或者资源列表,类似与kubectl get

parameter type
apiVersion    string
kind string
namespace string
name string

name 和 namespace 都是选填的,且可以传空字符串("")作为空。

命令       lookup函数
kubectl get pod mypod -n mynamespace lookup "v1" "Pod" "mynamespace" "mypod"
kubectl get pods -n mynamespace lookup "v1" "Pod" "mynamespace" ""
kubectl get pods --all-namespaces lookup "v1" "Pod" "" ""
kubectl get namespace mynamespace lookup "v1" "Namespace" "" "mynamespace"
kubectl get namespaces lookup "v1" "Namespace" "" ""
apiVersion: v1
kind: ConfigMap
metadata:
  name: {
  
  { .Release.Name }}-configmap
data:
  name: {
  
  { range $namespace := (lookup "v1" "Namespace" "" "").items }}

lookup返回一个对象,它会返回一个字典。这个字典可以进一步被引导以获取特定值。

[root@master ~]# helm install --dry-run goodly-guppy ./mychart
NAME: goodly-guppy
LAST DEPLOYED: Wed Jul  3 16:38:18 2024
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
HOOKS:
MANIFEST:
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: goodly-guppy-configmap
data:
  name: map[]

Helm在helm template或者helm install|upgrade|delete|rollback --dry-run时, 不应该请求Kubernetes API服务。由此,lookup函数在该案例中会返回空列表(即字典)。

2.3 运算符

对于模板来说,运算符(eqneltgtandor等等) 都是作为函数来实现的。

函数 说明
eq

等于,两个参数如果相等返回true,否则返回false

eq .Arg1 .Arg2

ne

不相等,两个参数如果不相等返回true,相等返回false

ne .Arg1 .Arg2

lt

小于,第一个参数如果小于第二个参数返回true,否则返回false

lt .Arg1 .Arg2

le

小于等于,第一个参数小于等于第二个参数返回true,否则返回false

le .Arg1 .Arg2

gt

大于,第一个参数大于第二个参数返回true,否则返回false

gt .Arg1 .Arg2

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

叽叽喳喳323

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

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

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

打赏作者

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

抵扣说明:

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

余额充值