在 jsonnet 中导入 YAML
Importing YAML in jsonnet
有没有办法在 jsonnet 中导入 .yaml
文件?
我发现 jsonnet 支持导入 .json
并且还有一个原生的 importstr()
函数,但看起来不支持 .yaml
?
我想做:
local foo = import "foo.yaml";
local bar = foo.bar;
目前没有 (May/2018),在 https://github.com/google/jsonnet/issues/460, if you're working with Kubernetes manifests (importing + massaging w/jsonnet) you could use https://github.com/ksonnet/kubecfg 有一个未解决的问题,其中包含 jsonnet 的超集,包括 std.parseYaml()
.
Update(2018-05-23): added ksonnet
example
使用 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
有没有办法在 jsonnet 中导入 .yaml
文件?
我发现 jsonnet 支持导入 .json
并且还有一个原生的 importstr()
函数,但看起来不支持 .yaml
?
我想做:
local foo = import "foo.yaml";
local bar = foo.bar;
目前没有 (May/2018),在 https://github.com/google/jsonnet/issues/460, if you're working with Kubernetes manifests (importing + massaging w/jsonnet) you could use https://github.com/ksonnet/kubecfg 有一个未解决的问题,其中包含 jsonnet 的超集,包括 std.parseYaml()
.
Update(2018-05-23): added
ksonnet
example
使用 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