Helm -如何通过values.yaml添加标签块



我有一个简单的舵图。我有一个labels:块需要在Deployment

中引用这是我的values.yaml

labels:
app: test-app
group: test-group
provider: test-provider

templates/deployment.yaml中,我需要添加上述整个labels块。所以我照做了;

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: {{ include "accountmasterdata.fullname" . }}
namespace: {{ .Values.namespace }}
labels:
{{ .Values.labels | nindent 4 }}
{{- include "accountmasterdata.labels" . | nindent 4 }} 

但是我得到以下错误

value类型错误;将字符串;get map[string]interface {}

有人能帮我两件事吗?

  1. 如何解决这个问题

  2. 在它说{{- include "accountmasterdata.labels" . | nindent 4 }}的那一行,我可以看到accountmasterdata.labels的值吗?如何重写这些呢?

谢谢!

在"变量"中包含映射的迭代。文档:

对于既包含键又包含值的数据结构,可以使用range来同时获取键和值。例如,我们可以循环遍历. values。收藏夹如下:

apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
data:
myvalue: "Hello World"
{{- range $key, $val := .Values.favorite }}
{{ $key }}: {{ $val | quote }}
{{- end }}

在你的模板中,你可以这样处理.Values.labels的值:

labels:
{{- range $name, $value := .Values.labels }}
{{ $name | quote }}: {{ $value | quote }}
{{- end -}}

在{{- include "accountmasterdata.labels". | indent 4}},在这里我可以看到accountmasterdata。标签值?如何重写这些呢?

你写的是模板吗?如果是,您在哪里定义了这些值?假设在您的templates/目录中存在一个包含如下内容的文件:

{{- define "accountmasterdata.labels" -}}
...
{{- end -}}

该块的内容将被插入到引用点。


最后,在你的模板中有:

namespace: {{ .Values.namespace }}

但是你可能想用.Release.Namespace代替:

namespace: {{ .Release.Namespace | quote }}

完成上述更改后,我最终得到:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: {{ include "accountmasterdata.fullname" . }}
namespace: {{ .Release.Namespace | quote }}
labels:
{{- range $name, $value := .Values.labels }}
{{ $name | quote }}: {{ $value | quote }}
{{- end -}}
{{- include "accountmasterdata.labels" . | nindent 4 }} 

最新更新