首先,挪走自带的values.yaml

$ helm create my-template
$ cd my-template
$ mv values.yaml  values.yaml.bak

然后,写一个自定义的值

$ cat > values.yaml <<EOF
myname: aming
EOF

调用上面自定义变量的方法为:

{{ .Values.myname}}

在configmap.yaml里调用

$ cp -r templates/ templates.bak ##先备份一下template目录
$ rm -rf templates/*  ##删除掉所有模板文件

cat > templates/configmap.yaml << EOF
apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Release.Name }}-configmap
data:
  myvalue: "Hello World"
  myname: {{ .Values.myname }}
EOF

查看渲染效果

$ helm template testrelease  .  ## 当前目录是在测试的chart里面,假定release名字为testrelease

Chart的values-1

但是,这个myname值是会被--set参数覆盖的,例如:

$ helm template testrelease . --set myname=aminglinux

Chart的values-2

继续修改values.yaml内容

$ cat > values.yaml <<EOF
myname: aming
service:
  type: ClusterIP
  port: 80
EOF

要调用上面的type,需要引用{{ Vlues.service.type}}

定义service.yaml

$ cat > templates/service.yaml <<EOF
apiVersion: v1
kind: Service
metadata:
  name: testserivce
  labels:
    app: myapp
spec:
  type: {{ .Values.service.type }}
  ports:
    - port: {{ .Values.service.port }}
      targetPort: http
      protocol: TCP
      name: http
EOF

查看渲染效果

$ helm template testrelease .

Chart的values-3