Sitelet https://github.com/crossplane/crossplane/releases
Skip to content

Releases: crossplane/crossplane

v2.3.5

Choose a tag to compare

@jbw976 jbw976 released this 21 Aug 17:17
Immutable release. Only release title and notes can be modified.
4d314ce

v2.3.5 is a patch release scoped to fixing issues reported by users of Crossplane v2.3 and fixing security related issues in Crossplane's dependencies.

🎉 Highlights

  • Correct crank checksums for amd64 binaries (#7666, originally #7660): The published .sha256 files for linux_amd64 binaries had not matched the binaries themselves since v2.2.0, so any install script or Dockerfile that verified the amd64 checksum failed. Checksums are now calculated after Nix strips the binary, and the release workflow verifies them before uploading. Fixes #7467.
  • Unambiguous Usage index key (#7630, originally #7508): The deletion protection webhook indexed Usage resources by joining API group, kind, name, and namespace with .. Since groups and names can contain . themselves, two distinct resources could collapse to the same key, causing the webhook to block a deletion that should have been allowed. The key now joins with /, which cannot appear in any of those fields.
  • Dependency security updates: Bumps cel-go (#7761), golang.org/x/mod (#7743), and sigstore-go (#7678), plus a combined set of vulnerable dependency updates (#7650), to pick up upstream CVE fixes. crossplane-runtime is also bumped to v2.3.4 (#7765), which carries its own set of security dependency updates.

What's Changed

  • build: give every Go build its own writable HOME by @jbw976 in #7653
  • chore(deps): update vulnerable dependencies [security] (release-2.3) by @crossplane-renovate[bot] in #7650
  • [Backport release-2.3] use unambiguous separator for usage index key by @github-actions[bot] in #7630
  • Backport #7660 to release-2.3 by @adamwg in #7666
  • chore(deps): update module github.com/sigstore/sigstore-go to v1.2.1 [security] (release-2.3) by @crossplane-renovate[bot] in #7678
  • [Backport release-2.3] build: point docker-client at docker_29 in the nix overlay by @github-actions[bot] in #7706
  • chore(deps): lock file maintenance (release-2.3) by @crossplane-renovate[bot] in #7700
  • [Backport release-2.3] build: bump pinned nixpkgs channel from nixos-25.11 to nixos-26.05 by @jbw976 in #7720
  • chore(deps): update module golang.org/x/mod to v0.40.0 [security] (release-2.3) by @crossplane-renovate[bot] in #7743
  • [Backport release-2.3] fix(ci): pin create-tag to v2 so apis/ submodule tagging works again by @jbw976 in #7748
  • chore(deps): lock file maintenance (release-2.3) by @crossplane-renovate[bot] in #7753
  • chore(deps): update module github.com/google/cel-go to v0.30.0 [security] (release-2.3) by @crossplane-renovate[bot] in #7761
  • chore(deps): bump crossplane-runtime to v2.3.4 by @jbw976 in #7765

Full Changelog: v2.3.4...v2.3.5

v2.2.5

Choose a tag to compare

@jbw976 jbw976 released this 21 Aug 17:21
Immutable release. Only release title and notes can be modified.
8b4704b

v2.2.5 is a patch release scoped to fixing issues reported by users of Crossplane v2.2 and fixing security related issues in Crossplane's dependencies.

🎉 Highlights

  • Correct crank checksums for amd64 binaries (#7665, originally #7660): The published .sha256 files for linux_amd64 binaries had not matched the binaries themselves since v2.2.0, so any install script or Dockerfile that verified the amd64 checksum failed. Checksums are now calculated after Nix strips the binary, and the release workflow verifies them before uploading. Fixes #7467.
  • Unambiguous Usage index key (#7629, originally #7508): The deletion protection webhook indexed Usage resources by joining API group, kind, name, and namespace with .. Since groups and names can contain . themselves, two distinct resources could collapse to the same key, causing the webhook to block a deletion that should have been allowed. The key now joins with /, which cannot appear in any of those fields.
  • Dependency security updates: Bumps cel-go (#7760), golang.org/x/mod (#7742), sigstore-go (#7677), and go-git (#7724), plus a combined set of vulnerable dependency updates (#7649), to pick up upstream CVE fixes. crossplane-runtime is also bumped to v2.2.4 (#7766), which carries its own set of security dependency updates.

What's Changed

  • build: give every Go build its own writable HOME by @jbw976 in #7654
  • chore(deps): update vulnerable dependencies [security] (release-2.2) by @crossplane-renovate[bot] in #7649
  • [Backport release-2.2] use unambiguous separator for usage index key by @github-actions[bot] in #7629
  • Backport #7660 to release-2.2 by @adamwg in #7665
  • chore(deps): update module github.com/sigstore/sigstore-go to v1.2.1 [security] (release-2.2) by @crossplane-renovate[bot] in #7677
  • build: point docker-client at docker_29 in the nix overlay [release-2.2] by @phisco in #7704
  • chore(deps): lock file maintenance (release-2.2) by @crossplane-renovate[bot] in #7699
  • [Backport release-2.2] build: bump pinned nixpkgs channel from nixos-25.11 to nixos-26.05 by @jbw976 in #7719
  • fix(deps): update module github.com/go-git/go-git/v5 to v5.19.2 [security] (release-2.2) by @crossplane-renovate[bot] in #7724
  • chore(deps): update module golang.org/x/mod to v0.40.0 [security] (release-2.2) by @crossplane-renovate[bot] in #7742
  • chore(deps): lock file maintenance (release-2.2) by @crossplane-renovate[bot] in #7752
  • chore(deps): update module github.com/google/cel-go to v0.30.0 [security] (release-2.2) by @crossplane-renovate[bot] in #7760
  • chore(deps): bump crossplane-runtime to v2.2.4 by @jbw976 in #7766

Full Changelog: v2.2.4...v2.2.5

v1.20.12

Choose a tag to compare

@jbw976 jbw976 released this 21 Aug 17:24
Immutable release. Only release title and notes can be modified.
1dfb658

v1.20.12 is a patch release scoped to fixing issues reported by users of Crossplane v1.20 and fixing security related issues in Crossplane's dependencies.

🎉 Highlights

  • Dependency security updates: Bumps the Go toolchain to 1.25.13 (#7755), go-git (#7722), and golang.org/x/mod (#7740), plus two combined sets of vulnerable dependency updates (#7646, #7675), to pick up upstream CVE fixes. crossplane-runtime is also bumped to v1.20.11 (#7767), which carries its own set of security dependency updates.

What's Changed

  • fix(deps): update vulnerable dependencies [security] (release-1.20) by @crossplane-renovate[bot] in #7646
  • chore(deps): update amazon/aws-cli docker tag to v2.36.13 (release-1.20) by @crossplane-renovate[bot] in #7514
  • chore(deps): update gcr.io/distroless/static docker digest to 9197324 (release-1.20) by @crossplane-renovate[bot] in #7512
  • chore(deps): update vulnerable dependencies [security] (release-1.20) by @crossplane-renovate[bot] in #7675
  • fix(deps): update module github.com/go-git/go-git/v5 to v5.19.2 [security] (release-1.20) by @crossplane-renovate[bot] in #7722
  • chore(deps): update module golang.org/x/mod to v0.40.0 [security] (release-1.20) by @crossplane-renovate[bot] in #7740
  • build(deps): bump Go to 1.25.13 [security] [release-1.20] by @phisco in #7755
  • chore(deps): bump crossplane-runtime to v1.20.11 by @jbw976 in #7767

Full Changelog: v1.20.11...v1.20.12

v2.4.0

Choose a tag to compare

@jbw976 jbw976 released this 20 Aug 14:42
Immutable release. Only release title and notes can be modified.
61fa450

The v2.4.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 the ability to watch required resources and reconcile XRs immediately when they change, scale to zero for safe-start capable providers, release artifacts that are vulnerability scannable, and a wide range of fixes and reliability improvements. It also includes security fixes in Crossplane's Go toolchain and dependencies.

🚨 v1.20 end-of-life (EOL) November 2026

This v2.4 release marks the final release cycle where v1.20 will be maintained.

When v2.5 is released in Nov 2026, v1.20 will reach its EOL and no longer receive any support or maintenance by the Crossplane project. Until that time, we will continue to provide critical fixes and security related dependency updates to v1.20.

Important

This EOL notice applies only to the v1.20 release. v1 legacy workloads like Claims and cluster scoped resources remain supported in Crossplane v2 through extensive backwards compatibility support.

Is your control plane ready for v2?

Upgrading to Crossplane v2 does not require any migration as part of the upgrade process, with the exception of the minimal breaking changes explicitly called out in the v2 documentation. If your control plane is not affected by those changes, you can simply upgrade to v2 right away.

To better assist Crossplane users in determining if their control planes are affected by any of the breaking changes in v2, we have released a v2 readiness checker tool in the v1.20 Crossplane CLI that can be invoked via crossplane beta upgrade check. You can read all about this tool in the following resources:

Crossplane Downstream Distributions

Downstream distributions are eligible to continue their extended support and maintenance for their releases that are based on upstream Crossplane's v1.20. Check with your vendor for more details if you are using a downstream distribution of Crossplane.

🚨 v2.4 Notable and Breaking Changes

  • ⚠️ The Crossplane CLI is no longer published to releases.crossplane.io. New CLI releases go only to cli.crossplane.io, under the binary name crossplane rather than crank. This completes the CLI's move to https://github.com/crossplane/cli, which was announced in the v2.3.0 release notes and dual published to both locations for v2.3.0 to ease the transition.
    • f you are using custom installation scripts or CI steps that download the CLI directly from releases.crossplane.io, update them to use cli.crossplane.io, and update any firewall or proxy rule that allows releases.crossplane.io to now allow cli.crossplane.io instead.
      • Users of the install.sh script as their installation procedure are unaffected.
    • The CLI now follows its own release schedule, so a CLI release will not accompany every core Crossplane release and the two version numbers have diverged.
    • Documentation and installation instructions for the Crossplane CLI can be found on https://docs.crossplane.io/cli/latest/.
  • Package revision names are now derived from both the package digest and the package's metadata.generation, so any change to a package's spec produces a new PackageRevision. #7473
    • This fixes the long standing issue where changing a package's runtimeConfigRef reused the existing revision, along with its stale runtime settings. #5068
    • When upgrading to v2.4, every installed package gets a new revision, with a new name, on its first reconcile.
    • ⚠️ The Pods for Providers and Functions will be restarted for this new revision.
  • Package runtime objects (Deployment, ServiceAccount, Service, and TLS Secrets) are now applied with server-side apply under the pkg.crossplane.io/runtime field manager, replacing the previous merge patch applicator. #7563
    • A field you remove from a DeploymentRuntimeConfig is now removed from the live runtime object, rather than lingering until that object is replaced. #4817
    • Additions that Crossplane doesn't declare are left alone rather than replaced along with the array that held them, e.g. an injected sidecar container or an extra volume added out of band now survives a reconcile.
  • The RUNTIME printer column on ProviderRevision and FunctionRevision was renamed to RUNTIME-HEALTHY, and a new RUNTIME-ACTIVE column was added. #7586
    • Update any tooling that reads kubectl get providerrevision or kubectl get functionrevision output by column position.
  • The type label on the engine_watches_started_total and engine_watches_stopped_total metrics changed from ComposedResource to Dependency, now that a single watch mechanism covers both composed and required resources. #7572
    • Update any dashboards or alerts that filter on that label value.

🎉 Highlights

  • Watching required resources: Composition functions can require resources they don't compose, but Crossplane didn't watch them, so a change to a required resource didn't reconcile the XRs that required it until their next poll. Crossplane now tracks the resources each XR depends on and drives watches from that. A change to a required resource now reconciles the XRs that required it the same way a change to a composed resource does. This works when realtime compositions are enabled, which is the default. See design/one-pager-watching-required-resources.md and #7572.
  • Safe-start provider runtimes scale to zero until activated: A provider with the safe-start capability runs no managed resource controllers while all of its ManagedResourceDefinitions are inactive, so there is no reason to run its pods. Crossplane now creates such a provider's runtime Deployment with zero replicas and scales it up once its first MRD becomes active, such as through a matching ManagedResourceActivationPolicy. Installing a broad set of providers no longer costs you a running pod for each one that has nothing to reconcile yet. #7586
    • A new RuntimeActive condition on ProviderRevision and FunctionRevision makes this visible. It is False with reason AwaitingActivation while the runtime is intentionally scaled to zero and True once it has been scaled up. RuntimeHealthy stays healthy in both cases, and the package's Healthy condition surfaces the awaiting state with the same reason.
    • Scaling to zero takes precedence over an explicit spec.replicas in a DeploymentRuntimeConfig, which is now read as how many replicas to run while running, rather than a demand to always be running. #7639
  • Vulnerability-scannable container images: Crossplane container images are now built with nixpkgs' buildGoModule, which includes the full Go dependency list into the binary. Scanners such as grype and trivy previously were only able to discover the Crossplane main module and the Go standard library, so CVEs in our third-party dependencies were not visible to them. Now Crossplane and its complete set of dependencies are visible to security scanner tools. #7549
  • More reliable package runtime management: Server-side apply for package runtime objects means a field you remove from a DeploymentRuntimeConfig is now actually removed from the live Deployment instead of lingering (#7563, fixing #4817). Deactivating a revision also no longer deletes a runtime Deployment that another revision controls, which could happen when a DeploymentRuntimeConfig pins a stable deploymentTemplate.metadata.name (#7561).
  • Hardening across composition and package paths: Several changes tighten paths where a caller could reach further than intended. The composed resource garbage collector now only deletes resources whose controller reference points back to the XR, so spec.resourceRefs can no longer be used to make the composite controller delete arbitrary resources (#7627). The claim to XR syncers now strip XR machinery fields such as resourceRefs and the crossplane stanza, which a claim could otherwise smuggle through an XRD schema that sets x-kubernetes-preserve-unknown-fields: true (#7626).
  • Version-aware docs search: Searching from an older version of the docs, such as /v1.20/, used to return results from all versions, potentially returning features and APIs that don't exist in the version you're actually reading. Search is now scoped to the version you're on, results carry a clearly visible version badge, and pages from older versions show a banner explaining that, with a link to latest. Thanks to @haarchri for this one in crossplane/docs#1051, so give it a try at https://docs.crossplane.io.
  • Security fixes in dependencies: The Go version Crossplane builds/runs with was bumped to pick up standard library CVE fixes, alongside a steady stream of security updates to Crossplane's Go dependencies across this release cycle.
  • Other notable improvements:
    • Several fixes to...
Read more

v2.4.0-rc.1

v2.4.0-rc.1 Pre-release
Pre-release

Choose a tag to compare

@jbw976 jbw976 released this 14 Aug 16:06
Immutable release. Only release title and notes can be modified.
eb79a1b

❗ Important

Crossplane version v2.4.0-rc.1 is a release candidate intended to collect input from the community and offer users an opportunity to experiment with Crossplane in non-production environments before the official release of version v2.4.0.

Warning

This is a pre-release; do not use it in production environments!

To install Crossplane with this release:

helm repo add crossplane-stable https://charts.crossplane.io/stable --force-update
helm install crossplane --namespace crossplane-system --create-namespace crossplane-stable/crossplane --devel

🚨 Notable and Breaking Changes

  • ⚠️ The Crossplane CLI is no longer published to releases.crossplane.io. New CLI releases go only to cli.crossplane.io, under the binary name crossplane rather than crank. This completes the CLI's move to https://github.com/crossplane/cli, which was announced in the v2.3.0 release notes and dual published to both locations for v2.3.0 to ease the transition.
    • f you are using custom installation scripts or CI steps that download the CLI directly from releases.crossplane.io, update them to use cli.crossplane.io, and update any firewall or proxy rule that allows releases.crossplane.io to now allow cli.crossplane.io instead.
      • Users of the install.sh script as their installation procedure are unaffected.
    • The CLI now follows its own release schedule, so a CLI release will not accompany every core Crossplane release and the two version numbers have diverged.
    • Documentation and installation instructions for the Crossplane CLI can be found on https://docs.crossplane.io/cli/latest/.
  • Package revision names are now derived from both the package digest and the package's metadata.generation, so any change to a package's spec produces a new PackageRevision. #7473
    • This fixes the long standing issue where changing a package's runtimeConfigRef reused the existing revision, along with its stale runtime settings. #5068
    • When upgrading to v2.4, every installed package gets a new revision, with a new name, on its first reconcile.
    • ⚠️ The Pods for Providers and Functions will be restarted for this new revision.
  • Package runtime objects (Deployment, ServiceAccount, Service, and TLS Secrets) are now applied with server-side apply under the pkg.crossplane.io/runtime field manager, replacing the previous merge patch applicator. #7563
    • A field you remove from a DeploymentRuntimeConfig is now removed from the live runtime object, rather than lingering until that object is replaced. #4817
    • Additions that Crossplane doesn't declare are left alone rather than replaced along with the array that held them, e.g. an injected sidecar container or an extra volume added out of band now survives a reconcile.
  • The RUNTIME printer column on ProviderRevision and FunctionRevision was renamed to RUNTIME-HEALTHY, and a new RUNTIME-ACTIVE column was added. #7586
    • Update any tooling that reads kubectl get providerrevision or kubectl get functionrevision output by column position.
  • The type label on the engine_watches_started_total and engine_watches_stopped_total metrics changed from ComposedResource to Dependency, now that a single watch mechanism covers both composed and required resources. #7572
    • Update any dashboards or alerts that filter on that label value.

🎉 Highlights

  • Watching required resources: Composition functions can require resources they don't compose, but Crossplane didn't watch them, so a change to a required resource didn't reconcile the XRs that required it until their next poll. Crossplane now tracks the resources each XR depends on and drives watches from that. A change to a required resource now reconciles the XRs that required it the same way a change to a composed resource does. This works when realtime compositions are enabled, which is the default. See design/one-pager-watching-required-resources.md and #7572.
  • Safe-start provider runtimes scale to zero until activated: A provider with the safe-start capability runs no managed resource controllers while all of its ManagedResourceDefinitions are inactive, so there is no reason to run its pods. Crossplane now creates such a provider's runtime Deployment with zero replicas and scales it up once its first MRD becomes active, such as through a matching ManagedResourceActivationPolicy. Installing a broad set of providers no longer costs you a running pod for each one that has nothing to reconcile yet. #7586
    • A new RuntimeActive condition on ProviderRevision and FunctionRevision makes this visible. It is False with reason AwaitingActivation while the runtime is intentionally scaled to zero and True once it has been scaled up. RuntimeHealthy stays healthy in both cases, and the package's Healthy condition surfaces the awaiting state with the same reason.
    • Scaling to zero takes precedence over an explicit spec.replicas in a DeploymentRuntimeConfig, which is now read as how many replicas to run while running, rather than a demand to always be running. #7639
  • Vulnerability-scannable container images: Crossplane container images are now built with nixpkgs' buildGoModule, which includes the full Go dependency list into the binary. Scanners such as grype and trivy previously were only able to discover the Crossplane main module and the Go standard library, so CVEs in our third-party dependencies were not visible to them. Now Crossplane and its complete set of dependencies are visible to security scanner tools. #7549
  • More reliable package runtime management: Server-side apply for package runtime objects means a field you remove from a DeploymentRuntimeConfig is now actually removed from the live Deployment instead of lingering (#7563, fixing #4817). Deactivating a revision also no longer deletes a runtime Deployment that another revision controls, which could happen when a DeploymentRuntimeConfig pins a stable deploymentTemplate.metadata.name (#7561).
  • Hardening across composition and package paths: Several changes tighten paths where a caller could reach further than intended. The composed resource garbage collector now only deletes resources whose controller reference points back to the XR, so spec.resourceRefs can no longer be used to make the composite controller delete arbitrary resources (#7627). The claim to XR syncers now strip XR machinery fields such as resourceRefs and the crossplane stanza, which a claim could otherwise smuggle through an XRD schema that sets x-kubernetes-preserve-unknown-fields: true (#7626).
  • Version-aware docs search: Searching from an older version of the docs, such as /v1.20/, used to return results from all versions, potentially returning features and APIs that don't exist in the version you're actually reading. Search is now scoped to the version you're on, results carry a clearly visible version badge, and pages from older versions show a banner explaining that, with a link to latest. Thanks to @haarchri for this one in crossplane/docs#1051, so give it a try at https://docs.crossplane.io.
  • Security fixes in dependencies: The Go version Crossplane builds/runs with was bumped to pick up standard library CVE fixes, alongside a steady stream of security updates to Crossplane's Go dependencies across this release cycle.
  • Other notable improvements:
    • Several fixes to the render engine that backs crossplane render: an XRD schema can now be supplied to crossplane internal render (#7452), requirements are returned even when a function returns a fatal result (#7455), a namespace is set on injected resource references only for cluster-scoped XRs, matching the real reconciler (#7523), and an input XR fetched from a real cluster keeps its own UID so its observed resources are read correctly, with clear errors when observed resources don't line up with the XR (#7544).
    • The sha256 files published with release binaries are now calculated after Nix strips the binary, so amd64 checksums match what you download. They didn't for v2.2.0 through v2.3.1, and CI now verifies checksums before uploading artifacts. #7660
    • A composed Usage no longer gets a redundant owner update on every reconcile, which could repeatedly trigger composition reconciliation and eventually open the XR circuit breaker. #7591
    • The deletion protection field index now uses a separator that can't appear in a group, kind, name, or namespace, so two distinct resources can no longer collide and block a deletion that should be allowed. #7508
    • Sorting of spec.resourceRefs now includes the namespace, so references stay stable when composed resources share a name across namespaces. #7341

📖 Full Changelog

Read more

v2.3.4

Choose a tag to compare

@lsviben lsviben released this 23 Jul 14:12
Immutable release. Only release title and notes can be modified.
c2670a7

v2.3.4 is a patch release scoped to fixing issues reported by users of Crossplane v2.3 and fixing security related issues in Crossplane and its dependencies.

🎉 Highlights

  • Fixed repeated owner updates for composed Usages (#7597, originally #7591): The Usage controller only checked the first ownerReference when deciding whether the spec.by resource already owned the Usage. A Usage created by a Composition already has the composite as its first owner, so spec.by ended up as a later owner and the controller issued an unnecessary update on every reconciliation — repeatedly re-triggering composition reconciliation and eventually opening the XR circuit breaker. It now checks all owner references.
  • crossplane render fixes (#7599, originally #7544): render no longer overwrites the input XR's UID when one is already set, and now validates observed resources before proceeding with the render.
  • Vulnerability-scannable images (#7574): Container images are now built with buildGoModule (replacing gomod2nix), so published images can be scanned by standard vulnerability tooling.
  • Dependency security updates: Bumps grpc / golang.org/x/net / golang.org/x/text (#7618, #7614, #7615) and the sigstore stack — cosign (#7559), rekor (#7560), timestamp-authority (#7570), sigstore-go (#7583) — to pick up upstream CVE fixes. See ## What's Changed for the full list.

What's Changed

  • chore(deps): update module github.com/sigstore/rekor to v1.5.2 [security] (release-2.3) by @crossplane-renovate[bot] in #7560
  • chore(deps): update module github.com/sigstore/cosign/v3 to v3.0.6 [security] (release-2.3) by @crossplane-renovate[bot] in #7559
  • chore(deps): update module github.com/sigstore/timestamp-authority/v2 to v2.1.0 [security] (release-2.3) by @crossplane-renovate[bot] in #7570
  • [Backport release-2.3] build(nix): build with buildGoModule so images are vulnerability-scannable by @phisco in #7574
  • chore(deps): update module github.com/sigstore/sigstore-go to v1.2.0 [security] (release-2.3) by @crossplane-renovate[bot] in #7583
  • fix(deps): combined security bumps (grpc, x/net, x/text) (release-2.3) by @lsviben in #7618
  • [Backport release-2.3] fix: avoid repeated owner updates for composed Usages by @github-actions[bot] in #7597
  • [Backport release-2.3] render: Don't overwrite the input XR's UID if it has one and validate observed resources by @github-actions[bot] in #7599
  • chore(deps): update module golang.org/x/text to v0.39.0 [security] (release-2.3) by @crossplane-renovate[bot] in #7615
  • chore(deps): update module golang.org/x/net to v0.56.0 [security] (release-2.3) by @crossplane-renovate[bot] in #7614

Full Changelog: v2.3.3...v2.3.4

v2.2.4

Choose a tag to compare

@lsviben lsviben released this 23 Jul 14:12
Immutable release. Only release title and notes can be modified.
b34b673

v2.2.4 is a patch release scoped to fixing issues reported by users of Crossplane v2.2 and fixing security related issues in Crossplane and its dependencies.

🎉 Highlights

  • Fixed repeated owner updates for composed Usages (#7596, originally #7591): The Usage controller only checked the first ownerReference when deciding whether the spec.by resource already owned the Usage. A Usage created by a Composition already has the composite as its first owner, so spec.by ended up as a later owner and the controller issued an unnecessary update on every reconciliation — repeatedly re-triggering composition reconciliation and eventually opening the XR circuit breaker. It now checks all owner references.
  • Vulnerability-scannable images (#7575): Container images are now built with buildGoModule (replacing gomod2nix), so published images can be scanned by standard vulnerability tooling.
  • Dependency security updates: Bumps grpc / golang.org/x/net / golang.org/x/text (#7619) and the sigstore stack — cosign (#7558), rekor (#7557), timestamp-authority (#7569), sigstore-go (#7582) — to pick up upstream CVE fixes. See ## What's Changed for the full list.

What's Changed

  • chore(deps): update module github.com/sigstore/rekor to v1.5.2 [security] (release-2.2) by @crossplane-renovate[bot] in #7557
  • fix(deps): update module github.com/sigstore/cosign/v3 to v3.0.6 [security] (release-2.2) by @crossplane-renovate[bot] in #7558
  • chore(deps): update module github.com/sigstore/timestamp-authority/v2 to v2.1.0 [security] (release-2.2) by @crossplane-renovate[bot] in #7569
  • [Backport release-2.2] build(nix): build with buildGoModule so images are vulnerability-scannable by @phisco in #7575
  • chore(deps): update module github.com/sigstore/sigstore-go to v1.2.0 [security] (release-2.2) by @crossplane-renovate[bot] in #7582
  • fix(deps): combined security bumps (grpc, x/net, x/text) (release-2.2) by @lsviben in #7619
  • [Backport release-2.2] fix: avoid repeated owner updates for composed Usages by @github-actions[bot] in #7596

Full Changelog: v2.2.3...v2.2.4

v2.1.8

Choose a tag to compare

@lsviben lsviben released this 23 Jul 14:11
Immutable release. Only release title and notes can be modified.
cb47d74

v2.1.8 is a patch release scoped to fixing issues reported by users of Crossplane v2.1 and fixing security related issues in Crossplane's dependencies.

🎉 Highlights

  • Fixed repeated owner updates for composed Usages (#7622, originally #7591): The Usage controller only checked the first ownerReference when deciding whether the spec.by resource already owned the Usage. A Usage created by a Composition already has the composite as its first owner, so spec.by ended up as a later owner and the controller issued an unnecessary update on every reconciliation — repeatedly re-triggering composition reconciliation and eventually opening the XR circuit breaker. It now checks all owner references.
  • Dependency security updates: Bumps the Go toolchain to 1.25.12 (#7577), grpc / golang.org/x/net / golang.org/x/text (#7620, #7609), and the sigstore stack — cosign (#7556), rekor (#7555), timestamp-authority (#7568), sigstore-go (#7581) — to pick up upstream CVE fixes. See ## What's Changed for the full list.

What's Changed

  • chore(deps): update module github.com/sigstore/rekor to v1.5.2 [security] (release-2.1) by @crossplane-renovate[bot] in #7555
  • chore(deps): update module github.com/sigstore/timestamp-authority/v2 to v2.1.0 [security] (release-2.1) by @crossplane-renovate[bot] in #7568
  • fix(deps): update module github.com/sigstore/cosign/v2 to v2.6.3 [security] (release-2.1) by @crossplane-renovate[bot] in #7556
  • build(deps): bump Go to 1.25.12 [security] [release-2.1] by @phisco in #7577
  • chore(deps): update module github.com/sigstore/sigstore-go to v1.2.0 [security] (release-2.1) by @crossplane-renovate[bot] in #7581
  • fix(deps): combined security bumps (grpc, x/net, x/text) (release-2.1) by @lsviben in #7620
  • chore(deps): update module golang.org/x/text to v0.39.0 [security] (release-2.1) by @crossplane-renovate[bot] in #7609
  • [Backport release-2.1] fix: avoid repeated owner updates for composed Usages by @phisco in #7622

Full Changelog: v2.1.7...v2.1.8

v1.20.11

Choose a tag to compare

@lsviben lsviben released this 23 Jul 14:11
Immutable release. Only release title and notes can be modified.
7e2a292

v1.20.11 is a patch release scoped to fixing issues reported by users of Crossplane v1.20 and fixing security related issues in Crossplane's dependencies.

🎉 Highlights

  • Fixed repeated owner updates for composed Usages (#7623, originally #7591): The Usage controller only checked the first ownerReference when deciding whether the spec.by resource already owned the Usage. A Usage created by a Composition already has the composite as its first owner, so spec.by ended up as a later owner and the controller issued an unnecessary update on every reconciliation — repeatedly re-triggering composition reconciliation and eventually opening the XR circuit breaker. It now checks all owner references.
  • Dependency security updates: Bumps the Go toolchain to 1.25.12 (#7578), grpc / golang.org/x/net / golang.org/x/text (#7621), github.com/sigstore/rekor (#7553), and the alpine base image to v3.24 (#7513) to pick up upstream CVE fixes. See ## What's Changed for the full list.

What's Changed

  • chore(deps): update module github.com/sigstore/rekor to v1.5.2 [security] (release-1.20) by @crossplane-renovate[bot] in #7553
  • build(deps): bump Go to 1.25.12 [security] [release-1.20] by @phisco in #7578
  • chore(deps): update alpine docker tag to v3.24 (release-1.20) by @crossplane-renovate[bot] in #7513
  • fix(deps): combined security bumps (grpc, x/net, x/text) (release-1.20) by @lsviben in #7621
  • [Backport release-1.20] fix: avoid repeated owner updates for composed Usages by @phisco in #7623

Full Changelog: v1.20.10...v1.20.11

v2.3.3

Choose a tag to compare

@jbw976 jbw976 released this 22 Jun 17:32
Immutable release. Only release title and notes can be modified.
09ffaea

v2.3.3 is a patch release scoped to fixing issues reported by users of Crossplane v2.3 and fixing security related issues in Crossplane's dependencies.

🎉 Highlights

  • Fixed package signature verification TOCTOU (GHSA-mf7q-r4rv-jv94): A time-of-check-to-time-of-use flaw could let a malicious OCI registry pass signature verification with a signed image and then serve unsigned content for installation. For v2.3 this fix ships via the crossplane-runtime v2.3.3 bump in #7541, since the affected code moved from crossplane to crossplane-runtime during the v2.3 milestone. See the crossplane-runtime v2.3.3 release notes for the full details.
  • Correct namespace on injected resource refs in crossplane render: crossplane render previously set a namespace on every injected resource reference, which is inaccurate for namespaced XRs (whose resource refs are local and carry no namespace) and broke composition functions with strict schemas, such as the generated KCL bindings used in control plane projects. Render now matches the real reconciler and sets the namespace only for cluster-scoped XRs. Backported in #7525, originally fixed in #7523.
  • Dependency security updates: This release also bumps the Go toolchain to 1.25.11 and golang.org/x/net and golang.org/x/sys in the apis module to pick up CVE fixes (#7530). See ## What's Changed below for the full list.

What's Changed

  • [Backport release-2.3] render: Set namespace on injected resource refs only for cluster-scoped XRs by @github-actions[bot] in #7525
  • [release-2.3] bump Go to 1.25.11 and apis golang.org/x/net, x/sys for CVEs [security] by @phisco in #7530
  • Update crossplane-runtime to v2.3.3 by @lsviben in #7541

Full Changelog: v2.3.2...v2.3.3