#api-version #field #kubernetes

kube-custom-resources-rs

Kubernetes Custom Resource Bindings

11 stable releases

new 2024.5.1 May 1, 2024
2024.4.1 Apr 1, 2024
2024.3.1 Mar 1, 2024
2024.2.1 Feb 1, 2024
2023.11.11 Nov 11, 2023

#27 in #kubernetes

Download history 2/week @ 2024-01-03 5/week @ 2024-01-31 11/week @ 2024-02-21 140/week @ 2024-02-28 44/week @ 2024-03-06 13/week @ 2024-03-13 113/week @ 2024-03-27 53/week @ 2024-04-03 2/week @ 2024-04-10

168 downloads per month

0BSD license

87MB
842K SLoC

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.

Dependencies

~39MB
~636K SLoC