【发布时间】:2020-08-05 17:49:26
【问题描述】:
我有一个“YAML”文件。我想在渲染 go-template 变量之前对其进行验证。例如:
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-configmap
data:
myvalue: "Hello World"
drink: {{ .Values.favorite.drink | default "tea" | quote }}
food: {{ .Values.favorite.food | upper | quote }}
典型的 YAML 解析器在这里不起作用,因为它会将 { 解析为地图的开头。
err := yaml.Unmarshal(data, &Content)
// Failed to parse the provided YAML: yaml: line 4: did not find expected key
我想知道是否有任何软件包可以帮助我做到这一点?我在网上搜索了一段时间,但没有运气。感谢您的帮助!
【问题讨论】:
-
我认为这不可能。您可以渲染它并 then 检查它是否是有效的 yaml。但在此之前,你不知道输入变量的某些值是否会使yaml失效。
-
首先将其作为模板执行,然后将其解析为 YAML - 尽管有人可能想知道为什么您首先要这样做。还要避免问诸如“我想知道是否有任何软件包可以帮助我做到这一点?”之类的问题。 - 这里有一个有效的问题,但这个问题(要求图书馆推荐)在 SO 上特别离题。
-
您可以使用
"missingkey=zero"渲染它并且不使用数据,这样表达式就会被删除,然后尝试加载它。
标签: go yaml kubernetes-helm unmarshalling go-templates