Rust Kubernetes client and controller runtime
v1_30
support via k8s-openapi
0.22Please upgrade k8s-openapi along with kube to avoid conflicts.
A more complete implementation that allows sharing watcher
streams between multiple Controller
s (for https://github.com/kube-rs/kube/issues/1080) has been added under the unstable-runtime
feature-flag in #1449 and #1483 by @mateiidavid. This represents the first usable implementation of shared streams (and replaces the older prototype part in #1470). While some changes are expected, you can check the shared_stream_controller example for a high-level overview.
k8s-openapi
to 0.22 and bump MK8SV to 1.25 by @clux in https://github.com/kube-rs/kube/pull/1485
StreamSubscribe
implementation by @clux in https://github.com/kube-rs/kube/pull/1470
uniqueItems
property from CRDs when Sets are used by @sbernauer in https://github.com/kube-rs/kube/pull/1484
Full Changelog: https://github.com/kube-rs/kube/compare/0.90.0...0.91.0
kube::client::Body
Improvementssize_hint
and is_end_stream
implemented in #1452 + internal cleanups #1453 and #1455rustls
to 0.23 in #1457once_cell
removed in #1447 (no longer needed)futures
feature prune in #1442chrono
features prune in #1448, and bump its min version pin in #1458Body::collect_bytes
for easier unit tests by @clux in https://github.com/kube-rs/kube/pull/1445
rustls
0.23 by @tottoto in https://github.com/kube-rs/kube/pull/1457
futures
feature by @tottoto in https://github.com/kube-rs/kube/pull/1442
Body::empty
for easier tests by @clux in https://github.com/kube-rs/kube/pull/1444
once_cell
Lazy with ordinary static by @tottoto in https://github.com/kube-rs/kube/pull/1447
chrono
feature clock
with now
by @tottoto in https://github.com/kube-rs/kube/pull/1448
http_body
trait method by @tottoto in https://github.com/kube-rs/kube/pull/1452
chrono
version by @clux in https://github.com/kube-rs/kube/pull/1458
Full Changelog: https://github.com/kube-rs/kube/compare/0.89.0...0.90.0
hyper
and http
to 1.0 and MSRV to 1.75.0
This release completes the hyper & http ecosystem upgrade #1351 via #1438. In particular, this change includes upgrades to http
, http-body
, tower-http
, hyper
, hyper-openssl
, hyper-rustls
, hyper-socks2
, hyper-timeout
, tame-oauth
, tokio-tungstenite
, tower-http
, rustls
, rustls-pemfile
, as well as adopting the new hyper_util
and http_body_util
to make the change.
While this change constitutes significant internal churn (and a new kube::client::Body
), our external api remains largely unchanged. Some minor changes are necessary for custom clients, and for integration testing using tower_mock
. See the controller-rs upgrade pr or the examples folder in this commit for details.
Client::get
and Client::list
by @clux in https://github.com/kube-rs/kube/pull/1375
1.75.0
by @clux in https://github.com/kube-rs/kube/pull/1408
reflector
to only request identifying metadata by @SOF3 in https://github.com/kube-rs/kube/pull/1393
jsonpath-rust
to 0.5.0 by @clux in https://github.com/kube-rs/kube/pull/1429
Kubeconfig
allow certificate_authority_data
not present in ExecAuthCluster
by @ljun20160606 in https://github.com/kube-rs/kube/pull/1432
Client::request_stream
by @XciD in https://github.com/kube-rs/kube/pull/1433
Full Changelog: https://github.com/kube-rs/kube/compare/0.88.1...0.89.0
This is a bug fix release for a deserialization issue introduced in 0.88.0.
ObjectList
by @flavio in https://github.com/kube-rs/kube/pull/1398
Full Changelog: https://github.com/kube-rs/kube/compare/0.88.0...0.88.1
v1_29
support via k8s-openapi
0.21Please upgrade k8s-openapi along with kube to avoid conflicts.
k8s-openapi
for Kubernetes v1_29
support by @clux in https://github.com/kube-rs/kube/pull/1394
Full Changelog: https://github.com/kube-rs/kube/compare/0.87.2...0.88.0
LogParams::since_time
by @clux in https://github.com/kube-rs/kube/pull/1342
jsonpath_lib
to jsonpath-rust
by @ilya-bobyr in https://github.com/kube-rs/kube/pull/1345
Full Changelog: https://github.com/kube-rs/kube/compare/0.87.1...0.87.2
Controller
issue with reconciliation requests disappearing when using concurrency
#1324Client
with better exec auth behaviour #1320, timeout control #1314, and socks5 proxy handling #1311syn
2 #1307Big thanks to everyone involved 🎃
socks5
proxy in Client
by @Razz4780 in https://github.com/kube-rs/kube/pull/1311
Controller::reconcile_on
and remove Err
input requirement by @clux in https://github.com/kube-rs/kube/pull/1304
base64
to 0.21
by @clux in https://github.com/kube-rs/kube/pull/1308
darling
and syn
and rename #[kube(struct)]
by @clux in https://github.com/kube-rs/kube/pull/1307
KUBERNETES_EXEC_INFO
environment variable passed to auth plugins by @Razz4780 in https://github.com/kube-rs/kube/pull/1320
Controller
: pending messages are stuck in the scheduled
map by @co42 in https://github.com/kube-rs/kube/pull/1324
Full Changelog: https://github.com/kube-rs/kube/compare/0.86.0...0.87.1
v1_28
Please note upstream api removals. As usual, upgrade k8s-openapi along with kube to avoid issues.
rustls
With last year's upstream changes from rustls (closing all our existing rustls issues - see https://github.com/kube-rs/kube/issues/1192), this is now the better choice for security, features, and ease of building. The previous default openssl stack can still be used with default-features = false
plus the openssl-tls
feature.
A controller Config
has been added to allow tweaking two behaviour parameters (debouncing in #1265 and concurrency limits in #1277) of the Controller
. Huge thanks to @aryan9600 for his work.
The sendInitialEvents
alpha feature is now supported, and is quickly testable in the pod_watcher example when using the feature gate. This will help optimise the memory profile of controllers when the feature becomes generally available. Amazing work by first time contributor @casualjim.
controller::Config
and debounce period to scheduler by @aryan9600 in https://github.com/kube-rs/kube/pull/1265
rustls-tls
by @clux in https://github.com/kube-rs/kube/pull/1261
core
: omit invalid resource version parameters when doing paged requests by @goenning in https://github.com/kube-rs/kube/pull/1281
Full Changelog: https://github.com/kube-rs/kube/compare/0.85.0...0.86.0
This release brings in the new k8s-openapi
release.
Be sure to upgrade k8s-openapi
and kube
simultaneously to avoid multiple version errors:
cargo upgrade -p k8s-openapi -p kube -i
WatchStreamExt::reflect
to allow chaining on a reflector by @clux in https://github.com/kube-rs/kube/pull/1252
dirs-next
dependency to cargo-team maintained home
crate by @utkarshgupta137 in https://github.com/kube-rs/kube/pull/1207
k8s-openapi
to 0.19.0
for v1_27
support by @clux in https://github.com/kube-rs/kube/pull/1271
watcher
: return NoResourceVersion
error if resource version is empty by @aryan9600 in https://github.com/kube-rs/kube/pull/1259
scheduler
message when preponing by @nightkr in https://github.com/kube-rs/kube/pull/1260
Full Changelog: https://github.com/kube-rs/kube/compare/0.84.0...0.85.0
On the runtime
side, the Controller
now delays reconciles until the main Store
is ready (via a new Store
helper from #1243). The stream selection for owned resources is more efficient (#1240), and the underlying watcher
streams now all paginate (#1249). There are also many new WatchStreamExt
helpers ( #1246 + #1228 + #1232) as a continued work towards the more customisable streams-api (#1080).
On the client-side; streaming logs are now easier to deal with as an AsyncBufRead
#1235.
Optional OIDC refreshable token support was introduced in #1229 under kube/oidc
for out-of-cluster Client
configuration. Previously, refresh support was limited to non-OIDC tokens from the GcpOuth
provider (kube/oauth
) or through arbitrary exec
calls / TokenFile
loading.
Predicate
trait to allow combination + fallbacks by @clux in https://github.com/kube-rs/kube/pull/1228
WatchStreamExt::default_backoff
shorthand by @clux in https://github.com/kube-rs/kube/pull/1232
PartialEq
on core
params structs by @danrspencer in https://github.com/kube-rs/kube/pull/1237
WatchStreamExt::modify()
to modify events by @aryan9600 in https://github.com/kube-rs/kube/pull/1246
watcher
by @clux in https://github.com/kube-rs/kube/pull/1249
Api::log_stream
to return AsyncBufRead
by @aryan9600 in https://github.com/kube-rs/kube/pull/1235
Controller::owns
use metadata_watcher
internally by @clux in https://github.com/kube-rs/kube/pull/1240
Full Changelog: https://github.com/kube-rs/kube/compare/0.83.0...0.84.0