Releases: kube-rs/kube
0.84.0
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
- Add
Predicate
trait to allow combination + fallbacks by @clux in #1228 - Added refreshing OIDC ID token as an optional feature by @Razz4780 in #1229
- Add
WatchStreamExt::default_backoff
shorthand by @clux in #1232 - Derive
PartialEq
oncore
params structs by @danrspencer in #1237 - Track store readiness by @nightkr in #1243
- Add
WatchStreamExt::modify()
to modify events by @aryan9600 in #1246 - Add default pagination to
watcher
by @clux in #1249
Changed
- Bump MSRV from 1.63 to 1.64 by @clux in #1233
- Change
Api::log_stream
to returnAsyncBufRead
by @aryan9600 in #1235
Fixed
New Contributors
- @emilsivervik made their first contribution in #1230
- @Razz4780 made their first contribution in #1229
- @aryan9600 made their first contribution in #1235
Full Changelog: 0.83.0...0.84.0
0.83.0
What's Changed
Added
- Add
Controller::reconcile_on
by @co42 in #1163 - Add
predicates::resource_version
by @clux in #1221 - add
Duration
tokube-core
by @hawkw in #1224
Changed
- Introduce
GetParams
support by @mateiidavid in #1214
Fixed
- Swap
validator
forgarde
by @mateiidavid in #1212 - fix:
#[kube(crates(serde = "some_crate::serde"))]
was not working by @chubei in #1215
New Contributors
- @co42 made their first contribution in #1163
- @chubei made their first contribution in #1215
- @j13tw made their first contribution in #1216
- @hawkw made their first contribution in #1224
Full Changelog: 0.82.2...0.83.0
0.82.2
0.82.1
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 forwatch_metadata
by @clux in #1193 - Fix
ObjectList
not deserializingitems: 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
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
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 filteringwatcher
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
andWatchParams
by @nabokihms in #1162 - Make
VersionMatch
follow upstream + configure list semantics inwatcher::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 forrustls
by @clux in #1184
New Contributors
- @nabokihms made their first contribution in #1162
- @divinerapier made their first contribution in #1185
Full Changelog: 0.80.0...0.81.0
0.80.0
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: 0.79.0...0.80.0
0.79.0
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 403
s 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
- Client: expose
default_namespace()
by @jpmcb in #1123 - Add support for metadata API by @mateiidavid in #1137
- Runtime: Add
WatchStreamExt::subscribe
by @danrspencer in #1131 - Introduce support for persistent metadata watches by @mateiidavid in #1145
Changed
- Bump Rust MSRV to 1.63.0 by @mateiidavid in #1146
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
- @jpmcb made their first contribution in #1123
- @ianstanton made their first contribution in #1127
- @mateiidavid made their first contribution in #1137
Full Changelog: 0.78.0...0.79.0
0.78.0
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
- reflector: add helper function to the
Store
by @eliad-wiz in #1111
Changed
- Bump
[email protected]
and MK8SV by @clux in #1116
Removed
Fixed
New Contributors
- @eliad-wiz made their first contribution in #1111
- @erebe made their first contribution in #1112
Full Changelog: 0.77.0...0.78.0
0.77.0
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
- Add
DynamicObjects::try_parse
for typed object conversion by @jmintb in #1061 - Add
ExecConfig::drop_env
to filter host evars for auth providers by @aviramha in #1062 - Add support for terminal size when executing command inside a container by @armandpicard in #983
- add cmd-drop-env to AuthProviderConfig by @aviramha in #1074
- Check for client cert with exec by @rcanderson23 in #1089
- Change
Kubeconfig::merge
fn to public. by @goenning in #1100 - Fix interactivity in auth exec by @armandpicard in #1083
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
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
- @jmintb made their first contribution in #1061
- @aviramha made their first contribution in #1062
- @armandpicard made their first contribution in #983
- @suryapandian made their first contribution in #1081
- @rcanderson23 made their first contribution in #1089
Full Changelog: 0.76.0...0.77.0