[英]Helm - How to add a label block through 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 }}
但我收到以下错误
价值类型错误; 预期的字符串; 得到地图[字符串]接口{}
有人可以帮我做两件事:
我该如何解决这个问题
在它说{{- include "accountmasterdata.labels". | nindent 4 }}
{{- include "accountmasterdata.labels". | nindent 4 }}
{{- include "accountmasterdata.labels". | nindent 4 }}
,我在哪里可以看到accountmasterdata.labels
值? 以及如何覆盖那些?
谢谢!
“ Variables ”文档中介绍了迭代映射:
对于同时具有键和值的数据结构,我们可以使用范围来获取两者。 例如,我们可以像这样循环 through.Values.favorite:
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" 的行中。 | nindent 4 }},在哪里可以看到 accountmasterdata.labels 值? 以及如何覆盖那些?
这是您正在编写的模板吗? 如果是这样,您在哪里定义这些值? 大概在您的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 }}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.