我可以创建一个ConfigMap而不会出现kubectl create configmap settings --from-file settings.yaml
问题,但我不想手动创建它,而是作为helm install
的一部分。
所以,我创建了一个模板文件:
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Values.settingsConfigMap }}
data:
settings.yaml: |-
{{ .Files.Get "settings.yaml" | indent 4}}
但每当我运行helm install
时,我都会收到一个错误,说
io.k8s.api.core.v1.ConfigMap.data的无效类型:get"map";,预期的";字符串";
那么,在Helm从YAML文件加载内容的情况下,我能做些什么来创建这个ConfigMap呢?
更新
事实证明,上面提到的错误与缩进的一些问题有关。通过删除indent 4
,我设法更进一步,但现在它失败了,因为我的所有设置都被检测为unknown fields
,例如:
未知字段"客户";在io.k8s.api.core.v1.ConfigMap中,ValidationError(ConfigMap(:未知字段";deploy_name";在io.k8s.api.core.v1.ConfigMap中,ValidationError(ConfigMap(:未知字段";系统";在io.k8s.api.core.v1.ConfigMap 中
deploy_name
、system
和customers
是我的settings.yaml文件的顶级密钥。
更新中提到的错误是删除indent 4
的结果。通过删除它,Helm使用的YAML就被搞砸了,因此它不理解这些字段。
那么,当我有indent 4
的时候,为什么它失败了呢?原因是}
之前缺少空白。有了{{ .Files.Get "settings.yaml" | indent 4 }}
,一切都很好。