Skip to content

Releases: kube-rs/kube

0.84.0

14 Jul 10:38
0.84.0
Compare
Choose a tag to compare

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

  • Make Controller::owns use metadata_watcher internally by @clux in #1240

New Contributors

Full Changelog: 0.83.0...0.84.0

0.83.0

05 Jun 20:32
0.83.0
Compare
Choose a tag to compare

What's Changed

Added

Changed

Fixed

New Contributors

Full Changelog: 0.82.2...0.83.0

0.82.2

19 Apr 11:43
0.82.2
Compare
Choose a tag to compare

Watcher Fixes

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

What's Changed

Fixed

  • runtime::watcher: only set rv if semantic is any by @goenning in #1204
  • watcher::Config: Derive Clone + Debug + PartialEq by @clux in #1206

Full Changelog: 0.82.1...0.82.2

0.82.1

14 Apr 08:16
0.82.1
Compare
Choose a tag to compare

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

  • Fix WatchParams bookmarks for watch_metadata by @clux in #1193
  • Fix ObjectList not deserializing items: null by @suryapandian in #1199
  • Revert "kube-derive: Disable option_nullable for CRD generation" by @Dav1dde in #1201

New Contributors

Full Changelog: 0.82.0...0.82.1

0.82.0

08 Apr 15:03
0.82.0
Compare
Choose a tag to compare

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: 0.81.0...0.82.0

0.81.0

07 Apr 12:46
0.81.0
Compare
Choose a tag to compare

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

  • Add predicates to allow filtering watcher streams by @clux in #911
  • Add Controller::owns_stream by @Dav1dde in #1173
  • Add Controller::for_stream + Controller::watches_stream by @clux in #1187

Changed

  • Split ListParams and WatchParams by @nabokihms in #1162
  • Make VersionMatch follow upstream + configure list semantics in watcher::Config by @clux in #1171
  • kube-derive: Disable option_nullable for CRD generation by @Dav1dde in #1079

Fixed

  • Run rustls CI against IP cluster address by @clux in #1183
  • Fix: tower buffer's worker closed unexpectedly by @divinerapier in #1185
  • Avoid special Config::incluster behavior for rustls by @clux in #1184

New Contributors

Full Changelog: 0.80.0...0.81.0

0.80.0

02 Mar 08:01
0.80.0
Compare
Choose a tag to compare

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

  • Genericize PartialObjectMeta over the underlying Resource by @clux in #1152

Fixed

  • Bypass nightly ICE in docs build by @clux in #1155

Full Changelog: 0.79.0...0.80.0

0.79.0

23 Feb 09:53
0.79.0
Compare
Choose a tag to compare

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

  • Config: make cluster/users/clusters optional by @goenning in #1120
  • Add better logging for watcher errors by @clux in #1134
  • kubeconfig: deserialize null vectors as default by @goenning in #1142

New Contributors

Full Changelog: 0.78.0...0.79.0

0.78.0

06 Jan 04:10
Compare
Choose a tag to compare

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

  • Remove deprecated Config::timeout by @clux in #1113

Fixed

  • fix shell exec exiting message loop when terminalSizeReceiver is dropped by @erebe in #1112

New Contributors

Full Changelog: 0.77.0...0.78.0

0.77.0

15 Dec 07:28
Compare
Choose a tag to compare

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

  • [windows] skip window creation on auth exec by @goenning in #1095
  • Add Config::tls_server_name and validate when using rustls by @clux in #1104

Removed

  • Remove deprecated ResourceExt::name by @clux in #1105

Fixed

  • Bump tracing dependency to 0.1.36 by @teozkr in #1070
  • Improve error message on azure auth not being supported by @goenning in #1082
  • exec: ensure certs always end with a new line by @goenning in #1096
  • fix: align kube-rs with client-go config parsing by @goenning in #1077
  • Return error from watcher when kinds do not support watch by @clux in #1101

New Contributors

Full Changelog: 0.76.0...0.77.0