Crossplane package dependencies are not properly isolated
Author: ytsarevCreated Oct 31, 2022Updated Sep 14, 2026
Labelsbugpackageexempt-from-stale
What happened?
I observed unexpected misbehavior while installing multiple Configurations in the following situation:
- Configurations contain a dependency on the same provider
- One of the Configuration has wrong/outdated dependency configuration
Problem: Installation of both Configurations fails, including the one which contains the correct dependency.
How can we reproduce it?
- Install platform-ref-gcp which contains dependency on provider-helm with an outdated registry URL
up ctp configuration install xpkg.upbound.io/upbound/platform-ref-gcp:v0.2.0- Observe that Configuration installation is failing with provider-helm dependency(that is expected given the old URL)
k describe configurationrevisions.pkg.crossplane.io upbound-platform-ref-gcp-202eac739e71
...
Warning ResolveDependencies 105s (x28 over 27m) packages/configurationrevision.pkg.crossplane.io cannot resolve package dependencies: missing dependencies: [xpkg.upbound.io/crossplane/provider-helm]- Install
platform-ref-awsConfiguration which contain proper up-to-date provider-helm dependency URL
up ctp configuration install xpkg.upbound.io/upbound/platform-ref-aws:v0.4.1- Observe that this Configuration installation is also failing( which is unexpected given the proper dependency URL)
k describe configurationrevisions.pkg.crossplane.io upbound-platform-ref-aws-3ac761211893
...
Warning ResolveDependencies 2m22s (x31 over 27m) packages/configurationrevision.pkg.crossplane.io cannot resolve package dependencies: missing dependencies: [xpkg.upbound.io/upbound/provider-aws xpkg.upbound.io/crossplane-contrib/provider-helm]- Delete the platform-ref-gcp Configuration, observe that platform-ref-aws Configuration is getting healthy afterwards:
k delete configurations upbound-platform-ref-gcp
configuration.pkg.crossplane.io "upbound-platform-ref-gcp" deleted
k get configurationrevisions.pkg.crossplane.io upbound-platform-ref-aws-3ac761211893
NAME HEALTHY REVISION IMAGE STATE DEP-FOUND DEP-INSTALLED AGE
upbound-platform-ref-aws-3ac761211893 True 1 xpkg.upbound.io/upbound/platform-ref-aws:v0.4.1 Active 2 2 29m
k get configuration
NAME INSTALLED HEALTHY PACKAGE AGE
upbound-platform-ref-aws True True xpkg.upbound.io/upbound/platform-ref-aws:v0.4.1 29mAdditionally providing the Lock state at the moment of the conflict when both Configurations are installed and in an unhealthy state:
k get lock lock -o yaml
apiVersion: pkg.crossplane.io/v1beta1
kind: Lock
metadata:
creationTimestamp: "2022-10-31T14:43:54Z"
finalizers:
- lock.pkg.crossplane.io
generation: 4
name: lock
resourceVersion: "1168"
uid: 8e75d3af-f981-4f7c-9128-91b65d2ec44f
packages:
- dependencies:
- constraints: '>=v0.13.0'
package: xpkg.upbound.io/upbound/provider-gcp
type: Provider
- constraints: '>=v0.11.1'
package: xpkg.upbound.io/crossplane/provider-helm
type: Provider
name: upbound-platform-ref-gcp-202eac739e71
source: xpkg.upbound.io/upbound/platform-ref-gcp
type: Configuration
version: v0.2.0
- dependencies: []
name: upbound-provider-gcp-0ff8596d26f8
source: xpkg.upbound.io/upbound/provider-gcp
type: Provider
version: v0.16.0
- dependencies:
- constraints: '>=v0.15.0'
package: xpkg.upbound.io/upbound/provider-aws
type: Provider
- constraints: '>=v0.12.0'
package: xpkg.upbound.io/crossplane-contrib/provider-helm
type: Provider
name: upbound-platform-ref-aws-3ac761211893
source: xpkg.upbound.io/upbound/platform-ref-aws
type: Configuration
version: v0.4.1What environment did it happen in?
Crossplane version: universal-crossplane-1.9.1-up.2
Source: crossplane/crossplane