github kubernetes-sigs/controller-runtime v0.9.0

latest releases: v0.18.2, v0.17.5, v0.16.6...
2 years ago

Changes since v0.8.3

🚨 Significant Changes 🚨

Envtest Refactor & Support for 1.20+ Clusters (#1486)

This adds support for newer Kubernetes clusters, particularly those that require the use of authentication & the secure port, as well as some refactors & deprecation.

By and large, these changes should be transparent for most users.

As a result of the removal of the insecure port in newer k8s versions, authentication & authorization are now on by default in envtest (and the secure port is used by default). The built-in REST config now returns an admin account, meaning perceived impact should be minimal in most cases -- if you're using the built-in Environment.Config, things should just work.

However, if you manually construct new REST configs from raw URLs, things will break. You'll need to migrate to using Environment.AddUser instead.

Additionally, a number of options on ControlPlane & APIServer around the secure & insecure ports are deprecated -- see the docs for more details.

Envtest Setup Tool (#1488)

A new tool has been introduced for setting up envtest binaries at sigs.k8s.io/controller-runtime/tools/setup-envtest. This replaces the existing hack/setup-envtest.sh script, so if you were depending on that, you should switch. See the docs for more information.

Kubernetes Dependencies

Now at v1.21.1.

⚠️ Breaking Changes

  • Update Kubernetes v1.21 dependencies and use Go 1.16 (#1389)
    moderate impact: if you're on an old Go version, it's time to upgrade 😉
  • Envtest should modify CRDs appropriately when using webhooks (#1525)
    minimal impact: one of the methods on WebhookInstallOptions had a signature change. Mostly internal, expected that this method is unlikely to be called directly.
  • Allow setting NewClientFunc w/o implementing an interface (#1473)
    moderate impact: If you're constructing a custom client, this'll change how you do so, but should make it easier in the long run.
  • Support global controller options in component config (#1371)
    minimal impact: adds new method to Manager interface, generally only implemented by CR)
  • Fix race in the delegating logger (#1361)
    minimal impact: exposed piece of internals was changed)
  • Fakeclient: Handle Finalizers (#869)
    moderate impact: Finalizers in the fakeclient now behave similiar to the kube api, i.E. an object with a finalizer will not actually be deleted upon Delete and Updating an object with a DeletionTimestamp to remove the finalizer will result in deletion

✨ New Features

  • Structured args in Testing (#1541) -- the use of templated args (Environment.KubeAPIServerFlags) is now deprecated -- use GetAPIServer().Configure() instead.
  • Clean up pkg/internal/testing (#1540)
  • Cleanup Webhook server setup (#1504)
  • EnvTest Binaries Setup Tool (#1488)
  • Add SelectorsByObject option to cache (#1435)
  • Simple helper for unmanaged webhook server (#1429)
  • pkg/log/zap: clarify zap level vs. logr verbosity (#1485)
  • Add ClientWithWatch for use in CLIs (#1460)
  • Add client.StrategicMergeFrom (#1406)
  • Add tests in controller that use source.Channel (#1373)
  • Revert injection deprecation logging until internal injection code use stops (#1382)
  • Update dependencies to Kubernetes v1.21.1 (#1536)
  • Adding certwatcher as an external package (#1441)
  • Adding TokenReview.auth.k8s.io/v1 webhook support (#1440)

🐛 Bug Fixes

  • Envtest should enable conversion only for convertible GVKs (#1532)
  • Envtest conversion mods should set strategy and review versions (#1531)
  • Honor LeaderElectionReleaseOnCancel (#1523)
  • Fakeclient: Fix List for unregistered type through unstructured (#1521)
  • Metadata client applies patch options (#1508)
  • Fakeclient: Support WithWatch (#1510)
  • Webhook servers should always start before cache syncs (#1512)
  • Add manager.Options.WebhookServer so webhook server can be set (#1500)
  • controllerutil.CreateOrPatch doesn't update not empty Status fields if Spec fields are specified (#1403)
  • Metadata only objects should always preserve GroupVersionKind (#1484)
  • Actually inject the scheme in StandaloneWebhook (#1490)
  • Fakeclient: Do not require ListKind (#1467)
  • Event recorder should not send events when broadcaster is stopped (#1451)
  • Fix the typo of UseExistingCluster comment (#1434)
  • Fix cache sync timeout functionality (#1428)
  • Deflake should update CRDs if already present in the cluster (#1430)
  • Controller: Wait for all reconciliations before shutting down (#1427)
  • Print webhook config options from scratch-env example (#1302)
  • Fix client.Apply and client.Merge to satisfy Patch (#1410)
  • Manager leader election: Don't reset restcfg UserAgent (#1401)
  • Fix a possible temporary directory leak (#1331)
  • Fix a race condition between leader election and recorder (#1379)
  • Handle unstructured CRD objects in envtest webhook mods (#1526)

🌱 Others

  • Use gomodules.xyz/jsonpatch/v2 v2.2.0 (#1533)

Thanks to all our contributors! 😊

Don't miss a new controller-runtime release

NewReleases is sending notifications on new releases.