kubex is a Rust library that provides utilities for Kubernetes. It complements kube and k8s-openapi crates, making it easier to detect contexts and explore API resources.
Add the following dependency to your Cargo.toml.
[dependencies]
kubex = "0.3.0"An example that combines DiscoverClient with the helper functions for namespaces and kube contexts.
cargo run --example mainuse kubex::{determine_context, determine_namespace, discover::DiscoverClient};
use kube::Client;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let context = determine_context(&None)?;
println!("context={context}");
let namespace = determine_namespace(None, &context);
println!("namespace={namespace}");
let client = Client::try_default().await?;
let discover = DiscoverClient::new(client);
let resources = discover.list_api_resources().await?;
for resource in resources {
println!("{} {}", resource.group.as_deref().unwrap_or("").trim(), resource.name);
}
Ok(())
}This project is released under the MIT License.