Skip to content

metio/kube-custom-resources-rs

Repository files navigation

Kubernetes Custom Resource Bindings for Rust Chat

This repository contains kube-rs compatible bindings for Kubernetes custom resources generated with kopium

Feel free to add your own CRD to the catalog!

Installation

[dependencies]
kube-custom-resources-rs = { version = "<version>", features = ["<features>"] }

Replace <version> with the latest available release.

Features

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.

Versioning

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.

Usage

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.