我有一个简单的舵图。我有一个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 {}
有人能帮我两件事吗?
如何解决这个问题
在它说
{{- 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 }}