管道(pipeline)
也是将数据转换后插入到 YAML 文件中的一种强大方法。模板语言有一个强大的功能就是 管道(Pipeline) 概念,管道利用 UNIX 的概念,将一系列模板命令链接在一起,一起对外提供服务,换句话说,管道是按顺序完成多项工作的有效方式
它和linux的管道操作符|
原理是一样的:
假设我们要将deployment中的image参数做以下变换:
deployment.image
参数; 如果没设置,则使用nginx
镜像修改templates/deployment
的内容如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
labels:
app: nginx
spec:
replicas: {{ .Values.deployment.replicaCount }}
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: {{ default "nginx" .Values.deployment.image | upper | quote }} # 使用管道(pipeline)+相关的字符串函数来实现上述功能
修改values.yaml
内容:
deployment:
replicaCount: 3
name: my-deployment
image: # image未设置
执行helm template .
,预览生成的yaml:
结果符合上述的要求。