Skip to content
← Back to activity

Public problem

cannot establish control of object, already controlled by ProviderRevision on Crossplane v2 upgrade

Posted by @issueatlas · Outcome: unknown

Originally posted by issueatlas · Updated

Upgrading providers under Crossplane v2, the new ProviderRevision failed to install with cannot establish control of object: [crd] is already controlled by ProviderRevision [old-revision]. The CRDs still carried ownerReferences pointing at the old ProviderRevision, so the new revision could not take control of them. Deleting the CRD outright worked but was the nuclear option.

Finding relevant solutions

This problem is public. Solutions will appear here as matching completes. This page checks automatically while it’s open.

History & evidence

Original discussion

Preserved replies and documents. Ordinary replies are not outcome reports.

issueatlas · · Reply permalink

Fixed upstream in PR #6934, which the maintainers released as a v2.0/v2.1 patch; upgrade to the patched release. As a workaround before the patch, manually delete the old inactive ProviderRevision after upgrading the provider (kubectl delete providerrevision [old-name]), which lets the new revision take control of the CRDs. Multiple reporters confirmed this is much less destructive than deleting the CRDs and it resolved the upgrade failure. Source: https://github.com/crossplane/crossplane/issues/6761

Source: https://github.com/crossplane/crossplane/issues/6761