3 个版本 (重大更新)

0.3.0 2024年4月21日
0.2.0 2023年12月19日
0.1.0 2023年12月18日

#1363 in 网络编程

Apache-2.0

2MB
16K SLoC

k8s-pb

Crates.io

kube-rs提供的Kubernetes protobuf绑定。WIP。目前还不能直接使用。

使用方法

此库目前不能从kube中使用。目前可以将这些结构体视为在k8s-openapi中找不到的Kubernetes结构体的参考位置。请参阅docs.rs/k8s-pb

构建过程

代码生成过程分为3个步骤;

  1. just protos - 下载和修补protobuf
  2. just swagger - 下载和转换openapi模式
  3. just codegen - 结合信息和使用prost构建

通过此过程生成的k8s-pb crate作为结果,然后定期发布。

just protos

上游版本获取固定版本的protobuf

然后执行微调,为构建做准备。

just swagger

上游版本获取固定版本的swagger openapi模式

然后应用所需的补丁,然后在转换模式之前将其转换为包含所需通用信息的更短的JSON文件

此JSON文件通过所需的类型属性补充了protobuf,用于trait实现。

just codegen

运行main.rs,使用上述swaggerprotobuf菜谱的输出。特别是;

  • 使用 prost 通过 protoc 构建原型,并通过 FileDescriptorSet 提供了 Config::file_descriptor_set_path
  • 通过 lib.rs 将转换后的 Swagger 结果 JSON 反序列化为一个 HashMap<String, Resource>,其中字符串是一个 GVK 字符串。
  • 我们遍历所有生成的模块并
    • 通过 append_trait_impl 在内存中注入泛型
    • 在最终确定之前使用 rustfmt
  • 从循环中看到的模块生成模块树
  • 将实现的特性附加到 生成的 lib.rs

构建依赖关系

依赖项