Kubernetes openapi unmangler.
Generates rust structs from customresourcedefinitions
in your kubernetes cluster follwing the spec/status model, by using their embedded openapi schema.
⚠️ WARNING: not feature complete ⚠️
Requirements:
customresourcedefinition
with schemakube-derive
to provide api integration with kube
description
values in schema (--docs
)Grab a prebuilt musl/darwin binary from the latest release, or install from crates.io:
sh
cargo install kopium
sh
kopium prometheusrules.monitoring.coreos.com --docs > prometheusrule.rs
```rust use kube::CustomResource; use serde::{Serialize, Deserialize}; use std::collections::BTreeMap;
/// Specification of desired alerting rule definitions for Prometheus.
pub struct PrometheusRuleSpec {
/// Content of Prometheus rule file
#[serde(default, skipserializingif = "Option::is_none")]
pub groups: Option
/// RuleGroup is a list of sequentially evaluated recording and alerting rules. Note: PartialResponseStrategy is only used by ThanosRuler and will be ignored by Prometheus instances. Valid values for this field are 'warn' or 'abort'. More info: https://github.com/thanos-io/thanos/blob/main/docs/components/rule.md#partial-response
pub struct PrometheusRuleGroups {
#[serde(default, skipserializingif = "Option::isnone")]
pub interval: Option
/// Rule describes an alerting or recording rule See Prometheus documentation: alerting or recording rule
pub struct PrometheusRuleGroupsRules {
#[serde(default, skipserializingif = "Option::isnone")]
pub alert: Option
Simply add the generated file (e.g. output from above in prometheusrule.rs
) to your library, and import (at least) the special root type:
```rust use prometheusrule::PrometheusRule; use kube::{Api, Client, ResourceExt};
async fn main() -> Result<(), Box
Autocompletion for most shells available via kopium completions
:
sh
source <(kopium completions bash)
Generate a CRD, tell the test runner to try to use it.
sh
cargo run --bin kopium -- prometheusrules.monitoring.coreos.com > tests/gen.rs
echo "pub type CR = PrometheusRule;" >> tests/gen.rs
kubectl apply -f tests/pr.yaml # needs to contain a CR with name "gen"
cargo test --test runner -- --nocapture
test shortcuts available via just
in the justfile
.
Apache 2.0 licensed. See LICENSE for details.