Dependency resolution creates duplicate Provider with auto-derived name, ignoring existing Provider installations.
What happened?
Expected: When a package declares dependsOn for a provider that is already installed and Healthy (even if installed from a mirrored registry), Crossplane should reuse the existing Provider object and update it - keeping the system healthy. Actual: Dependency resolution installs an additional Provider object with an auto-derived name based on the package path (e.g., upbound-provider-), even though a functionally identical Provider is already installed under a different name (e.g., provider-). While both exist, Providers/Configurations and related resources report Status Unknown. Deleting the additionally installed Provider restores normal operation.
How can we reproduce it?
Install provider
apiVersion: pkg.crossplane.io/v1
kind: Provider
metadata:
name: provider-kubernetes
spec:
package: my.private.mirror/upbound/provider-kubernetes:v0.17.1
packagePullPolicy: IfNotPresent
revisionActivationPolicy: Automatic
revisionHistoryLimit: 1
runtimeConfigRef:
apiVersion: pkg.crossplane.io/v1beta1
kind: DeploymentRuntimeConfig
name: provider-kubernetes-config
skipDependencyResolution: false
ignoreCrossplaneConstraints: falseInstall package with a dependency like:
dependsOn:
- provider: my.private.mirror/upbound/provider-kubernetes
version: '>= v0.18.0'Then you will find a second installation of provider kubernetes with name
upbound-provider-kubernetes
What environment did it happen in?
Crossplane version: 1.20.1
Source: crossplane/crossplane