| Crates.io | kube-coordinate |
| lib.rs | kube-coordinate |
| version | 2.0.0-rc.0 |
| created_at | 2023-12-04 18:51:15.70265+00 |
| updated_at | 2025-11-20 18:42:32.751232+00 |
| description | Kubernetes leader election using the coordination.k8s.io API. |
| homepage | |
| repository | |
| max_upload_size | |
| id | 1057919 |
| size | 75,082 |
Kube Coordinate builds upon the kube-rs ecosystem, and implements a streamlined version of the client-go leader election system. This implementation uses only Lease objects for coordination.
// Spawn a leader elector task, and get a handle to the state channel.
let handle = LeaderElector::spawn(/* ... */);
let state_chan = handle.state();
// Before taking action as a leader, just check the channel to ensure
// the lease is currently held by this process.
if state_chan.borrow().is_leader() {
// Only perform leader actions if in leader state.
}
// Or, for a more sophisticated pattern, watch the state channel for changes,
// and use it to drive your application's state machine.
let state_stream = tokio_stream::wrappers::WatchStream::new(state_chan);
loop {
tokio::select! {
Some(state) = state_stream.next() => match state {
LeaderState::Leader => (), // Leader tasks.
_ => (), // Non-leader tasks.
},
}
}
cargo add kube-coordinate
This crate follows the semver major version of the kube crate.
In order to ensure that this create remains future proof, and compatible with future versions of K8s, this crate specifies a default feature k8s-latest which ensures that k8s-openapi/latest feature is enabled. Simply disable default features for this create, and specify an override for the feature as kube-coordinate/k8s-openapi/latest.
kube-coordinate is licensed under the terms of the MIT License or the Apache License 2.0, at your choosing.