Expand description
§Kubernetes Manager
A comprehensive Rust library for managing Kubernetes resources.
This library provides a high-level, ergonomic API for common Kubernetes operations including deployments, services, secrets, and namespace management.
§Features
- Deployment Management: Create, update, rollback, and scale deployments
- Service Management: Manage Kubernetes Services with different types (ClusterIP, NodePort, LoadBalancer)
- Secret Management: Handle Docker registry secrets and generic secrets
- Namespace Operations: Create and manage namespaces
- Health Monitoring: Wait for deployments to be ready with detailed error reporting
- Builder Pattern: Ergonomic API for constructing resource specifications
§Quick Start
use lmrc_kubernetes::{Client, ClientConfig};
use lmrc_kubernetes::deployment::{DeploymentSpec, ContainerSpec};
use lmrc_kubernetes::config::DeploymentOptions;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Create a client
let config = ClientConfig::infer().await?;
let client = Client::new(config, "default").await?;
// Ensure namespace exists
client.namespaces().ensure("my-app").await?;
// Create a deployment
let container = ContainerSpec::new("app", "nginx:1.21")
.with_port(80)
.with_env("ENV", "production");
let deployment = DeploymentSpec::new("web-app")
.with_replicas(3)
.with_container(container);
let options = DeploymentOptions::new()
.timeout_secs(300)
.wait(true);
// Switch to the target namespace
let app_client = client.with_namespace("my-app");
app_client.deployments().apply(&deployment, &options).await?;
// Get deployment status
let status = app_client.deployments().status("web-app").await?;
println!("Ready: {}/{}", status.ready_replicas, status.replicas);
Ok(())
}§Configuration
The library supports multiple ways to configure Kubernetes access:
use lmrc_kubernetes::ClientConfig;
// Infer from environment (tries in-cluster, then KUBECONFIG, then ~/.kube/config)
let config = ClientConfig::infer().await?;
// Use a specific kubeconfig file
let config = ClientConfig::from_kubeconfig("/path/to/kubeconfig").await?;
// Use in-cluster configuration (when running inside a pod)
let config = ClientConfig::in_cluster()?;
// Customize field manager name
let config = ClientConfig::infer().await?
.with_field_manager("my-app");Re-exports§
pub use config::ClientConfig;pub use config::DeploymentOptions;pub use config::RollbackOptions;pub use error::Error;pub use error::Result;pub use deployment::ContainerSpec;pub use deployment::DeploymentManager;pub use deployment::DeploymentSpec;pub use deployment::DeploymentStatus;pub use deployment::DeploymentStrategy;pub use deployment::ExecProbe;pub use deployment::HttpGetProbe;pub use deployment::KeyToPath;pub use deployment::ProbeSpec;pub use deployment::ResourceRequirements;pub use deployment::TcpSocketProbe;pub use deployment::Volume;pub use deployment::VolumeMount;pub use deployment::VolumeSource;pub use service::ServiceManager;pub use service::ServiceSpec;pub use service::ServiceType;pub use secret::SecretManager;pub use namespace::NamespaceManager;pub use configmap::ConfigMapManager;pub use configmap::ConfigMapSpec;pub use ingress::IngressManager;pub use ingress::IngressRule;pub use ingress::IngressSpec;pub use ingress::IngressTLS;pub use ingress::PathType;pub use gateway::GatewayManager;pub use gateway::GatewaySpec;pub use gateway::HTTPRoute;pub use gateway::HTTPRouteRule;pub use gateway::Protocol;pub use networkpolicy::NetworkPolicyManager;pub use networkpolicy::NetworkPolicySpec;pub use networkpolicy::PolicyRule;pub use networkpolicy::PolicyType;pub use networkpolicy::PortProtocol;pub use job::JobManager;pub use job::JobSpec;pub use job::RestartPolicy;pub use cronjob::ConcurrencyPolicy;pub use cronjob::CronJobManager;pub use cronjob::CronJobSpec;pub use pvc::AccessMode;pub use pvc::PersistentVolumeClaimSpec;pub use pvc::PvcManager;pub use pvc::StorageClass;pub use hpa::HpaManager;pub use hpa::HpaSpec;pub use hpa::MetricTarget;pub use hpa::MetricType;pub use hpa::ScaleTargetRef;
Modules§
- config
- Configuration types for the Kubernetes manager.
- configmap
- ConfigMap management for Kubernetes.
- cronjob
- CronJob management for Kubernetes.
- deployment
- Deployment management for Kubernetes.
- error
- Error types for the Kubernetes manager library.
- gateway
- Gateway API management for Kubernetes.
- hpa
- HorizontalPodAutoscaler (HPA) management.
- ingress
- Ingress management for Kubernetes.
- job
- Job management for Kubernetes.
- namespace
- Namespace management for Kubernetes.
- networkpolicy
- NetworkPolicy management for Kubernetes.
- pvc
- PersistentVolumeClaim (PVC) management.
- secret
- Secret management for Kubernetes.
- service
- Service management for Kubernetes.
Structs§
- Client
- The main Kubernetes client for managing cluster resources.