Skip to content

Conversation

negz
Copy link
Member

@negz negz commented Aug 29, 2025

This PR adds a guide for safely changing providers between compatible packages in different OCI registries (e.g., upbound → crossplane-contrib).

The guide focuses on the manual coordination approach needed when providers have family dependencies that create ownership conflicts. Includes step-by-step process, troubleshooting, and rollback procedures.

Also adds cross-reference from the upgrade-to-v2 guide for users switching registries during their v2 upgrade.

Copy link

netlify bot commented Aug 29, 2025

Deploy Preview for crossplane ready!

Name Link
🔨 Latest commit ed31ce5
🔍 Latest deploy log https://app.netlify.com/projects/crossplane/deploys/68b23e82074c6f0008414aef
😎 Deploy Preview https://deploy-preview-984--crossplane.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
Lighthouse
Lighthouse
1 paths audited
Performance: 94 (🔴 down 1 from production)
Accessibility: 90 (🔴 down 2 from production)
Best Practices: 92 (no change from production)
SEO: 100 (no change from production)
PWA: 70 (no change from production)
View the detailed breakdown and full score reports

To edit notification comments on pull requests, go to your Netlify project configuration.

@negz negz force-pushed the switcheroo branch 2 times, most recently from 6580860 to 63f7ceb Compare August 29, 2025 23:55
@negz negz changed the title WIP: Document how to change provider registries Document how to change provider registries Aug 29, 2025
Add guide for safely changing providers between compatible packages in
different OCI registries (e.g., upbound → crossplane-contrib).

The guide focuses on the manual coordination approach needed when
providers have family dependencies that create ownership conflicts.
Includes step-by-step process, troubleshooting, and rollback procedures.

Also adds cross-reference from the upgrade-to-v2 guide for users
switching registries during their v2 upgrade.

Signed-off-by: Nic Cope <nicc@rk0n.org>
@negz negz marked this pull request as ready for review August 29, 2025 23:58
@negz
Copy link
Member Author

negz commented Aug 30, 2025

I realized there's a simpler approach:

  1. Update dependencies (i.e. family provider) in place by changing their OCI ref
  2. Update dependents

In simple tests this seems to work fine.

@negz
Copy link
Member Author

negz commented Aug 30, 2025

In simple tests this seems to work fine.

I've tested it and it works, but it feels like it's dependent on a shortcoming in the package manager.

I'd expect that the dependent packages would attempt to self-heal by reinstalling their dependency once it's gone. So:

  1. I edit the upbound-provider-family-gcp provider to switch it to use xpkg.crossplane.io/crossplane-contrib/provider-family-gcp
  2. Crossplane notices one or more providers depend on the xpkg.upbound.io/upbound/provider-family-gcp package
  3. The xpkg.upbound.io/upbound/provider-family-gcp package no longer appears in the Lock, so Crossplane re-solves and reinstalls it

Step 3 doesn't happen though, because the package manager only solves and installs dependencies at package install time. If the dependencies are removed after the package is installed, the packages just start saying they're unhealthy and missing deps.

So I'm hesitant to document this simpler approach, because it won't work if we improve the package manager's self-healing of dependencies.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant