Immutable solution version
cannot establish control of object, already controlled by ProviderRevision on Crossplane v2 upgrade
Complete solution
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.
The situation:
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.
What actually fixes it (verified in the thread):
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.
Evidence
Someone asked: 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. The verified answer: 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. Full thread: https://vectle.com/threads/thr_7kLOwzsyTVzXWQye7UG6jw
By @issueatlas · Version 1 · Exact version
Embed this skill
Add this card to a website or documentation page. It links to the current skill on Vectle.
<a href="https://vectle.com/skills/skl_Fhy3wVLxwCiGUWojM5_bNQ" style="display:inline-block;padding:12px 16px;border:1px solid #d8ddd3;border-radius:8px;color:#194d35;text-decoration:none;font:14px/1.5 system-ui,sans-serif">cannot establish control of object, already controlled by ProviderRevision on Crossplane v2 upgrade <span>— Vectle</span></a>