Repository navigation
feat(crossplane): enable dependency version upgrades - #162
Merged
patrick-hermann-sva merged 1 commit intoSep 19, 2026
Merged
Conversation
Upgrading a short-named dependency (function-auto-ready, provider-opentofu, ...) in place made the dependency manager install a second copy under the derived name while the revision swapped. The package was then in the Lock twice and no package resolved until the copy was deleted by hand. Reproduced on a throwaway kind cluster with Crossplane 2.3.3 for functions and providers, deterministically within 2 s. With --enable-dependency-version-upgrades the same upgrades settle in 6-8 s without a copy, also when the flag is turned on for an existing cluster. The short names stay: every Composition calls its functions by name. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
patrick-hermann-sva
deleted the
feat/crossplane-dependency-version-upgrades
branch
September 19, 2026 14:06
patrick-hermann-sva
added a commit
to stuttgart-things/ansible
that referenced
this pull request
Sep 19, 2026
…upgrades) (#1217) Picks up stuttgart-things/helm#162, which starts Crossplane with --enable-dependency-version-upgrades. Without it, upgrading a short-named function or provider in place put the package into the Lock twice (provider-opentofu and three functions on u26-kind3). The only file that differs between eadb58b and 5128462 is cicd/values/crossplane.values.yaml.gotmpl. Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds
--enable-dependency-version-upgradesto the Crossplane args incicd/values/crossplane.values.yaml.gotmpl.Problem
crossplane-configandcrossplane-providersinstall functions and providers under short names (function-auto-ready,provider-opentofu, …), and Configurations depend on them. When one of them is upgraded in place, Crossplane 2.3.3 installs a second copy under the derived name (crossplane-contrib-function-auto-ready) during the revision swap. That copy is the latest version the constraint allows. The package is then in the Lock twice, and every package stays Unhealthy (node … already exists) until the copy is deleted by hand.Seen on u26-kind3 on 2026-09-18/19:
Lab results (throwaway kind cluster, Crossplane 2.3.3, real stuttgart-things Configurations)
revisionActivationPolicy: ManualrevisionHistoryLimit: 0--enable-dependency-version-upgradesprovider-kubernetes1.2.0 → 1.2.1), no flagWhy not long names
Every Composition calls its functions by object name (
pipeline[].functionRef.name). On kind3 that's function-kcl 31×, auto-ready 27×, environment-configs 16×, go-templating 8× and patch-and-transform 4×. Without the short-named object, rendering fails withcannot get gRPC client connection for Function "function-auto-ready", even though every package shows Healthy. The short names have to stay.Side effect (alpha flag)
When a Configuration is updated and needs a higher version of a dependency, Crossplane now upgrades the installed dependency in place instead of failing. A helmfile-pinned function or provider can then end up ahead of its pin until the pin is raised. The downgrade flag stays off.
Rollout
helmfile diffagainst u26-kind3 changes only this one arg in thecrossplaneDeployment, which restarts once. The kind plays pin this repo viahelm_repo_ref(ansible#1216), so the flag only takes effect after that ref is raised.🤖 Generated with Claude Code