我知道“命名空间”不是正确的术语,但我很难找到在 json 模式文档或在线解释的这个用例。
我将 json 模式用于 helm 子图。不涉及 helm 细节,这意味着这个模式将用于验证一个看起来像这样的 yaml 文档(在子图表自己的项目中):
# values.yaml in mysubchart
propOne:
derp: 123
herp: abc
还有看起来像这样的 yaml 文档(在父图表项目中):
# values.yaml in mysubchart
mysubchart:
propOne:
derp: 123
herp: abc
所以我有两个文档要使用相同的架构进行验证。唯一的区别是其中一个文档有一个顶级字段,所有内容都嵌套在 ( mysubchart:
)
是否可以支持具有相同 json 架构的两个文档?Helm 将毫无问题地使用 helm lint 验证模式,但我也希望用户能够将他们的编辑器指向我发布的 json 模式,以验证父图表中的值 yamls 并获得自动完成等。
编辑
我试过这个,但它不验证任何一个 yaml 文档:
{
"$defs": {
"mychart": {
"$schema": "http://json-schema.org/schema#",
"title": "test",
"description": "test",
"type": "object",
"required": [
"propOne",
"propTwo"
],
"properties": {
"propOne": {
"description": "sdkfjlsdfjlksdjf",
"type": "string"
},
"propTwo": {
"description": "sdkfjlsdfjlksdjf",
"type": "string"
},
}
},
},
"oneOf": [
{
"$ref": "#/$defs/mychart"
},
{
"properties": {
"mychart": {
"$defs": "#/$defs/mychart"
}
}
}
]
}
看起来这适用于验证我的第一个 yaml 文档:
"anyOf": [
{
"$ref": "#/$defs/mychart"
}
]
但是添加第二个元素properties
来尝试验证第二个文档搞砸了,而且都没有正确验证
这很有效,我错过了配置的必需:mysubchart 部分