问题标签 [jsonnet]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
52 浏览

variables - 想在一行代码上从 split() 分配多个变量

给定以下数组:

我正在尝试编写 jsonnet 来拆分数组的每个元素以生成此对象(在 yaml 中表示):

我已经尝试了几次数组理解的迭代来做到这一点,请注意我是 jsonnet 的新手。最新的迭代是这样的:

$.sharedConfig.ports端口分配在哪里。问题是local proto, port ::= std.split(port_obj, '-');。我不确定这是有效的代码。解释器正在大便它,我找不到任何示例或文档表明这是有效的。

最终,如果它无效,那么我将不得不 split() 两次,但这将是不幸的。例如,这有效:

产生:

和 YAML:

...但我真的不喜欢两行变量赋值。我对此进行的测试越多,我就越相信我确定单行分配不可行是正确的。

谁能告诉我我错了,我真的很感激。

0 投票
1 回答
105 浏览

kubernetes - 大型集群配置管理:Kustomize 还是 Jsonnet?

目前我正在使用 Kubeflow。这是一个相当大的设置,大约有 30 种不同的部署。Kubeflow 团队的默认清单是使用标准的 Kustomize 工具为不同环境(如本地、云、测试等)提供补丁。

但是,我仍然对所有这些配置感到不知所措和有限。我可以为整个项目快速导航和操作变量的唯一方法是使用 IDE 中的搜索和/或替换功能(是的,我知道 Kustomize 可以在每个环境中执行变量,但我想为所有部署执行此操作)。这很糟糕,因为一旦更换它就不可逆转。另一个问题是许多文件夹不只是命名base或反向命名的文件夹太多base,因此很难找到一些原始字段。当我只想组合不同环境的几个部分时,我也很挣扎。例如,他们为 dex auth 提供了 3 个不同的环境,1 个使用电子邮件,1 个使用 GitHub,1 个使用 Google。我希望我的设置拥有所有 3 个,但现在我无法轻松地重用这些环境中的配置。我必须创建自己的环境并挖掘每个环境,看看它们在补丁中做了哪些更改。

我从未尝试在类似的集群上设置 Jsonnet 配置(可能使用 Tanka 之类的工具)。我看到一些大公司在使用 Jsonnet。我知道的两个是 Grafana(他们甚至创建了 Tanka)和 Databricks(他们创建了自己的 Jsonnet 编译器)。与目前最流行的选择 Kustomize 相比,在 Jsonnet 中进行 k8s 配置管理的优缺点是什么?使用 Jsonnet(可能使用 Tanka)学习和管理 k8s 配置是否值得?

0 投票
1 回答
235 浏览

jsonnet - 一次构建多个 jsonnet 文件

当前的 jsonnet 编译器一次只允许编译一个文件。有没有办法在一个命令中构建许多 jsonnet 文件,也许使用一个规则,比如所有 jsonnet 文件与文件夹中的模式 *.jsonnet 递归匹配?

0 投票
1 回答
41 浏览

jsonnet - 在(深)对象中查找并返回元素

我将编写“pseudo-python-jsonnet”代码来展示我想要实现的目标。我真的不知道如何在 jsonnet 中做类似的事情。

所以基本上我想在深层对象结构中搜索特定的子对象并将其返回,如果找不到则返回 null/None。

https://jsonnet.org/learning/tutorial.html有点好,但只显示“简单”的部分,如果你想用 jsonnet 做更复杂的事情,似乎你只能靠自己了。我是 jsonnet 的新手,它真的让我很头疼,所以我希望有人能帮助我。

0 投票
3 回答
162 浏览

jsonnet - 如何在 jsonnet 中进行正确的 for 循环?

每次我以为我终于理解了 jsonnet 时,它就来打我的脸...... -.-

我有以下内容:

我想遍历一个对象的前 2 个级别内的所有内容,并在那里应用一些函数......

基本上这是可行的......但取决于我是否使用std.objectFieldsAllor std.objectFields,隐藏字段在之后可见或完全丢失。

在不触及隐藏的“财产”的情况下,我将/如何做到这一点?我理解我的问题是,我在这里使用了对象理解并且(参考错误消息)那些“对象理解不能有隐藏字段”......但据我了解 jsonnet,一些东西理解是唯一的创建for循环的方法,对吗?

测试代码:

0 投票
2 回答
78 浏览

jsonnet - 如何替换 Jsonnet 字符串中的部分字符串 BEHIND 搜索条件?

我正在寻找一个等价物来std.strReplace(str, from, to)替换 Jsonnet 中的部分字符串。我需要from更像一个“模式”,比如s/key="[^"]*"/key="myNewValue"/g,所以实际上我正在寻找的是一个正则表达式搜索和替换。

编辑:好的,这可能会帮助我解决我的具体问题:

然而,“为先前定义的局部变量设置一个新值”(replaceNext = true;)将不起作用。

任何想法如何做到这一点?

0 投票
0 回答
16 浏览

jsonnet - 诗歌安装 wrapt(1.13.3) 时出现 EnvCommandError

在我的本地,诗歌安装工作正常,它创建了poetry.lock 文件。但是当我推送我的更改并运行 jenkins 管道时,它被安装 wrapt(1.13.3) 卡住并抛出 EnvCommandError..

处理 /home/centos/.cache/pypoetry/artifacts/49464616bsjskwk/jsonnet-0.18.0.tar.gz

为收集的包构建轮子:jsonnet 为 jsonnet (setup.py) 构建轮子:完成状态错误

0 投票
1 回答
30 浏览

json - 数组中的 Jsonnet 对象理解

我知道如何像这样在 Jsonnet 中进行数组理解,使用 for 循环,数组中的一个对象使用我定义的所有值循环:

输出:

我现在想对数组中的多个对象执行此操作,如下所示:

我需要做什么才能获得以下输出?所以三个对象中的每一个都得到三个值