35 releases (19 breaking)
new 0.20.0 | Dec 4, 2023 |
---|---|
0.19.0 | Nov 3, 2023 |
0.18.0 | Aug 15, 2023 |
0.16.1 | Apr 14, 2023 |
0.5.0 | Mar 20, 2022 |
#130 in Debugging
1,150 downloads per month
140KB
2.5K
SLoC
kubert
Rust Kubernetes runtime helpers. Based on kube-rs
.
Features
clap
command-line interface support;- A basic admin server with
/ready
and/live
probe endpoints; - Optional Prometheus
metrics
integration; - A default Kubernetes client;
- Graceful shutdown on
SIGTERM
orSIGINT
signals; - An HTTPS server (for admission controllers and API extensions) with certificate reloading;
- A utility for maintaining an index derived from watching one or more Kubernetes resources types;
- A requeue channel that supports deferring/rescheduling updates (i.e. in case a write fails);
- And a
Runtime
type that ties it all together!
Why not kube-rs
?
The kube
crate is great! And in fact, kubert
builds on kube
's
client and runtime modules. This crate, however, captures some of the repeated
patterns we've encountered building controllers for
Linkerd. It doesn't try to hide
kube
--though it does reduce boilerplate around initializing watches and caches
(reflectors); and it expects you to schedule work via the tokio
runtime.
Examples
This repository includes a simple example application that
demonstrates how to use a kubert::Runtime
.
Other examples include:
Status
This crate is still fairly experimental, though it's based on production code from Linkerd; and we plan to use it in Linkerd moving forward.
Dependencies
~2–53MB
~813K SLoC