#3423·crossplane

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?

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-aws Configuration 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   29m

Additionally 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.1

What environment did it happen in?

Crossplane version: universal-crossplane-1.9.1-up.2