Repository navigation
feat(crossplane): derived CR names as an opt-in (derivedNames), p&t twin v0.10.9 - #165
Merged
Merged
Conversation
…win v0.10.9 stuttgart-things/flux#506. The flux machinery profile and xplane-crossplane-catalog name every Provider and Configuration after the path Crossplane derives from its package. These helmfiles still used short names for four of them, so the two install paths put the same source on a cluster under two CR names -- a duplicate Lock node. - `derivedNames` state value, default false. With `--state-values-set derivedNames=true` an entry that carries `derivedName` switches to it: provider-opentofu -> upbound-provider-opentofu provider-kubeconfig -> stuttgart-things-provider-kubeconfig-xpkg namespace -> stuttgart-things-crossplane-configurations-namespace volume-claim -> stuttgart-things-crossplane-configurations-volume-claim The providers template computes the name once, so the CR, its DeploymentRuntimeConfig, the serviceAccountTemplate and the ClusterRoleBinding move together. - Opt-in, not the new default, because a rename on a live cluster is destructive either way: helm replaces the CR (deleting the old Provider/Configuration takes its CRDs/XRDs and everything on them), or both names coexist (duplicate Lock node, every package Healthy=False). kind_machinery pins this repo and checks for old names before setting the flag; plays/kind-machinery-test.yaml, the platform-engineering-showcase Taskfile/bundle and dev3-kind apply these helmfiles from main with no such check, and keep their names. - crossplane-contrib-function-patch-and-transform v0.10.8 -> v0.10.9, the version of its short-named sibling (catalog 0.7.0). Same CR name, so an in-place upgrade on existing clusters; the digest is identical on both mirrors, the pattern function-kcl runs healthy on kind5. Rendered with `helmfile template`: without the flag the output is byte-identical to main apart from the p&t tag; with it only the names above change. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
patrick-hermann-sva
deleted the
feat/crossplane-derived-names-opt-in
branch
September 22, 2026 12:26
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.
Helm side of stuttgart-things/flux#506. The flux machinery profile and
xplane-crossplane-catalog(0.7.0, kcl#297) name every Provider and Configuration by the path Crossplane derives from its package. These helmfiles still used short names for four of them.Changes
New state value
derivedNames, defaultfalse. With--state-values-set derivedNames=true, each entry that has aderivedNameuses it:derivedNames=trueprovider-opentofuupbound-provider-opentofuprovider-kubeconfigstuttgart-things-provider-kubeconfig-xpkgnamespacestuttgart-things-crossplane-configurations-namespacevolume-claimstuttgart-things-crossplane-configurations-volume-claimThe providers template computes the name in one place, so the CR, its DeploymentRuntimeConfig, the
serviceAccountTemplateand the ClusterRoleBinding always change together.crossplane-contrib-function-patch-and-transformgoes from v0.10.8 to v0.10.9, the same version as its short-named sibling (catalog 0.7.0). The CR name doesn't change, so this is an in-place upgrade. The digest is identical on both mirrors, which is the same pattern function-kcl already runs healthy on kind5.Why opt-in and not the new default
On a live cluster, a rename damages it either way:
Healthy=False.kind_machinery(ansible) pins this repo throughhelm_repo_ref. It checks for CRs under the old names first, and only then sets the flag (see the ansible PR). Four consumers apply these helmfiles frommainwith no such check:ansibleplays/kind-machinery-test.yamlplatform-engineering-showcase: theTaskfile.yamlandbundles/platform.yaml.gotmpl(defaults toref: main)stuttgart-thingsansible/exec/labda/dev3-kind/deploy.yamlAs the default, the rename would reach them unannounced. As an opt-in, they keep their names until someone flips the flag on purpose.
Checked beforehand: a Helmfile
presynchook can't do the check. It doesn't receive the kubeconfig passed with--kubeconfig(KUBECONFIGis empty in the hook, and kubectl falls back tolocalhost:8080).Migration note⚠️
derivedNames=true.Verification
helmfile templateoncrossplane-providersandcrossplane-config:derivedNames=false, the output is byte-identical tomain, except the p&t tag.cicd/crossplane.yaml.gotmpl, then both helmfiles withderivedNames=true):Healthy.upbound-provider-opentofu, ServiceAccountupbound-provider-opentofu, and ClusterRoleBindingcrossplane-upbound-provider-opentofu.helmfile diffshows no changes.Refs stuttgart-things/flux#506
🤖 Generated with Claude Code