有没有办法在jsonnet中导入.yaml
文件?
我发现jsonnet支持导入.json
并且还具有原生importstr()
功能但看起来不支持.yaml
?
我想这样做:
local foo = import "foo.yaml";
local bar = foo.bar;
答案 0 :(得分:3)
目前不是(2018年5月),https://github.com/google/jsonnet/issues/460处有一个未解决的问题,如果您正在使用Kubernetes清单(导入+按摩w / jsonnet)你可以使用包含jsonnet超集的https://github.com/ksonnet/kubecfg,包括std.parseYaml()
。
更新(2018-05-23):添加了
ksonnet
示例
在app文件夹中使用ksonnet
的嵌入式parseYaml
:
$ cat assets/foo.yaml
foo: value1
bar: value2
$ cat components/cm.jsonnet
local env = std.extVar("__ksonnet/environments");
local params = std.extVar("__ksonnet/params").components.cm;
local k = import "k.libsonnet";
local configMap = k.core.v1.configMap;
local parseYaml = std.native("parseYaml");
configMap.new(params.name, params.data) {
data+: parseYaml(importstr "../assets/foo.yaml")[0] {
foo: "my own value",
},
}
$ ks show default
---
apiVersion: v1
data:
bar: value2
foo: my own value
kind: ConfigMap
metadata:
name: cm