首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Helm configmap错误预期的弦

Helm configmap错误预期的弦
EN

Stack Overflow用户
提问于 2022-06-10 13:18:49
回答 2查看 1.7K关注 0票数 1

我有一个有多个模板的Helm图表。一个是configmap,它工作得很好。但是,当我想要添加启用的部分时,我将得到错误消息。

代码语言:javascript
复制
executing "base-helm-chart/templates/configmap.yaml" at <$config>: wrong type for value; expected string; got bool

这是我正在使用的文件:

代码语言:javascript
复制
{{- if .Values.configMap.enabled }}
apiVersion: v1
kind: ConfigMap
metadata:
  namespace: {{ .Release.Namespace }}
  name: {{include "chart.fullname" .}}
  labels: {{ include "chart.labels" . | nindent 4 }}
data:
{{- range $name, $config := .Values.configMap }}
  {{ $name }}: |
{{ tpl $config $ | indent 4 }}
  {{- end }}
  {{- end -}}

values.yaml

代码语言:javascript
复制
configMap:
  enabled: true
  config.json: |
    food = pizza
    drink = soda

如果用户想要添加values.yaml中的configmap,我希望用户启用/禁用

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-06-14 06:24:52

可以添加条件以跳过另一种类型的值,然后在tpl函数中传递字符串。

代码语言:javascript
复制
{{- range $name, $config := .Values.configMap -}}
{{ if typeOf $config | eq "string" }}
{{ $name }}: |
{{- tpl $config $ | nindent 12 }}
{{ end }}
{{ end }}
{{ end }}

如果还想在输出中打印另一个键值,则可以使用printprintfprintln或任何其他打印选项。

代码语言:javascript
复制
{{- range $name, $config := .Values.configMap -}}
{{ if typeOf $config | eq "string" }}
{{ $name }}: |
{{- tpl $config $ | nindent 12 }}
{{- else -}}
{{ printf "%v: %v" $name $config }}
{{ end }}
{{ end }}
{{ end }}
票数 1
EN

Stack Overflow用户

发布于 2022-06-10 13:50:19

如果用户想要从

中添加或不添加configmap,我希望用户启用/禁用它

这是否意味着默认情况下configMap是空的?如果是这样的话,您可以检查空值

代码语言:javascript
复制
{{- if .Values.configMap }}
apiVersion: v1
kind: ConfigMap
metadata:
  namespace: {{ .Release.Namespace }}
  name: {{include "chart.fullname" .}}
  labels: {{ include "chart.labels" . | nindent 4 }}
data:
{{- range $name, $config := .Values.configMap }}
  {{ $name }}: |
{{ tpl $config $ | indent 4 }}
  {{- end }}

{{- end -}}

values.yaml中,缺省值是一个空字典:

代码语言:javascript
复制
configMap: {}

这样,只有当用户填写configMap时,才会生成清单。

除了这种可选的激活之外,您似乎在对值的迭代中遇到了问题,因为它们的类型不同。

您可以使用简单得多的toYaml过滤器(参见here)

最终的结果可能是这样的:

代码语言:javascript
复制
{{- if .Values.configMap }}
apiVersion: v1
kind: ConfigMap
metadata:
  namespace: {{ .Release.Namespace }}
  name: {{include "chart.fullname" .}}
  labels: {{ include "chart.labels" . | nindent 4 }}
data:
{{- toYaml .Values.configMap | nindent 2 -}}
{{- end -}}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72574996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档