Skip to content

Releases: kubernetes-sigs/controller-runtime

v0.8.3

09 Mar 02:46
0d84ce4
Compare
Choose a tag to compare

v0.8.3

changes since v0.8.2

✨ New Features

  • Add client.StrategicMergeFrom (#1413)

🐛 Bug Fixes

  • Manager leader election: Don't reset restcfg UserAgent (#1402)
  • Revert injection deprecation logging (#1415)

Thanks to all our contributors!

v0.8.2

10 Feb 20:07
a8c19c4
Compare
Choose a tag to compare

Changes since v0.8.1

⚠️ Breaking Changes

  • Fix some more races in the delegating logger (#1361)

🐛 Bug Fixes

  • Fix a race condition between leader election and recorder (#1381)
  • Don't hotloop on channel source closure (#1362)

Thanks to all our contributors! 😊

v0.8.1

22 Jan 15:47
9e78e65
Compare
Choose a tag to compare

Changes since v0.8.0

✨ New Features

  • Allow panic as an option to -zap-stacktrace-level" (#1348)
  • Manager: Start all caches before other Runnables (#1327)
  • Bump Kubernetes dependencies to 1.20.2 (#1335)

🐛 Bug Fixes

  • Manager.Elected() should be closed after runnables are started (#1354)
  • Prevent source.Channel from shutting down immediately (#1345)
  • Fix a race in the delegating logger (#1339)
  • Fix DestWritter var name typo (#1340)
  • Fix context.TODO() in the example (#1355)

Thanks to all our contributors! 😊

v0.7.2

22 Jan 15:46
d189419
Compare
Choose a tag to compare

Changes since v0.7.1

🐛 Bug Fixes

  • pkg/client: optionally allow caching of unstructured objects (#1351)

Thanks to all our contributors! 😊

v0.8.0

14 Jan 18:06
818a2ce
Compare
Choose a tag to compare

Changes since v0.7.1

⚠️ Breaking changes

  • Fakeclient: Set ResourceVersion when adding objects to the tracker (#1306)

✨ New Features

  • Checking configfile examples on check_everything.sh (#1336)
  • Adding WithContextFunc for webhook server to pass info to the handler (#1334)
  • Deprecate Inject interface (#1322)
  • initialize reconciler metrics when controller is started (#1324)
  • Allow configuring cache sync timeouts (#1247)
  • Bump Kubernetes dependencies to 1.20.1 (#1268, #1318)
  • Move cluster-specifics from Manager into new pkg/cluster (#1307)
  • Use anonymous function for locking when serving health probes (#1313)
  • Support for using both an external control plane and automatic webhooks together (#1265)

🐛 Bug Fixes

  • pkg/client: optionally allow caching of unstructured objects (#1332)
  • Ignore namespace key when getting cluster-scoped resources (#1326)
  • pkg/log: Set Log to NullLogger after 30 seconds (#1309)
  • Do not set PatchType if patch is empty (#1299)
  • Cache bypass should take into account List types (#1297)

📖 Documentation

  • Fix IntoContext() documentation (#1320)

Thanks to all our contributors! 😊

v0.7.1

14 Jan 18:01
1d5261b
Compare
Choose a tag to compare

Changes since v0.7.0

🐛 Bug Fixes

  • Cache bypass should take into account List types (#1298)
  • pkg/log: Set Log to NullLogger after 30 seconds (#1329)
  • Do not set PatchType if patch is empty (#1329)

Thanks to all our contributors! 😊

v0.7.0

11 Dec 20:27
f7a3dc6
Compare
Choose a tag to compare

Changes since v0.6.4

⚠️ Breaking Changes

Use client.Object & client.ObjectList

A number of methods that previously took runtime.Object & internally type-asserted them to metav1.Object now take client.Object (for non-list objects) or client.ObjectList (for lists). The practical upshot of this is more type-safety and clarity around what's required for particular methods.

All concrete API types (anything that implements runtime.Object & has a metadata field) already implement client.Object or client.ObjectList, so practical impact should be limited to folks who pass around runtime.Object values instead of concrete types.

  • Introduce and use client.Object and client.ObjectList (#1195)
  • Use client.Object for event handlers (#1118)
  • Fakeclient: Allow to pass ObjectLists to constructors (#1259)
  • client.ObjectKeyFromObject now uses client.Object (#1224)
  • Handler: Remove MapObject type and use client.Object directly (#1207)
  • Use client.Object interface in envtest (#1200)

High-Impact

  • pkg/webhook/admission: upgrade v1beta1 admission types to v1 (#1284)

    Impact: construct v1 Go types instead of v1beta1. Both versions are
    supported on the wire.

  • Change leaderlock from ConfigMap to ConfigMapsLeasesResourceLock (#1144)

    Impact: New RBAC permissions are needed by default for leaderelection (for
    the coordination/v1 API). The new lock will automatically deal with
    existing configmap locks (e.g. during upgrades). The can be set to its
    previous value ("configmaps") in manager.Options.

  • Propagate context.Context throughout the codebase (#1116)

    Impact: update various methods to accept a context.Context object, which
    can be used to structure timeouts and stopping loops/operations in lieu of
    channels

  • Change default webhook port to 9443 (#1076)

    Impact: update your deployment configuration to use port 9443, or manually
    configure the webhook port in manager Options.

  • Remove logs from internal controller (#1096)

    Impact: automatic logs for "succesful reconcile" no longer exist
    (it tended to duplicate manual logs that folks had in place).

  • Remove deprecated "--master" flag (#1039)

    Impact: update your controller client.Client's CLI configuration "--
    master" flag to "--kubeconfig"

  • Add a context w/ logger to Reconciler interface (#1054)

    Impact: add a context.Context parameter to your controller's
    Reconcile() method signature, which you can use throughout your
    Reconcile() function.

Others

  • Add ability for the delegating client to avoid caching objects (#1249) -- Impact: client.NewDelegatingClient() returns an error, and can accept GVKs to avoid caching

  • Use application/vnd.kubernetes.protobuf as content-type if possible (#1149) -- Impact: REST configs use a protobuf content-type when possible (object is not unstructured), minor changes to low-level function signatures

  • ComponentConfig Implementation (#891) -- Impact: a Manager can be configured by a ControllerManagerConfiguration or a custom defined configuration file. See the examples for usage details

  • DynamicRestMapper: return NoMatchError when resource doesn't exist (#1151) -- Impact: handle meta.NoKindMatchError/meta.NoResourceMatchError instead of apiutil.ErrRateLimited, which has been removed

  • admission responses with raw Status (#1129) -- Impact: APIStatus errors returned from high-level admission webhooks will now populate an admission response status (status codes, etc). If this is unintended, use a different error type.

  • Add support to read webhook configurations from files for WebhookInstallOptions (#1080) -- Impact: update envtest.WebhookInstallOptions.{DirectoryPaths -> Paths}

  • Expose RESTMapper on Client interface (#1109)

  • Expose Client runtime.Scheme (#1058)

  • Simplify usage of EnqueueRequestsFromMapFunc (#1119)

Removed Deprecated Items

  • Remove deprecated pkg/runtime/signals package (#1108) -- Impact: migrate to pkg/manager/signals

  • Remove deprecated pkg/runtime/scheme (#1107) -- Impact: migrate to pkg/scheme

  • Remove deprecated For/WithConfig from controller builder (#1102) -- Impact: update Builder.ForType() to Builder.For() and use builder.ControllerManagedBy() to pass a Manager's rest.Config to a Builder

  • Remove deprecated client.ConstantPatch function (#1103) -- Impact: update client.ConstantPatch to client.RawPatch

  • Remove deprecated pkg/client options (#1112) -- Impact: update client.{Create,Update,Path}DryRunAll to client.DryRunAll and client.MatchingField to client.MatchingFields

  • Remove reconciletest deprecated package (#1106) -- Impact: update your FakeReconciler controller tests to envtest-based tests

  • Remove deprecated pkg/runtime/log package and utils (#1105) -- Impact: migrate to pkg/log

  • Remove {Add,Remove}FinalizerWithError utils (#1104) -- Impact: use controllerutil.{Add,Remove}Finalizer() directly

✨ New Features

  • Add fake.NewClientBuilder to build new fake clients (#1281)
  • Allow passing the assets path bin via the env config (#1214)
  • Update k8s version in envtest (#1269)
  • Add predicate for annotations change on update event (#1254)
  • Updating Component Config error messages (#1251)
  • ComponentConfig alias for cfg.File() (#1244)
  • Allow to use builder.OnlyMetadata option with Watches (#1242)
  • metadata-only watches (#1174)
  • Zap: Add JSONEncoder and ConsoleEncoder opts (#1206)
  • envtest utility, defaultable flags (#972)
  • CreateOrPatch (#850)
  • Add error check for multiple apiTypes as reconciliation object (#1176)
  • Allow admission responses to send warnings (#1157)
  • Make leader election resourcelock configurable (#1147)
  • Update k8s.io dependencies to v0.19.0 (#1145)
  • Added Encoder Config Options field. (#915)
  • Add metrics for total workers and active workers (#1125)
  • Allow configuring LeaderElectionReleaseOnCancel (#1126)
  • Added the LabelSelectorPredicate function for filtering events (#1121)

🐛 Bug Fixes

  • Inject manager's logger instead of internal one (#1289)
  • Wait for metadata cache to sync (#1276)
  • Fix use of UnstructuredList with unregistered typed (#1238)
  • Fix the unserved version CRD install timeout in envtest (#1189)
  • Tracker upgrade should use gvk from scheme (#1213)
  • Controller reconcileHandler shouldn't stop a worker on error (#1196)
  • add error check when no apiType is provided for reconciliation (#1182)
  • Ensure that webhook server is thread/start-safe (#1155)
  • Controller.Watch() should not store watches if already started (#1163)
  • Source.Channel: Cope with pre-existing events in the channel (#1146)
  • Handle empty contexts in log.FromContext (#1141)
  • Controller: Return error when started more than once (#1139)
  • Avoid the redirection to /healthz/ when calling /healthz (#1134)
  • Fakeclient: Honor AllowUnconditionalUpdate and AllowCreateOnUpdate for resources that support it (#926)
  • Try to avoid event handling leaks (#1089)

📖 Documentation

  • fix minor typo for the GracefulShutdownTimeout field comments (#1239)
  • Improve docs for client.Object (#1231)
  • Add more details for what's included in a logger (#1203)
  • Be more specific about compat in VERSIONING (#1199)
  • Update versioning to reference common guidelines (#1198)
  • Fix typo (#1153)

🌱 Others

  • Add test that checks List works on UnstructuredList not in Scheme (#1288)
  • AddToProtobufScheme: Take AddToScheme, not Schemebulilder (#1279)
  • Use go-logr context functions (#1277)
  • Specify buckets for "controller_runtime_reconcile_time_seconds" histogram metrics (#1273)
  • Add back error logging for Reconcile implementation (#1245)
  • Use lowercase space separated keys (#1241)
  • Remove duplicate lines in controller.go (#1240)
  • Add controller.GetLogger (#1204)
  • Add ctrl.{LoggerFrom, LoggerInto} (#1202)
  • Use kubebuilder-release-tools (#1197)
  • Expose handler.MapFunc to allow implementers to test mappers (#1194)
  • Update Go mod version to 1.15 (#1187)
  • Un-deprecate NewFakeClient (#1101)
  • Proposal to extract cluster-specifics out of the Manager (#1075)
  • Update dependencies to v0.19.2 (#1170)
  • Update json-patch to v4.9.0 (#1136)
  • Fix typo in pull_request_template.md (#1133)
  • Propagate context on Manager.Start(...) (#1205) (intermediate change to #1116)
  • rename GetControllerManagerConfiguration to Complete (#1253) (intermediate change)

Thanks to all our contributors! 😊

v0.6.5

22 Jan 15:44
ef9edab
Compare
Choose a tag to compare

Changes since v0.6.4

🐛 Bug Fixes

  • client.List should check on UnstructuredList, not Unstructured (#1287)
  • Wait for metadata cache to sync (#1282)

Thanks to all our contributors! 😊

v0.5.14

03 Dec 23:05
8d52513
Compare
Choose a tag to compare

Changes since v0.5.13

🐛 Bug Fixes

  • client.List should check on UnstructuredList, not Unstructured (#1286)

Thanks to all our contributors! 😊

v0.7.0-alpha.8

02 Dec 22:48
f349d96
Compare
Choose a tag to compare
v0.7.0-alpha.8 Pre-release
Pre-release

🚨 This is an ALPHA RELEASE. Use it only for testing purposes, if you find any bugs file an issue.