pipeline

管道(pipeline)也是将数据转换后插入到 YAML 文件中的一种强大方法。模板语言有一个强大的功能就是 管道(Pipeline) 概念,管道利用 UNIX 的概念,将一系列模板命令链接在一起,一起对外提供服务,换句话说,管道是按顺序完成多项工作的有效方式

它和linux的管道操作符|原理是一样的:

image-20211217194129127

image-20211217194142526

动手实验

假设我们要将deployment中的image参数做以下变换:

  1. 使用values.yaml中的deployment.image参数; 如果没设置,则使用nginx镜像
  2. 所有字符必须为大写
  3. 字符用双引号包裹

修改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:

image-20211219172925646

结果符合上述的要求。