[ ] PR contains the label that identifies the area, one of: area:operator, area:chart
[ ] If the PR is targeting a Helm chart, add the chart label, e.g. chart:provider-postgresql
Release Notes
kubernetes-sigs/controller-runtime (sigs.k8s.io/controller-runtime)
### [`v0.15.1`](https://togithub.com/kubernetes-sigs/controller-runtime/releases/tag/v0.15.1)
[Compare Source](https://togithub.com/kubernetes-sigs/controller-runtime/compare/v0.15.0...v0.15.1)
#### What's Changed
- \[release-0.15] ✨Fix logs in unstructured client by [@k8s-infra-cherrypick-robot](https://togithub.com/k8s-infra-cherrypick-robot) in [https://github.com/kubernetes-sigs/controller-runtime/pull/2344](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2344)
- \[release-0.15] 🐛 fix unspecified KindsFor version by [@k8s-infra-cherrypick-robot](https://togithub.com/k8s-infra-cherrypick-robot) in [https://github.com/kubernetes-sigs/controller-runtime/pull/2347](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2347)
- \[release-0.15] 🐛 fakeClient.Status().Update(...) cannot recognize resource version conflicts by [@k8s-infra-cherrypick-robot](https://togithub.com/k8s-infra-cherrypick-robot) in [https://github.com/kubernetes-sigs/controller-runtime/pull/2372](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2372)
- \[release-0.15] 🐛 hasLabels and matchingLabels step on each other by [@k8s-infra-cherrypick-robot](https://togithub.com/k8s-infra-cherrypick-robot) in [https://github.com/kubernetes-sigs/controller-runtime/pull/2373](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2373)
- \[release-0.15] :bug: Fix Defaulting of the User Agent by [@alvaroaleman](https://togithub.com/alvaroaleman) in [https://github.com/kubernetes-sigs/controller-runtime/pull/2436](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2436)
**Full Changelog**: https://github.com/kubernetes-sigs/controller-runtime/compare/v0.15.0...v0.15.1
### [`v0.15.0`](https://togithub.com/kubernetes-sigs/controller-runtime/releases/tag/v0.15.0)
[Compare Source](https://togithub.com/kubernetes-sigs/controller-runtime/compare/v0.14.6...v0.15.0)
### Controller Runtime v0.15
> *A note from the maintainers*
>
> The following release is probably the largest in the history of the project. Controller Runtime is a foundational piece for almost all controllers and operators and we're aware that breaking changes are never an ask for our users, especially while running production services.
>
> We take breaking changes very seriously and carefully reviewed each one of these changes to improve the codebase, user experience, and future maintainability of the project.
>
> The v0.15 release is a stepping stone towards maturity.
>
> As always, please reach out in Slack in #controller-runtime.
## Changes since v0.14.5
#### :warning: Breaking Changes
- Make `*http.Client` configurable and use/share the same client by default ([#2122](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2122))
- When using the default Manager configuration, no immediate changes are needed.
- `client/apiutil.NewDynamicRESTMapper` signature has changed and now requires an `*http.Client` as parameter.
- `cluster.Cluster` interface requires `GetHTTPClient()` method which must return an already configured, non-nil, `*http.Client` for the Cluster. When using `cluster.New` to create Clusters, the client is created internally if not specified as an `Options` field.
- `cluster.Options.MapperProvider` field now requires a `*rest.Config` and `*http.Client`.
- Deprecate Component Configuration `config/v1alpha1` types ([#2149](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2149), [#2200](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2200))
- The Component Configuration package has been unmaintained for over a year and is no longer actively developed. There are (currently) no plans to revive the package, or provide an alternative.
- Users should migrate to a custom implementation that sets `Manager.Options` directly.
- 👉 Feedback requested: removal of the deprecated types and code is tracked in [#895](https://togithub.com/kubernetes-sigs/controller-runtime/issues/895).
- Remove dependency injection functions ([#2134](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2134), [#2120](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2120))
- The package `pkg/inject` has been removed, this package contained long deprecated injection functions (like `InjectScheme`, `InjectLogger`, `InjectConfig`, `InjectClient`, `InjectCache`, etc.).
- The runtime injection functionality has been deprecated since Controller Runtime 0.10; all of the above fields can be passed from the `Manager` to structs or interfaces that need them.
- Improve `builder` package capabilities and general UX ([#2135](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2135))
- `builder.Builder.Watches` signature has changed, it now takes a `client.Object` instead of a `source.Source` as first argument.
- For `source.Source`, use `WatchesRawSource`.
- `builder.Builder.WatchesMetadata` has been added to simplify watching `PartialObjectMetadata` objects.
- Refactor cache.Options, deprecate MultiNamespacedCacheBuilder ([#2157](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2157), [#2166](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2166))
- `cache.Options.Namespace` has been removed in favor of `cache.Options.Namespaces`, a slice.
- `cache.Options.Resync` has been renamed to `SyncPeriod`.
- `cache.Options.DefaultSelector` has been removed and split in two fields:
- `cache.Options.DefaultLabelSelector`
- `cache.Options.DefaultFieldSelector`
- `cache.Options.DefaultTransform` was added to provide a global transform function.
- `cache.Options.UnsafeDisableDeepCopy` was added to provide a global toggle to disable DeepCopy of the objects from the cache before returning them to clients.
- The following `[..]ByObject` field have been refactored:
- `cache.Options.SelectorsByObject` has been removed, use `cache.Options.ByObject[Object].Field` and `cache.Options.ByObject[Object].Label`
- `cache.Options.UnsafeDisableDeepCopyByObject` has been removed, use `cache.Options.ByObject[Object].UnsafeDisableDeepCopy`.
- `cache.Options.TransformByObject` has been removed, use `cache.Options.ByObject[Object].Transform`.
- `cache.ObjectAll` has been removed. This type was previously used to set selectors or transformation functions for every object, use the newly introduced default global options instead.
- Add context to EventHandler(s) ([#2139](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2139))
- `handler.EventHandler` and `handler.Funcs` interfaces require `context.Context` as the first parameter for every method.
- `handler.MapFunc` signature has changed and now requires a `context.Context`.
- Add client.{GroupVersionKindFor, IsObjectNamespaced} ([#2136](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2136))
- The `client.Client` interface now requires and exposes these helper functions:
- `GroupVersionKindFor(Object)` which returns the `schema.GroupVersionKind` for the object.
- `IsObjectNamespaced(Object)` which returns `true` if the object's GroupVersionKind is namespaced, or `false` for global ones.
- Remove DelegatedClient, move all related options in `client.New` ([#2150](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2150))
- `client.NewDelegatingClient` constructor and `client.NewDelegatingClientInput` struct have been removed.
- The DelegatingClient created a Client backed by a cache, use `client.New` and set `client.Options.Cache` to customize the client's caching behavior.
- `cluster.NewClientFunc` has been moved to `client.NewClientFunc`.
- `cluster.ClientOptions` has been removed.
- `cluster.DefaultNewClient` has been removed.
- `cluster.ClientBuilderWithOptions` has been removed.
- Expose Manager.Cache/Client options, deprecate older options ([#2199](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2199), [#2177](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2177))
- `manager.Options.Cache` is now the preferred way to customize the cache options for the manager.
- Users can also keep using `manager.Options.NewCache`, which has now been marked as a low level primitive.
- `manager.Options.Client` is now the preferred way to customize the client options for the manager.
- Users can also keep using `manager.Options.NewClient`, which has now been marked as a low level primitive.
- `manager.Options.SyncPeriod` has been deprecated in favor of `manager.Options.Cache.SyncPeriod`.
- `manager.Options.Namespace` has been deprecated in favor of `manager.Options.Cache.Namespaces`.
- `manager.Options.DryRunClient` has been deprecated in favor of `manager.Options.Client.DryRun`.
- `manager.Options.ClientDisableCacheFor` has been deprecated in favor of `manager.Options.Client.Cache.DisableCacheFor`.
- The following webhook server options have been deprecated, use `manager.WebhookServer` instead.
- `manager.Options.Port`
- `manager.Options.Host`
- `manager.Options.CertDir`
- `manager.Options.TLSOpts`
- Remove `cache.BuilderWithOptions` ([#2300](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2300))
- Add constructors for `webhook/conversion`, remove `webhook/admission.GetDecoder()` ([#2144](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2144))
- There are two set of changes related to the webhooks and how they're exposed. For users using the Manager, there should be minimal to no required changes.
- `webhook/admission/Webhook.GetDecoder()` method has been removed, it was unused before and relied on runtime dependency injection.
- `webhook/conversion.Webhook` struct has been un-exported. Users should use `webhook/conversion.NewWebhookHandler` instead.
- `pkg/webhook/admission`:
- Use `Result.Message` instead of `Result.Reason` ([#1539](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1539))
- `Validator` and `CustomValidator` interfaces have been modified to allow returning warnings ([#2014](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2014))
- Testing: Fake client status handling ([#2259](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2259))
- Added a new `WithStatusSubresource` option and pre-populating it with
all in-tree resources that have a status subresource
- `Update` and `Patch` methods now don't change the status for any such
resource anymore
- The status clients `Update` and `Patch` methods now only change the status
for any such resource
- Remove high cardinality metrics ([#2217](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2217), [#2298](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2298))
- `rest_client_request_latency_seconds`
- `rest_client_request_duration_seconds`
- `rest_client_request_size_bytes`
- `rest_client_response_size_bytes`
- Allow passing a custom webhook server ([#2293](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2293), [#2329](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2329))
- The `webhook.Server` struct is now an interface
- `webhook.NewServer` can be used to pass in and customize the default server
- Flatten fields in controller.Options ([#2307](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2307))
- Update fake client deletionTimestamp behavior ([#2316](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2316))
- The fake client will panic if initialized with an object that has a DeletionTimestamp and no finalizer
- The fake client will silently ignore a DeletionTimestamp on an object in a Create request, matching the behavior of the kube-apiserver
- Unexport delegating logger, remove async init ([#2317](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2317))
- `log.DelegatingLogSink` has been unexported, this logger should never be used on its own, and it's only meant to be used within controller-runtime initialization process.
- Previously, when the `pkg/log` package was imported, there was an `init` function that spawned a goroutine, which set a null logger after 30 seconds. Now this logic has been removed, and instead incorporated into the delegating logger private implementation.
- Change webhook request received / response written logs to log level 4 ([#2334](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2334))
- Use and offer a single dynamic lazy RESTMapper ([#2116](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2116), [#2296](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2296))
- The following options have been removed: `WithCustomMapper`, `WithExperimentalLazyMapper`, `WithLazyDiscovery`, `WithLimiter`.
- The `DynamicRESTMapperOption` type has been removed.
#### :sparkles: New Features
- Add cross-version compatibility with client-go 1.27 ([#2223](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2223))
- Introduce pprof server to manager ([#1943](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1943))
- To enable, use `Manager.Options.PprofBindAddress`.
- Added interceptor client to intercept calls to a client ([#2248](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2248) [#2306](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2306))
- Add `reconcile.TerminalError(...)` ([#2325](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2325))
- By wrapping an error with the above package-level function, the controller won't retry the request again in an exponential backoff loop.
- The error is logged, and the `controller_runtime_terminal_reconcile_errors_total` metric is incremented.
#### :bug: Bug Fixes
- Use correct context to cancel "list and watch" & wait for all informers to complete ([#2121](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2121))
- Client: use passed in Cache.DisableFor option ([#2303](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2303))
- Fix race condition in channel source ([#2286](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2286))
- ForceOwnership should work with subresources ([#2257](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2257))
- Fix error string in CacheReader.List ([#2256](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2256))
- Fix a bug in multinamespaced cache implementation ([#2252](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2252))
- Allow lazy restmapper to work with CRDs created at runtime ([#2208](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2208))
- Set DeleteStateUnknown in DeleteEvent when obj is DeletedFinalStateUnknown ([#2212](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2212))
- Allow to set GracefulShutdownTimeout to -1, disabling timeouts ([#2169](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2169))
- pkg/certwatcher: Start should retry for 10s when adding files ([#2160](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2160))
- Don't share error concurrently in test ([#2158](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2158))
#### :seedling: Others
- Improve unstructured serialisation ([#2147](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2147))
- Handle TLSOpts.GetCertificate in webhook ([#2291](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2291))
- Kind source should expose type information on timeout ([#2290](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2290))
- Fakeclient: Add support for evictions ([#2305](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2305))
- envtest: set default webhook options for polling ([#2289](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2289))
- Add client.InNamespace("xyz").AsSelector() ([#2282](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2282))
- Update golanci-lint script ([#2151](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2151))
- Preserve unstructured object GVKs in cache.Options.ByObject ([#2246](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2246))
- Don't call defaultOpts for MultiNamespaceCache twice ([#2234](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2234))
- GVKForObject should handle multiple GVKs in Scheme gracefully ([#2192](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2192))
- verify.sh: verify generate & modules (in CI) ([#2186](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2186))
- code clean for pkg/envtest/server.go ([#2180](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2180))
- Return an error if no httpClient is provided for `NewDynamicRESTMapper` ([#2178](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2178))
- Use runtime.Unstructured interface instead of Unstructured struct ([#2168](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2168))
- Return an error if no httpClient is provided ([#2164](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2164))
- Return the error from rest.HTTPClientFor instead of hiding it ([#2161](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2161))
- fix default value for cfg.Burst ([#2142](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2142))
- Add more linters ([#2133](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2133))
- Remove pkg/patterns ([#2132](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2132))
- Further cleanup internal/informers ([#2130](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2130))
- Simplify cache.objectTypeForListObject ([#2131](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2131))
- Refactor internal cache/informers map impl ([#2103](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2103))
- client/cache/client_cache.go should be called resources ([#2111](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2111))
- Remove reviewers which are also approvers ([#2109](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2109))
- Use HTTPClient to create the API Reader ([#2163](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2163))
- Update SECURITY_CONTACTS and maintainer list ([#2318](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2318))
- Update builtin webhook paths ([#2319](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2319))
- Make metrics and health probe servers be Runnables ([#2275](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2275))
- Revert: move health probes to runnable ([#2321](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2321))
- Fix comment on MultiNamespaceCache ([#2323](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2323))
- Cleanup webhook logging ([#2326](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2326))
- Add certwatcher callback ([#2301](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2301))
- Fix a bug in multinamespaced cache implementation ([#2288](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2288))
#### :seedling: Dependencies
- Bump Go to 1.20 ([#2279](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2279))
- Bump github.com/go-logr/logr from v1.2.3 to v1.2.4 ([#2262](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2262))
- Bump github.com/go-logr/zapr from v1.2.3 to v1.2.4 ([#2320](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2320))
- Bump github.com/onsi/ginkgo/v2 from v2.6.1 to v2.9.5 ([#2123](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2123) [#2155](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2155) [#2194](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2194) [#2205](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2205) [#2224](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2224) [#2233](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2233) [#2251](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2251) [#2311](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2311) [#2328](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2328))
- Bump github.com/onsi/gomega from v1.24.1 to v1.27.7 ([#2106](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2106) [#2137](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2137) [#2156](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2156) [#2206](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2206) [#2227](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2227) [#2232](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2232) [#2260](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2260) [#2340](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2340))
- Bump github.com/prometheus/client_golang from v1.14.0 to v1.15.1 ([#2280](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2280) [#2310](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2310))
- Bump github.com/prometheus/client_model from v0.3.0 to v0.4.0 ([#2312](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2312))
- Bump go.uber.org/goleak from v1.2.0 to v1.2.1 ([#2195](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2195))
- Bump golang.org/x/sys from v0.3.0 to v0.8.0 ([#2124](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2124) [#2225](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2225) [#2270](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2270) [#2309](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2309))
- Bump k8s.io dependencies to 0.27.2 ([#2145](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2145) [#2330](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2330) [#2333](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2333))
- Bump k8s.io/klog/v2 from v2.80.1 to v2.90.1 ([#2138](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2138) [#2226](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2226))
- Bump sigs.k8s.io/controller-tools to v0.11.3 and apidiff to v0.5.0 ([#2187](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2187))
- Use Go 1.19 in golangci-lint action ([#2272](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2272))
- Bump golangci-lint to v1.52.1 ([#2188](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2188) [#2284](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2284))
- Bump kubebuilder-release-tools to v0.3.0 ([#2126](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2126))
:book: Additionally, there have been 4 contributions to our documentation and book. ([#2203](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2203), [#2201](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2201), [#2162](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2162), [#2170](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2170))
*Thanks to all our contributors!* 😊
### [`v0.14.6`](https://togithub.com/kubernetes-sigs/controller-runtime/releases/tag/v0.14.6)
[Compare Source](https://togithub.com/kubernetes-sigs/controller-runtime/compare/v0.14.5...v0.14.6)
#### What's Changed
- 🐛 Preserve unstructured object GVKs when using \*ByObject cache options by [@joelanford](https://togithub.com/joelanford) in [https://github.com/kubernetes-sigs/controller-runtime/pull/2249](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2249)
**Full Changelog**: https://github.com/kubernetes-sigs/controller-runtime/compare/v0.14.5...v0.14.6
### [`v0.14.5`](https://togithub.com/kubernetes-sigs/controller-runtime/releases/tag/v0.14.5)
[Compare Source](https://togithub.com/kubernetes-sigs/controller-runtime/compare/v0.14.4...v0.14.5)
#### What's Changed
- 🐛 Allow to set GracefulShutdownTimeout to -1, disabling timeouts in [https://github.com/kubernetes-sigs/controller-runtime/pull/2198](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2198)
- 🌱 GVKForObject should handle multiple GVKs in Scheme gracefully in [https://github.com/kubernetes-sigs/controller-runtime/pull/2202](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2202)
- ✨ Add rest client request duration and size metrics in [https://github.com/kubernetes-sigs/controller-runtime/pull/2218](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2218)
- 🐛 Allow lazy restmapper to work with CRDs created at runtime in [https://github.com/kubernetes-sigs/controller-runtime/pull/2219](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2219)
**Full Changelog**: https://github.com/kubernetes-sigs/controller-runtime/compare/v0.14.4...v0.14.5
### [`v0.14.4`](https://togithub.com/kubernetes-sigs/controller-runtime/releases/tag/v0.14.4)
[Compare Source](https://togithub.com/kubernetes-sigs/controller-runtime/compare/v0.14.3...v0.14.4)
#### What's Changed
- ✨ Provide a truly lazy restmapper by [@k8s-infra-cherrypick-robot](https://togithub.com/k8s-infra-cherrypick-robot) in [https://github.com/kubernetes-sigs/controller-runtime/pull/2179](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2179)
**Full Changelog**: https://github.com/kubernetes-sigs/controller-runtime/compare/v0.14.3...v0.14.4
### [`v0.14.3`](https://togithub.com/kubernetes-sigs/controller-runtime/releases/tag/v0.14.3)
[Compare Source](https://togithub.com/kubernetes-sigs/controller-runtime/compare/v0.14.2...v0.14.3)
##### What's Changed
- ✨ Add additional SubResource\* functions for FieldOwner by [@k8s-infra-cherrypick-robot](https://togithub.com/k8s-infra-cherrypick-robot) in [https://github.com/kubernetes-sigs/controller-runtime/pull/2153](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2153)
- 🐛 Update golanci-lint script by [@k8s-infra-cherrypick-robot](https://togithub.com/k8s-infra-cherrypick-robot) in [https://github.com/kubernetes-sigs/controller-runtime/pull/2152](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2152)
- 🌱 Bump kubebuilder-release-tools to v0.3.0 by [@k8s-infra-cherrypick-robot](https://togithub.com/k8s-infra-cherrypick-robot) in [https://github.com/kubernetes-sigs/controller-runtime/pull/2154](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2154)
- 🌱 \[0.14] Deprecate component configuration package by [@vincepri](https://togithub.com/vincepri) in [https://github.com/kubernetes-sigs/controller-runtime/pull/2165](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2165)
**Full Changelog**: https://github.com/kubernetes-sigs/controller-runtime/compare/v0.14.2...v0.14.3
### [`v0.14.2`](https://togithub.com/kubernetes-sigs/controller-runtime/releases/tag/v0.14.2)
[Compare Source](https://togithub.com/kubernetes-sigs/controller-runtime/compare/v0.14.1...v0.14.2)
#### What's Changed
- \[release-0.14] 🌱 Bump k8s.io/\* to v0.26.1 by [@sbueringer](https://togithub.com/sbueringer) in [https://github.com/kubernetes-sigs/controller-runtime/pull/2146](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2146)
**Full Changelog**: https://github.com/kubernetes-sigs/controller-runtime/compare/v0.14.1...v0.14.2
### [`v0.14.1`](https://togithub.com/kubernetes-sigs/controller-runtime/releases/tag/v0.14.1)
[Compare Source](https://togithub.com/kubernetes-sigs/controller-runtime/compare/v0.14.0...v0.14.1)
## Changes since v0.14.0
#### :bug: Bug Fixes
- 🐛 controllers without For() fail to start by [@k8s-infra-cherrypick-robot](https://togithub.com/k8s-infra-cherrypick-robot) in [https://github.com/kubernetes-sigs/controller-runtime/pull/2108](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2108)
**Full Changelog**: https://github.com/kubernetes-sigs/controller-runtime/compare/v0.14.0...v0.14.1
### [`v0.14.0`](https://togithub.com/kubernetes-sigs/controller-runtime/releases/tag/v0.14.0)
[Compare Source](https://togithub.com/kubernetes-sigs/controller-runtime/compare/v0.13.1...v0.14.0)
## Changes since v0.13.1
#### :warning: Breaking Changes
- Add Get functionality to SubResourceClient ([#2094](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2094))
- Allow configuring RecoverPanic for controllers globally ([#2093](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2093))
- Add client.SubResourceWriter ([#2072](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2072))
- Support registration and removal of event handler ([#2046](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2046))
- Update Kubernetes dependencies to v0.26 ([#2043](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2043), [#2087](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2087))
- Zap log: Default to RFC3339 time encoding ([#2029](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2029))
- cache.BuilderWithOptions inherit options from caller ([#1980](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1980))
- Migrate to ginkgo v2 ([https://github.com/kubernetes-sigs/controller-runtime/pull/1977](https://togithub.com/kubernetes-sigs/controller-runtime/pull/1977)), this removes the `pkg/envtest/printer` package
#### :sparkles: New Features
- Builder: Do not require For ([#2091](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2091))
- support disable deepcopy on list funcion ([#2076](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2076))
- Add cluster.NewClientFunc with options ([#2054](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2054))
- Tidy up startup logging of kindWithCache source ([#2057](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2057))
- Add function to get reconcileID from context ([#2056](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2056))
- feat: add NOT predicate ([#2031](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2031))
- Allow to provide a custom lock interface to manager ([#2027](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2027))
- Add tls options to manager.Options ([#2023](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2023))
- Update Go version to 1.19 ([#1986](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1986))
#### :bug: Bug Fixes
- Prevent manager from getting started a second time ([#2090](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2090))
- Missing error log for in-cluster config ([#2051](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2051))
- Skip custom mutation handler when delete a CR ([#2049](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2049))
- fix: improve semantics of combining cache selectorsByObject ([#2039](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2039))
- Conversion webhook should not panic when conversion request is nil ([#1970](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1970))
#### :seedling: Others
- Prepare for release 0.14 ([#2100](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2100))
- Generate files and update modules ([#2096](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2096))
- Bump github.com/onsi/ginkgo/v2 from 2.5.1 to 2.6.0 ([#2097](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2097))
- Bump golang.org/x/time ([#2089](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2089))
- Update OWNERS: remove inactive members, promote fillzpp sbueringer ([#2088](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2088), [#2092](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2092))
- Default ENVTEST version to a working one (1.24.2) ([#2081](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2081))
- Update golangci-lint to v1.50.1 ([#2080](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2080))
- Bump go.uber.org/zap from 1.23.0 to 1.24.0 ([#2077](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2077))
- Bump golang.org/x/sys from 0.2.0 to 0.3.0 ([#2078](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2078))
- Ignore Kubernetes Dependencies in Dependabot ([#2071](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2071))
- Bump github.com/prometheus/client_golang from 1.13.0 to 1.14.0 ([#2070](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2070))
- Bump github.com/onsi/ginkgo/v2 from 2.5.0 to 2.5.1 ([#2066](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2066))
- seedling to dependabot ([#2065](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2065))
- Bump github.com/onsi/gomega from 1.23.0 to 1.24.1 ([#2062](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2062))
- Bump go.uber.org/zap from 1.21.0 to 1.23.0 ([#2060](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2060))
- Bump actions/checkout from 2 to 3 ([#2059](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2059))
- Bump golangci/golangci-lint-action from 2 to 3 ([#2058](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2058))
- Add Dependabot for dependency management ([#2050](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2050))
- Deprecate Webhook Server TLSMinVersion ([#2041](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2041))
- Bump kubebuilder-release-tools to v0.2.0 ([#2012](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2012))
- grammar: removed doubles of the word "the" ([#2006](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2006))
- Refactor typed_client and unstructured_client to be consistent ([#1795](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1795))
:book: Additionally, there have been 4 contributions to our documentation and book. ([#2034](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2034), [#2030](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2030), [#2017](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2017), [#1992](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1992))
*Thanks to all our contributors!* 😊
##### New Contributors
- [@laxmikantbpandhare](https://togithub.com/laxmikantbpandhare) made their first contribution in [https://github.com/kubernetes-sigs/controller-runtime/pull/1986](https://togithub.com/kubernetes-sigs/controller-runtime/pull/1986)
- [@Icarus9913](https://togithub.com/Icarus9913) made their first contribution in [https://github.com/kubernetes-sigs/controller-runtime/pull/1992](https://togithub.com/kubernetes-sigs/controller-runtime/pull/1992)
- [@Tomy2e](https://togithub.com/Tomy2e) made their first contribution in [https://github.com/kubernetes-sigs/controller-runtime/pull/1970](https://togithub.com/kubernetes-sigs/controller-runtime/pull/1970)
- [@hyschumi](https://togithub.com/hyschumi) made their first contribution in [https://github.com/kubernetes-sigs/controller-runtime/pull/1795](https://togithub.com/kubernetes-sigs/controller-runtime/pull/1795)
- [@oscr](https://togithub.com/oscr) made their first contribution in [https://github.com/kubernetes-sigs/controller-runtime/pull/2006](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2006)
- [@matteoolivi](https://togithub.com/matteoolivi) made their first contribution in [https://github.com/kubernetes-sigs/controller-runtime/pull/2017](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2017)
- [@johscheuer](https://togithub.com/johscheuer) made their first contribution in [https://github.com/kubernetes-sigs/controller-runtime/pull/2027](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2027)
- [@larsks](https://togithub.com/larsks) made their first contribution in [https://github.com/kubernetes-sigs/controller-runtime/pull/2030](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2030)
- [@johannesfrey](https://togithub.com/johannesfrey) made their first contribution in [https://github.com/kubernetes-sigs/controller-runtime/pull/1999](https://togithub.com/kubernetes-sigs/controller-runtime/pull/1999)
- [@Eileen-Yu](https://togithub.com/Eileen-Yu) made their first contribution in [https://github.com/kubernetes-sigs/controller-runtime/pull/2034](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2034)
- [@iiiceoo](https://togithub.com/iiiceoo) made their first contribution in [https://github.com/kubernetes-sigs/controller-runtime/pull/2049](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2049)
- [@kannon92](https://togithub.com/kannon92) made their first contribution in [https://github.com/kubernetes-sigs/controller-runtime/pull/2050](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2050)
- [@zbindenren](https://togithub.com/zbindenren) made their first contribution in [https://github.com/kubernetes-sigs/controller-runtime/pull/2056](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2056)
- [@dependabot](https://togithub.com/dependabot) made their first contribution in [https://github.com/kubernetes-sigs/controller-runtime/pull/2058](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2058)
- [@Miciah](https://togithub.com/Miciah) made their first contribution in [https://github.com/kubernetes-sigs/controller-runtime/pull/2057](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2057)
- [@maciej-karas-form3](https://togithub.com/maciej-karas-form3) made their first contribution in [https://github.com/kubernetes-sigs/controller-runtime/pull/2051](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2051)
- [@qiankunli](https://togithub.com/qiankunli) made their first contribution in [https://github.com/kubernetes-sigs/controller-runtime/pull/2076](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2076)
- [@lucacome](https://togithub.com/lucacome) made their first contribution in [https://github.com/kubernetes-sigs/controller-runtime/pull/2087](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2087)
**Full Changelog**: https://github.com/kubernetes-sigs/controller-runtime/compare/v0.13.1...v0.14.0
### [`v0.13.1`](https://togithub.com/kubernetes-sigs/controller-runtime/releases/tag/v0.13.1)
[Compare Source](https://togithub.com/kubernetes-sigs/controller-runtime/compare/v0.13.0...v0.13.1)
##### What's Changed
- ✨ Add tls options to manager.Options in [https://github.com/kubernetes-sigs/controller-runtime/pull/2028](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2028)
**Full Changelog**: https://github.com/kubernetes-sigs/controller-runtime/compare/v0.13.0...v0.13.1
### [`v0.13.0`](https://togithub.com/kubernetes-sigs/controller-runtime/releases/tag/v0.13.0)
[Compare Source](https://togithub.com/kubernetes-sigs/controller-runtime/compare/v0.12.3...v0.13.0)
**changes since [v0.12.3](https://togithub.com/kubernetes-sigs/controller-runtime/releases/v0.12.3)**
##### :warning: Breaking Changes
- Do not mutate the global warning handler ([#1944](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1944))
- Add GetOptions as optional argument of client.Reader and all its implementation ([#1917](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1917))
##### :sparkles: New Features
- Bump golangci lint to v1.49.0 ([#1988](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1988))
- Update k8s API to v1.25 ([#1985](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1985))
- Implement IgnoreAlreadyExists ([#1965](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1965))
- Bump k8s v0.25.0-alpha.3 ([#1967](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1967))
- webhook: add an option to recover from panics in handler ([#1900](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1900))
- Provide access to admission.Request in custom validator/defaulter ([#1950](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1950))
- komega: add EqualObject matcher ([#1833](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1833))
- fix some typos ([#1924](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1924))
- Allow TLS to be entirely configured on webhook server ([#1897](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1897))
##### :bug: Bug Fixes
- Rearange `EventBroadcaster` log statement. ([#1974](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1974))
- Fix log depth for DelegatingLogSink ([#1975](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1975))
- Remove no-op clientgo reflector metrics ([#1946](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1946))
- Fix webhook write response error for broken HTTP connection ([#1930](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1930))
- Fix issue with starting multiple test envs ([#1910](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1910))
- don't override global log in builder ([#1907](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1907))
- skip mutation handler when received deletion verb ([#1765](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1765))
- fix loading CRDs from multiple directories in envtests ([#1904](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1904))
*Thanks to all our contributors!*
### [`v0.12.3`](https://togithub.com/kubernetes-sigs/controller-runtime/releases/tag/v0.12.3)
[Compare Source](https://togithub.com/kubernetes-sigs/controller-runtime/compare/v0.12.2...v0.12.3)
##### What's Changed
- :sparkles: Provide access to admission.Request in custom validator/defaulter in [https://github.com/kubernetes-sigs/controller-runtime/pull/1952](https://togithub.com/kubernetes-sigs/controller-runtime/pull/1952)
**Full Changelog**: https://github.com/kubernetes-sigs/controller-runtime/compare/v0.12.2...v0.12.3
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
[ ] If you want to rebase/retry this PR, check this box
This PR has been generated by Mend Renovate. View repository job log here.
This PR contains the following updates:
v0.12.2
->v0.15.1
area:operator
,area:chart
chart:provider-postgresql
Release Notes
kubernetes-sigs/controller-runtime (sigs.k8s.io/controller-runtime)
### [`v0.15.1`](https://togithub.com/kubernetes-sigs/controller-runtime/releases/tag/v0.15.1) [Compare Source](https://togithub.com/kubernetes-sigs/controller-runtime/compare/v0.15.0...v0.15.1) #### What's Changed - \[release-0.15] ✨Fix logs in unstructured client by [@k8s-infra-cherrypick-robot](https://togithub.com/k8s-infra-cherrypick-robot) in [https://github.com/kubernetes-sigs/controller-runtime/pull/2344](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2344) - \[release-0.15] 🐛 fix unspecified KindsFor version by [@k8s-infra-cherrypick-robot](https://togithub.com/k8s-infra-cherrypick-robot) in [https://github.com/kubernetes-sigs/controller-runtime/pull/2347](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2347) - \[release-0.15] 🐛 fakeClient.Status().Update(...) cannot recognize resource version conflicts by [@k8s-infra-cherrypick-robot](https://togithub.com/k8s-infra-cherrypick-robot) in [https://github.com/kubernetes-sigs/controller-runtime/pull/2372](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2372) - \[release-0.15] 🐛 hasLabels and matchingLabels step on each other by [@k8s-infra-cherrypick-robot](https://togithub.com/k8s-infra-cherrypick-robot) in [https://github.com/kubernetes-sigs/controller-runtime/pull/2373](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2373) - \[release-0.15] :bug: Fix Defaulting of the User Agent by [@alvaroaleman](https://togithub.com/alvaroaleman) in [https://github.com/kubernetes-sigs/controller-runtime/pull/2436](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2436) **Full Changelog**: https://github.com/kubernetes-sigs/controller-runtime/compare/v0.15.0...v0.15.1 ### [`v0.15.0`](https://togithub.com/kubernetes-sigs/controller-runtime/releases/tag/v0.15.0) [Compare Source](https://togithub.com/kubernetes-sigs/controller-runtime/compare/v0.14.6...v0.15.0) ### Controller Runtime v0.15 > *A note from the maintainers* > > The following release is probably the largest in the history of the project. Controller Runtime is a foundational piece for almost all controllers and operators and we're aware that breaking changes are never an ask for our users, especially while running production services. > > We take breaking changes very seriously and carefully reviewed each one of these changes to improve the codebase, user experience, and future maintainability of the project. > > The v0.15 release is a stepping stone towards maturity. > > As always, please reach out in Slack in #controller-runtime. ## Changes since v0.14.5 #### :warning: Breaking Changes - Make `*http.Client` configurable and use/share the same client by default ([#2122](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2122)) - When using the default Manager configuration, no immediate changes are needed. - `client/apiutil.NewDynamicRESTMapper` signature has changed and now requires an `*http.Client` as parameter. - `cluster.Cluster` interface requires `GetHTTPClient()` method which must return an already configured, non-nil, `*http.Client` for the Cluster. When using `cluster.New` to create Clusters, the client is created internally if not specified as an `Options` field. - `cluster.Options.MapperProvider` field now requires a `*rest.Config` and `*http.Client`. - Deprecate Component Configuration `config/v1alpha1` types ([#2149](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2149), [#2200](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2200)) - The Component Configuration package has been unmaintained for over a year and is no longer actively developed. There are (currently) no plans to revive the package, or provide an alternative. - Users should migrate to a custom implementation that sets `Manager.Options` directly. - 👉 Feedback requested: removal of the deprecated types and code is tracked in [#895](https://togithub.com/kubernetes-sigs/controller-runtime/issues/895). - Remove dependency injection functions ([#2134](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2134), [#2120](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2120)) - The package `pkg/inject` has been removed, this package contained long deprecated injection functions (like `InjectScheme`, `InjectLogger`, `InjectConfig`, `InjectClient`, `InjectCache`, etc.). - The runtime injection functionality has been deprecated since Controller Runtime 0.10; all of the above fields can be passed from the `Manager` to structs or interfaces that need them. - Improve `builder` package capabilities and general UX ([#2135](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2135)) - `builder.Builder.Watches` signature has changed, it now takes a `client.Object` instead of a `source.Source` as first argument. - For `source.Source`, use `WatchesRawSource`. - `builder.Builder.WatchesMetadata` has been added to simplify watching `PartialObjectMetadata` objects. - Refactor cache.Options, deprecate MultiNamespacedCacheBuilder ([#2157](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2157), [#2166](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2166)) - `cache.Options.Namespace` has been removed in favor of `cache.Options.Namespaces`, a slice. - `cache.Options.Resync` has been renamed to `SyncPeriod`. - `cache.Options.DefaultSelector` has been removed and split in two fields: - `cache.Options.DefaultLabelSelector` - `cache.Options.DefaultFieldSelector` - `cache.Options.DefaultTransform` was added to provide a global transform function. - `cache.Options.UnsafeDisableDeepCopy` was added to provide a global toggle to disable DeepCopy of the objects from the cache before returning them to clients. - The following `[..]ByObject` field have been refactored: - `cache.Options.SelectorsByObject` has been removed, use `cache.Options.ByObject[Object].Field` and `cache.Options.ByObject[Object].Label` - `cache.Options.UnsafeDisableDeepCopyByObject` has been removed, use `cache.Options.ByObject[Object].UnsafeDisableDeepCopy`. - `cache.Options.TransformByObject` has been removed, use `cache.Options.ByObject[Object].Transform`. - `cache.ObjectAll` has been removed. This type was previously used to set selectors or transformation functions for every object, use the newly introduced default global options instead. - Add context to EventHandler(s) ([#2139](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2139)) - `handler.EventHandler` and `handler.Funcs` interfaces require `context.Context` as the first parameter for every method. - `handler.MapFunc` signature has changed and now requires a `context.Context`. - Add client.{GroupVersionKindFor, IsObjectNamespaced} ([#2136](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2136)) - The `client.Client` interface now requires and exposes these helper functions: - `GroupVersionKindFor(Object)` which returns the `schema.GroupVersionKind` for the object. - `IsObjectNamespaced(Object)` which returns `true` if the object's GroupVersionKind is namespaced, or `false` for global ones. - Remove DelegatedClient, move all related options in `client.New` ([#2150](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2150)) - `client.NewDelegatingClient` constructor and `client.NewDelegatingClientInput` struct have been removed. - The DelegatingClient created a Client backed by a cache, use `client.New` and set `client.Options.Cache` to customize the client's caching behavior. - `cluster.NewClientFunc` has been moved to `client.NewClientFunc`. - `cluster.ClientOptions` has been removed. - `cluster.DefaultNewClient` has been removed. - `cluster.ClientBuilderWithOptions` has been removed. - Expose Manager.Cache/Client options, deprecate older options ([#2199](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2199), [#2177](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2177)) - `manager.Options.Cache` is now the preferred way to customize the cache options for the manager. - Users can also keep using `manager.Options.NewCache`, which has now been marked as a low level primitive. - `manager.Options.Client` is now the preferred way to customize the client options for the manager. - Users can also keep using `manager.Options.NewClient`, which has now been marked as a low level primitive. - `manager.Options.SyncPeriod` has been deprecated in favor of `manager.Options.Cache.SyncPeriod`. - `manager.Options.Namespace` has been deprecated in favor of `manager.Options.Cache.Namespaces`. - `manager.Options.DryRunClient` has been deprecated in favor of `manager.Options.Client.DryRun`. - `manager.Options.ClientDisableCacheFor` has been deprecated in favor of `manager.Options.Client.Cache.DisableCacheFor`. - The following webhook server options have been deprecated, use `manager.WebhookServer` instead. - `manager.Options.Port` - `manager.Options.Host` - `manager.Options.CertDir` - `manager.Options.TLSOpts` - Remove `cache.BuilderWithOptions` ([#2300](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2300)) - Add constructors for `webhook/conversion`, remove `webhook/admission.GetDecoder()` ([#2144](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2144)) - There are two set of changes related to the webhooks and how they're exposed. For users using the Manager, there should be minimal to no required changes. - `webhook/admission/Webhook.GetDecoder()` method has been removed, it was unused before and relied on runtime dependency injection. - `webhook/conversion.Webhook` struct has been un-exported. Users should use `webhook/conversion.NewWebhookHandler` instead. - `pkg/webhook/admission`: - Use `Result.Message` instead of `Result.Reason` ([#1539](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1539)) - `Validator` and `CustomValidator` interfaces have been modified to allow returning warnings ([#2014](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2014)) - Testing: Fake client status handling ([#2259](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2259)) - Added a new `WithStatusSubresource` option and pre-populating it with all in-tree resources that have a status subresource - `Update` and `Patch` methods now don't change the status for any such resource anymore - The status clients `Update` and `Patch` methods now only change the status for any such resource - Remove high cardinality metrics ([#2217](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2217), [#2298](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2298)) - `rest_client_request_latency_seconds` - `rest_client_request_duration_seconds` - `rest_client_request_size_bytes` - `rest_client_response_size_bytes` - Allow passing a custom webhook server ([#2293](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2293), [#2329](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2329)) - The `webhook.Server` struct is now an interface - `webhook.NewServer` can be used to pass in and customize the default server - Flatten fields in controller.Options ([#2307](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2307)) - Update fake client deletionTimestamp behavior ([#2316](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2316)) - The fake client will panic if initialized with an object that has a DeletionTimestamp and no finalizer - The fake client will silently ignore a DeletionTimestamp on an object in a Create request, matching the behavior of the kube-apiserver - Unexport delegating logger, remove async init ([#2317](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2317)) - `log.DelegatingLogSink` has been unexported, this logger should never be used on its own, and it's only meant to be used within controller-runtime initialization process. - Previously, when the `pkg/log` package was imported, there was an `init` function that spawned a goroutine, which set a null logger after 30 seconds. Now this logic has been removed, and instead incorporated into the delegating logger private implementation. - Change webhook request received / response written logs to log level 4 ([#2334](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2334)) - Use and offer a single dynamic lazy RESTMapper ([#2116](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2116), [#2296](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2296)) - The following options have been removed: `WithCustomMapper`, `WithExperimentalLazyMapper`, `WithLazyDiscovery`, `WithLimiter`. - The `DynamicRESTMapperOption` type has been removed. #### :sparkles: New Features - Add cross-version compatibility with client-go 1.27 ([#2223](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2223)) - Introduce pprof server to manager ([#1943](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1943)) - To enable, use `Manager.Options.PprofBindAddress`. - Added interceptor client to intercept calls to a client ([#2248](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2248) [#2306](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2306)) - Add `reconcile.TerminalError(...)` ([#2325](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2325)) - By wrapping an error with the above package-level function, the controller won't retry the request again in an exponential backoff loop. - The error is logged, and the `controller_runtime_terminal_reconcile_errors_total` metric is incremented. #### :bug: Bug Fixes - Use correct context to cancel "list and watch" & wait for all informers to complete ([#2121](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2121)) - Client: use passed in Cache.DisableFor option ([#2303](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2303)) - Fix race condition in channel source ([#2286](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2286)) - ForceOwnership should work with subresources ([#2257](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2257)) - Fix error string in CacheReader.List ([#2256](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2256)) - Fix a bug in multinamespaced cache implementation ([#2252](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2252)) - Allow lazy restmapper to work with CRDs created at runtime ([#2208](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2208)) - Set DeleteStateUnknown in DeleteEvent when obj is DeletedFinalStateUnknown ([#2212](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2212)) - Allow to set GracefulShutdownTimeout to -1, disabling timeouts ([#2169](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2169)) - pkg/certwatcher: Start should retry for 10s when adding files ([#2160](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2160)) - Don't share error concurrently in test ([#2158](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2158)) #### :seedling: Others - Improve unstructured serialisation ([#2147](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2147)) - Handle TLSOpts.GetCertificate in webhook ([#2291](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2291)) - Kind source should expose type information on timeout ([#2290](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2290)) - Fakeclient: Add support for evictions ([#2305](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2305)) - envtest: set default webhook options for polling ([#2289](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2289)) - Add client.InNamespace("xyz").AsSelector() ([#2282](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2282)) - Update golanci-lint script ([#2151](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2151)) - Preserve unstructured object GVKs in cache.Options.ByObject ([#2246](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2246)) - Don't call defaultOpts for MultiNamespaceCache twice ([#2234](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2234)) - GVKForObject should handle multiple GVKs in Scheme gracefully ([#2192](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2192)) - verify.sh: verify generate & modules (in CI) ([#2186](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2186)) - code clean for pkg/envtest/server.go ([#2180](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2180)) - Return an error if no httpClient is provided for `NewDynamicRESTMapper` ([#2178](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2178)) - Use runtime.Unstructured interface instead of Unstructured struct ([#2168](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2168)) - Return an error if no httpClient is provided ([#2164](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2164)) - Return the error from rest.HTTPClientFor instead of hiding it ([#2161](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2161)) - fix default value for cfg.Burst ([#2142](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2142)) - Add more linters ([#2133](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2133)) - Remove pkg/patterns ([#2132](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2132)) - Further cleanup internal/informers ([#2130](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2130)) - Simplify cache.objectTypeForListObject ([#2131](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2131)) - Refactor internal cache/informers map impl ([#2103](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2103)) - client/cache/client_cache.go should be called resources ([#2111](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2111)) - Remove reviewers which are also approvers ([#2109](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2109)) - Use HTTPClient to create the API Reader ([#2163](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2163)) - Update SECURITY_CONTACTS and maintainer list ([#2318](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2318)) - Update builtin webhook paths ([#2319](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2319)) - Make metrics and health probe servers be Runnables ([#2275](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2275)) - Revert: move health probes to runnable ([#2321](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2321)) - Fix comment on MultiNamespaceCache ([#2323](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2323)) - Cleanup webhook logging ([#2326](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2326)) - Add certwatcher callback ([#2301](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2301)) - Fix a bug in multinamespaced cache implementation ([#2288](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2288)) #### :seedling: Dependencies - Bump Go to 1.20 ([#2279](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2279)) - Bump github.com/go-logr/logr from v1.2.3 to v1.2.4 ([#2262](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2262)) - Bump github.com/go-logr/zapr from v1.2.3 to v1.2.4 ([#2320](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2320)) - Bump github.com/onsi/ginkgo/v2 from v2.6.1 to v2.9.5 ([#2123](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2123) [#2155](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2155) [#2194](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2194) [#2205](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2205) [#2224](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2224) [#2233](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2233) [#2251](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2251) [#2311](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2311) [#2328](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2328)) - Bump github.com/onsi/gomega from v1.24.1 to v1.27.7 ([#2106](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2106) [#2137](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2137) [#2156](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2156) [#2206](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2206) [#2227](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2227) [#2232](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2232) [#2260](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2260) [#2340](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2340)) - Bump github.com/prometheus/client_golang from v1.14.0 to v1.15.1 ([#2280](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2280) [#2310](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2310)) - Bump github.com/prometheus/client_model from v0.3.0 to v0.4.0 ([#2312](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2312)) - Bump go.uber.org/goleak from v1.2.0 to v1.2.1 ([#2195](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2195)) - Bump golang.org/x/sys from v0.3.0 to v0.8.0 ([#2124](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2124) [#2225](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2225) [#2270](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2270) [#2309](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2309)) - Bump k8s.io dependencies to 0.27.2 ([#2145](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2145) [#2330](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2330) [#2333](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2333)) - Bump k8s.io/klog/v2 from v2.80.1 to v2.90.1 ([#2138](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2138) [#2226](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2226)) - Bump sigs.k8s.io/controller-tools to v0.11.3 and apidiff to v0.5.0 ([#2187](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2187)) - Use Go 1.19 in golangci-lint action ([#2272](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2272)) - Bump golangci-lint to v1.52.1 ([#2188](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2188) [#2284](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2284)) - Bump kubebuilder-release-tools to v0.3.0 ([#2126](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2126)) :book: Additionally, there have been 4 contributions to our documentation and book. ([#2203](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2203), [#2201](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2201), [#2162](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2162), [#2170](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2170)) *Thanks to all our contributors!* 😊 ### [`v0.14.6`](https://togithub.com/kubernetes-sigs/controller-runtime/releases/tag/v0.14.6) [Compare Source](https://togithub.com/kubernetes-sigs/controller-runtime/compare/v0.14.5...v0.14.6) #### What's Changed - 🐛 Preserve unstructured object GVKs when using \*ByObject cache options by [@joelanford](https://togithub.com/joelanford) in [https://github.com/kubernetes-sigs/controller-runtime/pull/2249](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2249) **Full Changelog**: https://github.com/kubernetes-sigs/controller-runtime/compare/v0.14.5...v0.14.6 ### [`v0.14.5`](https://togithub.com/kubernetes-sigs/controller-runtime/releases/tag/v0.14.5) [Compare Source](https://togithub.com/kubernetes-sigs/controller-runtime/compare/v0.14.4...v0.14.5) #### What's Changed - 🐛 Allow to set GracefulShutdownTimeout to -1, disabling timeouts in [https://github.com/kubernetes-sigs/controller-runtime/pull/2198](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2198) - 🌱 GVKForObject should handle multiple GVKs in Scheme gracefully in [https://github.com/kubernetes-sigs/controller-runtime/pull/2202](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2202) - ✨ Add rest client request duration and size metrics in [https://github.com/kubernetes-sigs/controller-runtime/pull/2218](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2218) - 🐛 Allow lazy restmapper to work with CRDs created at runtime in [https://github.com/kubernetes-sigs/controller-runtime/pull/2219](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2219) **Full Changelog**: https://github.com/kubernetes-sigs/controller-runtime/compare/v0.14.4...v0.14.5 ### [`v0.14.4`](https://togithub.com/kubernetes-sigs/controller-runtime/releases/tag/v0.14.4) [Compare Source](https://togithub.com/kubernetes-sigs/controller-runtime/compare/v0.14.3...v0.14.4) #### What's Changed - ✨ Provide a truly lazy restmapper by [@k8s-infra-cherrypick-robot](https://togithub.com/k8s-infra-cherrypick-robot) in [https://github.com/kubernetes-sigs/controller-runtime/pull/2179](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2179) **Full Changelog**: https://github.com/kubernetes-sigs/controller-runtime/compare/v0.14.3...v0.14.4 ### [`v0.14.3`](https://togithub.com/kubernetes-sigs/controller-runtime/releases/tag/v0.14.3) [Compare Source](https://togithub.com/kubernetes-sigs/controller-runtime/compare/v0.14.2...v0.14.3) ##### What's Changed - ✨ Add additional SubResource\* functions for FieldOwner by [@k8s-infra-cherrypick-robot](https://togithub.com/k8s-infra-cherrypick-robot) in [https://github.com/kubernetes-sigs/controller-runtime/pull/2153](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2153) - 🐛 Update golanci-lint script by [@k8s-infra-cherrypick-robot](https://togithub.com/k8s-infra-cherrypick-robot) in [https://github.com/kubernetes-sigs/controller-runtime/pull/2152](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2152) - 🌱 Bump kubebuilder-release-tools to v0.3.0 by [@k8s-infra-cherrypick-robot](https://togithub.com/k8s-infra-cherrypick-robot) in [https://github.com/kubernetes-sigs/controller-runtime/pull/2154](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2154) - 🌱 \[0.14] Deprecate component configuration package by [@vincepri](https://togithub.com/vincepri) in [https://github.com/kubernetes-sigs/controller-runtime/pull/2165](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2165) **Full Changelog**: https://github.com/kubernetes-sigs/controller-runtime/compare/v0.14.2...v0.14.3 ### [`v0.14.2`](https://togithub.com/kubernetes-sigs/controller-runtime/releases/tag/v0.14.2) [Compare Source](https://togithub.com/kubernetes-sigs/controller-runtime/compare/v0.14.1...v0.14.2) #### What's Changed - \[release-0.14] 🌱 Bump k8s.io/\* to v0.26.1 by [@sbueringer](https://togithub.com/sbueringer) in [https://github.com/kubernetes-sigs/controller-runtime/pull/2146](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2146) **Full Changelog**: https://github.com/kubernetes-sigs/controller-runtime/compare/v0.14.1...v0.14.2 ### [`v0.14.1`](https://togithub.com/kubernetes-sigs/controller-runtime/releases/tag/v0.14.1) [Compare Source](https://togithub.com/kubernetes-sigs/controller-runtime/compare/v0.14.0...v0.14.1) ## Changes since v0.14.0 #### :bug: Bug Fixes - 🐛 controllers without For() fail to start by [@k8s-infra-cherrypick-robot](https://togithub.com/k8s-infra-cherrypick-robot) in [https://github.com/kubernetes-sigs/controller-runtime/pull/2108](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2108) **Full Changelog**: https://github.com/kubernetes-sigs/controller-runtime/compare/v0.14.0...v0.14.1 ### [`v0.14.0`](https://togithub.com/kubernetes-sigs/controller-runtime/releases/tag/v0.14.0) [Compare Source](https://togithub.com/kubernetes-sigs/controller-runtime/compare/v0.13.1...v0.14.0) ## Changes since v0.13.1 #### :warning: Breaking Changes - Add Get functionality to SubResourceClient ([#2094](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2094)) - Allow configuring RecoverPanic for controllers globally ([#2093](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2093)) - Add client.SubResourceWriter ([#2072](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2072)) - Support registration and removal of event handler ([#2046](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2046)) - Update Kubernetes dependencies to v0.26 ([#2043](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2043), [#2087](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2087)) - Zap log: Default to RFC3339 time encoding ([#2029](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2029)) - cache.BuilderWithOptions inherit options from caller ([#1980](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1980)) - Migrate to ginkgo v2 ([https://github.com/kubernetes-sigs/controller-runtime/pull/1977](https://togithub.com/kubernetes-sigs/controller-runtime/pull/1977)), this removes the `pkg/envtest/printer` package #### :sparkles: New Features - Builder: Do not require For ([#2091](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2091)) - support disable deepcopy on list funcion ([#2076](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2076)) - Add cluster.NewClientFunc with options ([#2054](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2054)) - Tidy up startup logging of kindWithCache source ([#2057](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2057)) - Add function to get reconcileID from context ([#2056](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2056)) - feat: add NOT predicate ([#2031](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2031)) - Allow to provide a custom lock interface to manager ([#2027](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2027)) - Add tls options to manager.Options ([#2023](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2023)) - Update Go version to 1.19 ([#1986](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1986)) #### :bug: Bug Fixes - Prevent manager from getting started a second time ([#2090](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2090)) - Missing error log for in-cluster config ([#2051](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2051)) - Skip custom mutation handler when delete a CR ([#2049](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2049)) - fix: improve semantics of combining cache selectorsByObject ([#2039](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2039)) - Conversion webhook should not panic when conversion request is nil ([#1970](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1970)) #### :seedling: Others - Prepare for release 0.14 ([#2100](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2100)) - Generate files and update modules ([#2096](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2096)) - Bump github.com/onsi/ginkgo/v2 from 2.5.1 to 2.6.0 ([#2097](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2097)) - Bump golang.org/x/time ([#2089](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2089)) - Update OWNERS: remove inactive members, promote fillzpp sbueringer ([#2088](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2088), [#2092](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2092)) - Default ENVTEST version to a working one (1.24.2) ([#2081](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2081)) - Update golangci-lint to v1.50.1 ([#2080](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2080)) - Bump go.uber.org/zap from 1.23.0 to 1.24.0 ([#2077](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2077)) - Bump golang.org/x/sys from 0.2.0 to 0.3.0 ([#2078](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2078)) - Ignore Kubernetes Dependencies in Dependabot ([#2071](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2071)) - Bump github.com/prometheus/client_golang from 1.13.0 to 1.14.0 ([#2070](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2070)) - Bump github.com/onsi/ginkgo/v2 from 2.5.0 to 2.5.1 ([#2066](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2066)) - seedling to dependabot ([#2065](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2065)) - Bump github.com/onsi/gomega from 1.23.0 to 1.24.1 ([#2062](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2062)) - Bump go.uber.org/zap from 1.21.0 to 1.23.0 ([#2060](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2060)) - Bump actions/checkout from 2 to 3 ([#2059](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2059)) - Bump golangci/golangci-lint-action from 2 to 3 ([#2058](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2058)) - Add Dependabot for dependency management ([#2050](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2050)) - Deprecate Webhook Server TLSMinVersion ([#2041](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2041)) - Bump kubebuilder-release-tools to v0.2.0 ([#2012](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2012)) - grammar: removed doubles of the word "the" ([#2006](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2006)) - Refactor typed_client and unstructured_client to be consistent ([#1795](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1795)) :book: Additionally, there have been 4 contributions to our documentation and book. ([#2034](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2034), [#2030](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2030), [#2017](https://togithub.com/kubernetes-sigs/controller-runtime/issues/2017), [#1992](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1992)) *Thanks to all our contributors!* 😊 ##### New Contributors - [@laxmikantbpandhare](https://togithub.com/laxmikantbpandhare) made their first contribution in [https://github.com/kubernetes-sigs/controller-runtime/pull/1986](https://togithub.com/kubernetes-sigs/controller-runtime/pull/1986) - [@Icarus9913](https://togithub.com/Icarus9913) made their first contribution in [https://github.com/kubernetes-sigs/controller-runtime/pull/1992](https://togithub.com/kubernetes-sigs/controller-runtime/pull/1992) - [@Tomy2e](https://togithub.com/Tomy2e) made their first contribution in [https://github.com/kubernetes-sigs/controller-runtime/pull/1970](https://togithub.com/kubernetes-sigs/controller-runtime/pull/1970) - [@hyschumi](https://togithub.com/hyschumi) made their first contribution in [https://github.com/kubernetes-sigs/controller-runtime/pull/1795](https://togithub.com/kubernetes-sigs/controller-runtime/pull/1795) - [@oscr](https://togithub.com/oscr) made their first contribution in [https://github.com/kubernetes-sigs/controller-runtime/pull/2006](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2006) - [@matteoolivi](https://togithub.com/matteoolivi) made their first contribution in [https://github.com/kubernetes-sigs/controller-runtime/pull/2017](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2017) - [@johscheuer](https://togithub.com/johscheuer) made their first contribution in [https://github.com/kubernetes-sigs/controller-runtime/pull/2027](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2027) - [@larsks](https://togithub.com/larsks) made their first contribution in [https://github.com/kubernetes-sigs/controller-runtime/pull/2030](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2030) - [@johannesfrey](https://togithub.com/johannesfrey) made their first contribution in [https://github.com/kubernetes-sigs/controller-runtime/pull/1999](https://togithub.com/kubernetes-sigs/controller-runtime/pull/1999) - [@Eileen-Yu](https://togithub.com/Eileen-Yu) made their first contribution in [https://github.com/kubernetes-sigs/controller-runtime/pull/2034](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2034) - [@iiiceoo](https://togithub.com/iiiceoo) made their first contribution in [https://github.com/kubernetes-sigs/controller-runtime/pull/2049](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2049) - [@kannon92](https://togithub.com/kannon92) made their first contribution in [https://github.com/kubernetes-sigs/controller-runtime/pull/2050](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2050) - [@zbindenren](https://togithub.com/zbindenren) made their first contribution in [https://github.com/kubernetes-sigs/controller-runtime/pull/2056](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2056) - [@dependabot](https://togithub.com/dependabot) made their first contribution in [https://github.com/kubernetes-sigs/controller-runtime/pull/2058](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2058) - [@Miciah](https://togithub.com/Miciah) made their first contribution in [https://github.com/kubernetes-sigs/controller-runtime/pull/2057](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2057) - [@maciej-karas-form3](https://togithub.com/maciej-karas-form3) made their first contribution in [https://github.com/kubernetes-sigs/controller-runtime/pull/2051](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2051) - [@qiankunli](https://togithub.com/qiankunli) made their first contribution in [https://github.com/kubernetes-sigs/controller-runtime/pull/2076](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2076) - [@lucacome](https://togithub.com/lucacome) made their first contribution in [https://github.com/kubernetes-sigs/controller-runtime/pull/2087](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2087) **Full Changelog**: https://github.com/kubernetes-sigs/controller-runtime/compare/v0.13.1...v0.14.0 ### [`v0.13.1`](https://togithub.com/kubernetes-sigs/controller-runtime/releases/tag/v0.13.1) [Compare Source](https://togithub.com/kubernetes-sigs/controller-runtime/compare/v0.13.0...v0.13.1) ##### What's Changed - ✨ Add tls options to manager.Options in [https://github.com/kubernetes-sigs/controller-runtime/pull/2028](https://togithub.com/kubernetes-sigs/controller-runtime/pull/2028) **Full Changelog**: https://github.com/kubernetes-sigs/controller-runtime/compare/v0.13.0...v0.13.1 ### [`v0.13.0`](https://togithub.com/kubernetes-sigs/controller-runtime/releases/tag/v0.13.0) [Compare Source](https://togithub.com/kubernetes-sigs/controller-runtime/compare/v0.12.3...v0.13.0) **changes since [v0.12.3](https://togithub.com/kubernetes-sigs/controller-runtime/releases/v0.12.3)** ##### :warning: Breaking Changes - Do not mutate the global warning handler ([#1944](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1944)) - Add GetOptions as optional argument of client.Reader and all its implementation ([#1917](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1917)) ##### :sparkles: New Features - Bump golangci lint to v1.49.0 ([#1988](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1988)) - Update k8s API to v1.25 ([#1985](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1985)) - Implement IgnoreAlreadyExists ([#1965](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1965)) - Bump k8s v0.25.0-alpha.3 ([#1967](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1967)) - webhook: add an option to recover from panics in handler ([#1900](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1900)) - Provide access to admission.Request in custom validator/defaulter ([#1950](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1950)) - komega: add EqualObject matcher ([#1833](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1833)) - fix some typos ([#1924](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1924)) - Allow TLS to be entirely configured on webhook server ([#1897](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1897)) ##### :bug: Bug Fixes - Rearange `EventBroadcaster` log statement. ([#1974](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1974)) - Fix log depth for DelegatingLogSink ([#1975](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1975)) - Remove no-op clientgo reflector metrics ([#1946](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1946)) - Fix webhook write response error for broken HTTP connection ([#1930](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1930)) - Fix issue with starting multiple test envs ([#1910](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1910)) - don't override global log in builder ([#1907](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1907)) - skip mutation handler when received deletion verb ([#1765](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1765)) - fix loading CRDs from multiple directories in envtests ([#1904](https://togithub.com/kubernetes-sigs/controller-runtime/issues/1904)) *Thanks to all our contributors!* ### [`v0.12.3`](https://togithub.com/kubernetes-sigs/controller-runtime/releases/tag/v0.12.3) [Compare Source](https://togithub.com/kubernetes-sigs/controller-runtime/compare/v0.12.2...v0.12.3) ##### What's Changed - :sparkles: Provide access to admission.Request in custom validator/defaulter in [https://github.com/kubernetes-sigs/controller-runtime/pull/1952](https://togithub.com/kubernetes-sigs/controller-runtime/pull/1952) **Full Changelog**: https://github.com/kubernetes-sigs/controller-runtime/compare/v0.12.2...v0.12.3Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate. View repository job log here.