3 个版本 (重大更新)
0.3.0 | 2024年4月21日 |
---|---|
0.2.0 | 2023年12月19日 |
0.1.0 | 2023年12月18日 |
#1363 in 网络编程
2MB
16K SLoC
k8s-pb
为kube-rs提供的Kubernetes protobuf绑定。WIP。目前还不能直接使用。
使用方法
此库目前不能从kube
中使用。目前可以将这些结构体视为在k8s-openapi
中找不到的Kubernetes结构体的参考位置。请参阅docs.rs/k8s-pb。
构建过程
代码生成过程分为3个步骤;
just protos
- 下载和修补protobufjust swagger
- 下载和转换openapi模式just codegen
- 结合信息和使用prost构建
通过此过程生成的k8s-pb crate作为结果,然后定期发布。
just protos
从上游版本获取固定版本的protobuf
- https://github.com/kubernetes/api/releases
- https://github.com/kubernetes/apimachinery/releases
- https://github.com/kubernetes/apiextensions-apiserver/releases
- https://github.com/kubernetes/kube-aggregator/releases
- https://github.com/kubernetes/metrics/releases
然后执行微调,为构建做准备。
just swagger
从上游版本获取固定版本的swagger openapi模式
然后应用所需的补丁,然后在转换模式之前将其转换为包含所需通用信息的更短的JSON文件。
此JSON文件通过所需的类型属性补充了protobuf,用于trait实现。
just codegen
运行main.rs,使用上述swagger
和protobuf
菜谱的输出。特别是;
- 使用 prost 通过
protoc
构建原型,并通过FileDescriptorSet
提供了Config::file_descriptor_set_path
。 - 通过 lib.rs 将转换后的 Swagger 结果 JSON 反序列化为一个
HashMap<String, Resource>
,其中字符串是一个 GVK 字符串。 - 我们遍历所有生成的模块并
- 通过
append_trait_impl
在内存中注入泛型 - 在最终确定之前使用
rustfmt
- 通过
- 从循环中看到的模块生成模块树
- 将实现的特性附加到 生成的 lib.rs