Skip to content

crossplane 2.3.0#284101

Open
BrewTestBot wants to merge 1 commit into
mainfrom
bump-crossplane-2.3.0
Open

crossplane 2.3.0#284101
BrewTestBot wants to merge 1 commit into
mainfrom
bump-crossplane-2.3.0

Conversation

@BrewTestBot
Copy link
Copy Markdown
Contributor

Created by brew bump


Created with brew bump-formula-pr.

Details

release notes
The `v2.3.0` release is a regular quarterly Crossplane release that is focused on maturing a number of key areas of functionality across the project, as Crossplane continues to become more capable, more reliable, and more performant for your production workloads. This release includes a new high-fidelity local rendering engine, finer-grained reconciliation control for both XRs and managed resources, new alpha deletion protection for Provider packages, and a wide range of fixes and reliability improvements. It also includes security fixes in Crossplane's Go toolchain and dependencies.

ℹ️ Extended support for v1.20

Because v1.20 is the last minor release of the v1 series and major version upgrades require additional planning for users, v1.20 will continue to receive critical fixes. The final EOL date for v1.20 is to be determined.

⚠️ Upgrade from v2.2

It is strongly advised to upgrade to v2.3 from the previous minor version, which is v2.2. Upon upgrade for each minor release, Crossplane performs any necessary migrations of its CRDs to ensure the latest versions are stored in the Kubernetes API server. Therefore, it is important to upgrade sequentially through one minor version at a time as described in the upgrade docs.

🚨 Notable and Breaking Changes

  • github.com/crossplane/crossplane/apis/v2 is now a separate Go module from the rest of Crossplane. apis: Make apis a separate go module crossplane/crossplane#7019
    • External consumers of Crossplane APIs should update their dependencies from github.com/crossplane/crossplane/v2/apis to github.com/crossplane/crossplane/apis/v2.
    • The common APIs from crossplane-runtime have moved to github.com/crossplane/crossplane/apis/v2/core.
    • v1 and v2 of the common APIs have been collapsed into a single v2 package. The old v1.Resource* types are now v2.ClusterManagedResource* to differentiate them from v2.ManagedResource*, which are the namespaced versions.
  • The Crossplane CLI (formerly crank) has moved into its own repository, https://github.com/crossplane/cli, and will be released separately from Crossplane core going forward. Remove crank crossplane/crossplane#7355
    • A v2.3.0 release of the CLI is planned to coincide with the v2.3.0 release of Crossplane core and will be dual published to the typical release location on releases.crossplane.io to help ease the transition. After the v2.3.0 release, version numbers and release schedules will diverge as the Crossplane CLI will have its own independent release schedule. Learn more and provide feedback in design: Add a one-pager regarding versioning and releasing the CLI crossplane/crossplane#7350.

🎉 Highlights

  • High-fidelity render engine: crossplane render now drives the real composite reconciler via a new hidden crossplane internal render subcommand, instead of maintaining a parallel reimplementation. The output of crossplane render (and downstream tools like crossplane-diff) now matches what would actually happen in-cluster, eliminating differences between local rendering and real reconciliation. By default it pulls the Crossplane container image to run the reconcile, so a separate controller binary is not required. See #7280 and #7339.
  • Provider deletion protection: A new alpha feature automatically protects Provider packages from accidental deletion while instances of their managed resources still exist. When --enable-provider-deletion-protection is set, Crossplane will automatically create ClusterUsage resources that block Provider deletion through the existing Usage webhook. #7362
  • Per-resource reconciliation control: Two new annotations give users fine-grained control over when individual resources reconcile. crossplane.io/poll-interval overrides the controller-level poll interval for a specific resource (e.g. "24h", "30m"), and crossplane.io/reconcile-requested-at triggers an immediate reconciliation when its value changes. This works immediately for XRs, but requires providers to release a new version based on crossplane-runtime v.2.3.0 to gain this behavior for their managed resources #7239
  • Composition functions can now select all resources of a given kind: When a composition function returned a Requirements.ResourceSelector with only apiVersion and kind set (no matchName or matchLabels), Crossplane previously rejected this as an invalid request. A selector with no match field is now correctly interpreted as "all resources of that kind". #7241
  • Scale subresource for XRs: CompositeResourceDefinition can now configure the scale subresource on the XRs it defines, so composite resources can be scaled with kubectl scale and other standard tooling. #7004
  • Other notable improvements:
    • Improved docker network configuration support for crank render: A new render.crossplane.io/runtime-docker-network annotation on Function resources tells the Docker runtime which network function containers should join. This makes crossplane render work inside container jobs (such as GitHub Actions container jobs) where the default bridge network is unreachable from the caller. #7216
    • commonAnnotations in compositions: Compositions can now propagate a set of common annotations to every composed resource, mirroring the existing commonLabels behavior. #7211
    • crossplane beta validate now correctly resolves and caches dependencies that use semantic version ranges (e.g. ">=v0.6.0,<v1.0.0"), and adds an --update-cache flag to always check upstream for newer matching versions. #7050
    • crossplane beta trace adds a YAML output format. #7275
    • The XR circuit breaker now resets its state when the XR is deleted, so a new resource with the same name starts fresh instead of inheriting an open circuit. #7201
    • CompositionRevision and composite reconcilers now skip no-op status updates, eliminating an unnecessary reconcile loop that prevented steady state convergence. #7283

🏅 Release MVP

For the v2.3 release cycle, we'd like to recognize two amazing community members for their contributions and name them the v2.3 release MVPs! 🎉

  • @yordis delivered one of this release's headline features in #7239 as a first-time contributor to core Crossplane (but long time contributor to the Crossplane ecosystem 😉) : the per-resource reconciliation control. This work gives operators fine-grained control over when individual resources reconcile, and required coordinated changes across both the core composite reconciler and the managed reconciler in crossplane-runtime. Thank you @yordis!
  • @fernandezcuesta has had a sustained impact on the broader Crossplane ecosystem, contributing to and releasing a steady stream of community providers and extensions that expand what users can build on Crossplane, e.g. provider-kafka, provider-mongodbatlas, and provider-pagerduty. To top that off, they also landed new support in core Crossplane for commonAnnotations for compositions in #7211. Thank you, @fernandezcuesta!

What's Changed

New Contributors

Full Changelog: crossplane/crossplane@v2.2.0...v2.3.0

View the full release notes at https://github.com/crossplane/crossplane/releases/tag/v2.3.0.


@github-actions github-actions Bot added go Go use is a significant feature of the PR or issue bump-formula-pr PR was created using `brew bump-formula-pr` labels May 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bump-formula-pr PR was created using `brew bump-formula-pr` go Go use is a significant feature of the PR or issue

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant