kube

Rust Kubernetes client and controller runtime

APACHE-2.0 License

Downloads
33.7M
Stars
2.7K
Committers
100

Bot releases are visible (Hide)

kube - 0.90.0 Latest Release

Published by github-actions[bot] 7 months ago

Highlights

kube::client::Body Improvements

  • Unit testing helpers #1444 + #1445,
  • Accuracy; size_hint and is_end_stream implemented in #1452 + internal cleanups #1453 and #1455

Dependency Cleanups

  • rustls to 0.23 in #1457
  • once_cell removed in #1447 (no longer needed)
  • futures feature prune in #1442
  • chrono features prune in #1448, and bump its min version pin in #1458

What's Changed

Added

Changed

Fixed

Full Changelog: https://github.com/kube-rs/kube/compare/0.89.0...0.90.0

kube - 0.89.0

Published by github-actions[bot] 7 months ago

Upgrading 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.

What's Changed

Added

Changed

Fixed

New Contributors

Full Changelog: https://github.com/kube-rs/kube/compare/0.88.1...0.89.0

kube - 0.88.1

Published by github-actions[bot] 9 months ago

What's Changed

This is a bug fix release for a deserialization issue introduced in 0.88.0.

Fixed

New Contributors

Full Changelog: https://github.com/kube-rs/kube/compare/0.88.0...0.88.1

kube - 0.88.0

Published by github-actions[bot] 9 months ago

Kubernetes v1_29 support via k8s-openapi 0.21

Please upgrade k8s-openapi along with kube to avoid conflicts.

What's Changed

Added

Changed

New Contributors

Full Changelog: https://github.com/kube-rs/kube/compare/0.87.2...0.88.0

kube - 0.87.2

Published by github-actions[bot] 10 months ago

What's Changed

Added

Changed

New Contributors

Full Changelog: https://github.com/kube-rs/kube/compare/0.87.1...0.87.2

kube - 0.87.1

Published by github-actions[bot] 12 months ago

Headlines

  • fixed a Controller issue with reconciliation requests disappearing when using concurrency #1324
  • improved Client with better exec auth behaviour #1320, timeout control #1314, and socks5 proxy handling #1311
  • small changes to an unstable streams feature #1304, and a a derive property that is now illegal with syn 2 #1307

Big thanks to everyone involved 🎃

What's Changed

Added

Changed

Fixed

Full Changelog: https://github.com/kube-rs/kube/compare/0.86.0...0.87.1

kube - 0.86.0

Published by github-actions[bot] about 1 year ago

Headlines

k8s-openapi 0.20 for Kubernetes v1_28

Please note upstream api removals.
As usual, upgrade k8s-openapi along with kube to avoid issues.

Default TLS stack changed to 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.

Controller Configuration

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.

Streaming Lists

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.

What's Changed

Added

Changed

Fixed

New Contributors

Full Changelog: https://github.com/kube-rs/kube/compare/0.85.0...0.86.0

kube - 0.85.0

Published by github-actions[bot] about 1 year ago

Kubernetes 1.27

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

What's Changed

Added

Changed

Fixed

New Contributors

Full Changelog: https://github.com/kube-rs/kube/compare/0.84.0...0.85.0

kube - 0.84.0

Published by github-actions[bot] over 1 year ago

Highlights

Stream Improvements

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.

OIDC Refresh

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.

What's Changed

Added

Changed

Fixed

New Contributors

Full Changelog: https://github.com/kube-rs/kube/compare/0.83.0...0.84.0

kube - 0.83.0

Published by github-actions[bot] over 1 year ago

What's Changed

Added

Changed

Fixed

New Contributors

Full Changelog: https://github.com/kube-rs/kube/compare/0.82.2...0.83.0

kube - 0.82.2

Published by github-actions[bot] over 1 year ago

Watcher Fixes

Two fixes to allow watcher::Config to function as intended.

What's Changed

Fixed

Full Changelog: https://github.com/kube-rs/kube/compare/0.82.1...0.82.2

kube - 0.82.1

Published by github-actions[bot] over 1 year ago

Bugfix Release

nullable is re-instated on Option types from CustomResource generated schemas, due to unintended errors removing it caused on Api::patch calls on None members that were not setting #[serde(skip_serializing_if = "Option::is_none")]. This only affected 0.81 and 0.82 from last week, and does not require user action regardless of where you are upgrading from.

This release also fixes a metadata_watcher triggering deserialization error from doing Api::list_metadata on an empty set.

What's Changed

Fixed

New Contributors

Full Changelog: https://github.com/kube-rs/kube/compare/0.82.0...0.82.1

kube - 0.82.0

Published by github-actions[bot] over 1 year ago

Dependency Updates

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

What's Changed

Changed

Full Changelog: https://github.com/kube-rs/kube/compare/0.81.0...0.82.0

kube - 0.81.0

Published by github-actions[bot] over 1 year ago

Highlights

List/Watch Changes

One big change is the splitting of ListParams into ListParams and WatchParams in #1162 and #1171. If you were using api.list directly, this should not affect you, but api.watch calls will need a replace of ListParams to WatchParams. Apart from the resulting field splitting, the two structs still have a mostly compatible api.

If you were passing ListParams to watcher or Controller, you can change this for a new watcher::Config with a mostly compatible interface:

-    let stream = watcher(api, ListParams::default());
+    let stream = watcher(api, watcher::Config::default());

The reason for this change has been to add support for specific version match strategies and has new builders on both ListParams and watcher::Config to control the strategy. Using the new VersionMatch::NotOlderThan can reduce strain on the apiserver for individual api.list calls. Watchers will benefit the most from this, and should consider using the semantic Any strategy (= NotOlderThan with version "0") on all relists by setting watcher::Config::any_semantic().

rustls

This release closes all our rustls issues as a consequence of the long standing IP address incompatibility (#153) having been resolved upstream. All rustls specific overrides (such as using the deprecated incluster_dns strategy for configuration #1184) have been removed as a result.

Controller streams

Multiple new runtime features have been added to be able to more precisely control the input streams used by Controller a starting step towards stream sharing (#1080) and as a way to reduce excess input events. Because these interfaces are likely to remain in flux for some time, these are only available under unstable feature flags.

What's Changed

Added

Changed

Fixed

New Contributors

Full Changelog: https://github.com/kube-rs/kube/compare/0.80.0...0.81.0

kube - 0.80.0

Published by github-actions[bot] over 1 year ago

Notes

The PartialObjectMeta struct has been changed to allow static dispatch through a new generic parameter. It comes with a new PartialObjectMetaExt trait to help construct it.

Early release for the above change to the new metadata api, plus a trigger for our currently broken docs.rs.

What's Changed

Changed

Fixed

Full Changelog: https://github.com/kube-rs/kube/compare/0.79.0...0.80.0

kube - 0.79.0

Published by github-actions[bot] over 1 year ago

Watch Improvements

A big feature this time around is the added support for the metadata api via #1137. This is a variant api that only returns the ObjectMeta and TypeMeta to reduce network load, and has a low-level watch analogue available at Api::watch_metadata. Most users will generally want an infinite watch stream rather than the low-level method, so kube::runtime::metadata_watcher has been added as a direct analogue of watcher via #1145. The dynamic_watcher example shows how to switch between the two to get up and running.

The watcher also emits warnings now when HTTP 403s are encountered from Kubernetes, as this usually indicates a non-transient misconfiguration that must be fixed on the administrator side with RBAC.

Finally, there is work in progress on shared streams via WatchStreamExt from #1131 under an unstable feature.

What's Changed

Added

Changed

Fixed

New Contributors

Full Changelog: https://github.com/kube-rs/kube/compare/0.78.0...0.79.0

kube - 0.78.0

Published by github-actions[bot] almost 2 years ago

Kubernetes Bump

This release brings in the new k8s-openapi release for 1.26 structs, and sets our MK8SV to 1.21.
Be sure to upgrade k8s-openapi and kube simultaneously to avoid multiple version errors:

cargo upgrade -p k8s-openapi -p kube -i

What's Changed

Added

Changed

Removed

Fixed

New Contributors

Full Changelog: https://github.com/kube-rs/kube/compare/0.77.0...0.78.0

kube - 0.77.0

Published by github-actions[bot] almost 2 years ago

Highlights

This release saw numerous improvements across various parts of the codebase with lots of help from external contributors. Look for improvements in error handling, client exec behaviour, dynamic object conversion, certificate handling, and last, but not least; lots of enhancements in the config module. Huge thanks to everyone who contributed!

Config Enhancements

Kubeconfigs relying on ExecConfig for auth should now work with a lot more cases (with improvements to script interactivity, cert passing, env-drop, and windows behaviour). We further aligned our Kubeconfig parsing with client-go's behaviour, and also exposed Kubeconfig::merge. Finally, we now pass Config::tls_server_name through to the Client, which has let us include a better rustls workaround for the long-standing ip issue (enabled by default).

What's Changed

Added

Changed

Removed

Fixed

New Contributors

Full Changelog: https://github.com/kube-rs/kube/compare/0.76.0...0.77.0

kube - 0.76.0

Published by github-actions[bot] almost 2 years ago

Highlights

#[derive(CustomResource)] now supports schemas with untagged enums

Expanding on our existing support for storing Rust's struct enums in CRDs, Kube will now try to convert #[serde(untagged)] enums as well. Note that if the same field is present in multiple untagged variants then they must all have the same shape.

Removed deprecated try_flatten_* functions

These have been deprecated since 0.72, and are replaced by the equivalent WatchStreamExt methods.

What's Changed

Added

Removed

Fixed

New Contributors

Full Changelog: https://github.com/kube-rs/kube/compare/0.75.0...0.76.0

kube - 0.75.0

Published by github-actions[bot] about 2 years ago

Highlights

Upgrade k8s-openapi to 0.16 for Kubernetes 1.25

The update to [email protected] makes this the first release with tentative Kubernetes 1.25 support.
While the new structs and apis now exist, we recommend holding off on using 1.25 until a deserialization bug in the apiserver is resolved upstream. See #997 / #1008 for details.

To upgrade, ensure you bump both kube and k8s-openapi:

cargo upgrade kube k8s-openapi

New/Old Config::incluster default to connect in cluster

Our previous default of connecting to the Kubernetes apiserver via kubernetes.default.svc has been reverted back to use the old environment variables after Kubernetes updated their position that the environment variables are not legacy. This does unfortunately regress on rustls support, so for those users we have included a Config::incluster_dns to work around the old rustls issue while it is open.

Controller error_policy extension

The error_policy fn now has access to the object that failed the reconciliation to ease metric creation / failure attribution. The following change is needed on the user side:

-fn error_policy(error: &Error, ctx: Arc<Data>) -> Action {
+fn error_policy(_obj: Arc<YourObject>, error: &Error, ctx: Arc<Data>) -> Action {

Polish / Subresources / Conversion

There are also a slew of ergonomics improvements, closing of gaps in subresources, adding initial support for ConversionReview, making Api::namespaced impossible to use for non-namepaced resources (a common pitfall), as well as many great fixes to the edge cases in portforwarding and finalizers. Many of these changes came from first time contributors. A huge thank you to everyone involved.

What's Changed

Added

Changed

Fixed

New Contributors

Full Changelog: https://github.com/kube-rs/kube-rs/compare/0.74.0...0.75.0

Package Rankings
Top 1.97% on Crates.io
Badges
Extracted from project README
Crates.io Rust 1.77 Tested against Kubernetes v1_26 and above Best Practices Discord chat