将k8s-libsonnet重新打包为Python包
项目描述
k8s-libsonnet
此存储库包含k8s-libsonnet
Jsonnet Kubernetes库的工件。它是使用k8s-gen
生成的,位于https://github.com/jsonnet-libs/k8s。
用法
使用Tanka
# set up Tanka project, matching the Kubernetes version
$ tk init --k8s=1.21
有关更多信息,请参阅https://tanka.dev/tutorial/k-lib上的Tanka教程。
独立
$ jb install github.com/jsonnet-libs/k8s-libsonnet/1.30@main
然后在您的项目中导入它
local k = import "github.com/jsonnet-libs/k8s-libsonnet/1.30/main.libsonnet"
常见问题解答
它稳定吗?
我们不知道。它看起来工作得相当好,但这是非常年轻的代码,所以它还没有经过实战测试。
API旨在与ksonnet-gen
非常相似,但并非完全相同,以允许足够的空间进行重要的改进。
如果某些内容看起来与预期不符,请在此处打开问题https://github.com/jsonnet-libs/k8s
我应该使用它吗?
是的,请!我们需要尽可能多地获取反馈以改进它,所以这是您成为其中一员的机会!
为什么要有新的生成器?
位于https://github.com/ksonnet/ksonnet-gen的原始生成器不再维护,并且只提供最多到v1.14
版本的Kubernetes的工件。
我可以用它来替换ksonnet-lib吗?
是的,但是有一些不兼容性。其中大部分现在已被ksonnet-util
库覆盖,如果您打算支持这两个库,请在此处查看:ksonnet-util
。
已知的不兼容性
ksonnet-lib
有隐藏的对象,它们现在作为其他对象中的'Type'对象公开,例如core.v1.container.envType
,这些现在是第一类公民,例如此示例中的core.v1.envVar
。ksonnet-util
库解决了这个问题。new(name)
构造函数必须有name
参数,在ksonnet-lib
中并不总是这样。ksonnet-util
库解决了这个问题。ksonnet-lib
在.mixin.
中嵌入了许多函数,k8s-libsonnet
也支持这一点。然而,如果库维护者打算支持这两个库,也应该包括这个功能。- 此库不支持函数链式调用,例如
container.new(name).withEnv(env)
。事实证明,这种做法对 Jsonnet 编译器有很大的性能影响。因此,建议使用混合模式:container.new(name) + container.withEnv(env)
。
关于 kube-jsonnet/k 怎么样?
ksonnet-gen
软件已被 RedHat 和 Grafana Labs 在 https://github.com/kube-jsonnet/k 复刻并更新,这家公司也是这个项目的背后支持者。
在开发过程中,我们很快意识到整体代码复杂性、性能和正确性远未达到我们期望,因此决定从头开始重写它。
结果是 https://github.com/jsonnet-libs/k8s,并预期将尽快取代 https://github.com/ksonnet/ksonnet-gen 和 https://github.com/kube-jsonnet/k。
在哪里可以找到文档?
生成的文档可以在这里找到: https://jsonnet-libs.github.io/k8s-libsonnet/。
我发现了一个错误,我该在哪里报告?
太好了,让我们试着修复它,请通过 https://github.com/jsonnet-libs/k8s 报告问题。