This repository contains kube-rs compatible bindings for Kubernetes custom resources generated with kopium
Feel free to add your own CRD to the catalog!
[dependencies]
kube-custom-resources-rs = { version = "<version>", features = ["<features>"] }
Replace <version>
with the latest available release.
Each group of a Kubernetes custom resource has a corresponding Cargo feature in this crate. The group of a custom resource can be seen in the apiVersion
field of a resource, e.g.:
apiVersion: chaos-mesh.org/v1alpha1
kind: PodNetworkChaos
metadata:
...
In the above example, chaos-mesh.org
is the group and v1alpha1
is the version. Since Cargo imposes certain rules on how features can be named, .
, -
, and /
are all mapped to _
. Therefore, the feature that contains the custom resource from the example above is called chaos_mesh_org
and can be enabled like this:
[dependencies]
kube-custom-resources-rs = { version = "<version>", features = ["chaos_mesh_org"] }
Each version within a group has a corresponding module in that feature, e.g. there is a module called v1alpha1
in the feature chaos_mesh_org
.
Take a look at the docs to see all available features and the group/version/kinds they contain.
This crate uses a calendar based versioning scheme because resources in Kubernetes are versioned themselves.
Updates to all CRDs are fetched automatically and released on the first of each month if any changes were detected.
The generated Rust code can be used as a kube::Resource similar to this:
let api: Api<PodNetworkChaos> = Api::default_namespaced(client);
let resource = PodNetworkChaos::new("example", PodNetworkChaosSpec::default());
println!("doc: {:?}", issuer);
Take a look at the kube-rs documentation for more information.