kubernetes - Helm 库图表返回无法评估 []interface {} 类型中的字段值
问题描述
我正在关注 Helm 文档中的 Helm 库图表示例。
原始示例在库图中有一个通用的 ConfigMap,定义如下:
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name | printf "%s-%s" .Chart.Name }}
data: {}
{{- end -}}
{{- define "mylibchart.configmap" -}}
{{- include "mylibchart.util.merge" (append . "mylibchart.configmap.tpl") -}}
{{- end -}}
我正在制作一个图表,该图表要求我有一个 if 语句来启用或禁用特定资源。在此示例中,它是一个 configmap,但它可以是 HPA 或蓝/绿图表中的部署。
当我按如下方式添加 If 语句时:
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name | printf "%s-%s" .Chart.Name }}
data: {}
{{- end -}}
{{- define "mylibchart.configmap" -}}
{{- if .Values.configMapEnabled }}
{{- include "mylibchart.util.merge" (append . "mylibchart.configmap.tpl") -}}
{{- end -}}
{{- end -}}
where.Values.configMapEnabled
存在于 values.yaml 文件中,并设置为true
.
其他一切都与文档中的描述保持一致,即我使用一个简单的图表将库图表作为依赖项包含在内,然后运行:
helm install mydemo mychart/ --debug --dry-run
我收到以下错误:
helm.go:84: [debug] template: mychart/templates/configmap.yaml:1:4: executing "mychart/templates/configmap.yaml" at <include "mylibchart.configmap" (list . "mychart.configmap")>: error calling include: template: mychart/charts/mylibchart/templates/_configmap.yaml:9:14: executing "mylibchart.configmap" at <.Values.configMapEnabled>: can't evaluate field Values in type []interface {}
为什么不评估 Values 字段?这似乎是一个范围界定问题,但我无法解决它。
解决方案
我已经在自己的设置上对其进行了测试,看起来您没有在lib Chart
.
将其放在文件的开头:
{{- define "mylibchart.configmap.tpl" -}}
同样在您的情况下,您lib Chart
对此一无所知Values
-它是由app Chart
侧面定义的。此外,所有条件都应放在app Chart
not中lib Chart
。
架构:
parent/child chart - chart dependencies, with global switches on/off
请参阅部分:依赖项 -> 条件:(可选)。
在你的情况下:
$ helm install mydemo mychart/ --debug --dry-run --set configmap.enabled=false
推荐阅读
- javascript - 获取基于所选省份的城市列表存储在数据库中,在编辑方法中,在 laravel 7
- javascript - 从 application/ld+Json 脚本中获取“@type”的值
- r - 我可以在哪个 R 包中找到函数 expandDates
- excel - 在 Excel 中使用别名“MAX”调用 DLL 函数
- javascript - 将音频缓冲区放入可由音频元素播放的 blob 的最佳方法是什么?
- rxjs - 如果用户多次重新打开他的应用程序,NativeScript 应用程序中可能存在内存泄漏
- excel - MailMerge:从 Excel 到 Word 为每条记录保存单个文档,同时保持到源的链接
- java - 文件未正确保存
- python - 将列添加到更高维度
- sql-server - 在 SQL Management Studio 中为没有所有者权限的特定用户隐藏所有数据库,但只有一个数据库