【问题标题】:Importing YAML in jsonnet在 jsonnet 中导入 YAML
【发布时间】:2018-05-22 18:45:12
【问题描述】:

有没有办法在 jsonnet 中导入 .yaml 文件?

我发现jsonnet支持导入.json,也有原生的importstr()函数但是貌似不支持.yaml

我想做:

local foo = import "foo.yaml";
local bar = foo.bar;

【问题讨论】:

    标签: jsonnet


    【解决方案1】:

    目前没有(2018 年 5 月),https://github.com/google/jsonnet/issues/460 有一个未解决的问题,如果您正在使用 Kubernetes 清单(导入 + 使用 jsonnet 进行按摩),您可以使用https://github.com/ksonnet/kubecfg 包含 jsonnet 的超集,包括 std.parseYaml()

    更新(2018-05-23):添加ksonnet示例

    在应用文件夹中使用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
    

    【讨论】:

    • 我正在使用 ksonnet,但它还没有。
    • 我认为ksonnet 不是std.parseYaml,而是local kubecfg = import "kubecfg.libsonnet"; kubecfg.parseYaml(yaml_string) 之类的东西。
    • 因为ksonnetkubecfg 有共同的根源,正如@sbarzowski 所说(尽管我必须通过std.native() 直接使用它),我已经用一个例子更新了答案。
    • ksonnet 不再维护,GH repos 将被归档:blogs.vmware.com/cloudnative/2019/02/05/…
    猜你喜欢
    • 2022-12-22
    • 1970-01-01
    • 1970-01-01
    • 2022-11-21
    • 2022-08-04
    • 1970-01-01
    • 1970-01-01
    • 2016-10-05
    • 2017-02-14
    相关资源
    最近更新 更多