Summary
The argocd-helm and argocd deployers hardcode the parent Application name (aicr-stack and nvidia-stack respectively). When two bundles from different recipes (with non-overlapping components) are installed on the same cluster, the second bundle's parent Application silently overwrites the first, orphaning the first bundle's child Applications.
Motivation / Context
Multiple CRDs targeting the same cluster would each install a bundle. Today this fails because both produce name: aicr-stack in the parent Application template.
Current Behavior
argocd-helm deployer — pkg/bundler/deployer/argocdhelm/argocdhelm.go:377:
metadata:
name: aicr-stack # hardcoded, no .Values override path
namespace: argocd
argocd deployer — pkg/bundler/deployer/argocd/templates/app-of-apps.yaml.tmpl:4:
metadata:
name: nvidia-stack # hardcoded
namespace: argocd
Installing a second bundle overwrites the first parent Application. The first bundle's components become unmanaged.
Expected Behavior
The parent Application name should be configurable so multiple bundles can coexist:
# Bundle A
aicr bundle -r gpu-recipe.yaml --deployer argocd-helm \
--app-name gpu-runtime -o ./gpu-bundle
# Bundle B
aicr bundle -r ops-recipe.yaml --deployer argocd-helm \
--app-name ops-runtime -o ./ops-bundle
Proposed Solution
- Add
--app-name CLI flag to aicr bundle, defaulting to aicr-stack (argocd-helm) / nvidia-stack (argocd) for backward compatibility
- In
argocd-helm: expose via .Values.appName so it can also be overridden at helm install time
- In
argocd: template the name in app-of-apps.yaml.tmpl
- Derive the template filename from the app name (e.g.,
templates/<app-name>.yaml instead of templates/aicr-stack.yaml)
Additional Context
Audit of other hardcoded identifiers that affect multi-bundle:
| Identifier |
Deployer |
Workaround |
Helm release name aicr-bundle |
argocd-helm |
Operator picks different name at helm install time |
Chart name aicr-bundle in Chart.yaml |
argocd-helm |
Different OCI registry path at publish time |
argocd namespace |
both |
Not a conflict — Argo CD manages many Applications in one namespace |
| Per-component Application names |
both |
Already unique (named by component) — safe for non-overlapping bundles |
The parent Application name is the only blocker with no operator workaround — it's a hardcoded string in the template, not reachable via --set.
Summary
The
argocd-helmandargocddeployers hardcode the parent Application name (aicr-stackandnvidia-stackrespectively). When two bundles from different recipes (with non-overlapping components) are installed on the same cluster, the second bundle's parent Application silently overwrites the first, orphaning the first bundle's child Applications.Motivation / Context
Multiple CRDs targeting the same cluster would each install a bundle. Today this fails because both produce
name: aicr-stackin the parent Application template.Current Behavior
argocd-helmdeployer —pkg/bundler/deployer/argocdhelm/argocdhelm.go:377:argocddeployer —pkg/bundler/deployer/argocd/templates/app-of-apps.yaml.tmpl:4:Installing a second bundle overwrites the first parent Application. The first bundle's components become unmanaged.
Expected Behavior
The parent Application name should be configurable so multiple bundles can coexist:
Proposed Solution
--app-nameCLI flag toaicr bundle, defaulting toaicr-stack(argocd-helm) /nvidia-stack(argocd) for backward compatibilityargocd-helm: expose via.Values.appNameso it can also be overridden athelm installtimeargocd: template the name inapp-of-apps.yaml.tmpltemplates/<app-name>.yamlinstead oftemplates/aicr-stack.yaml)Additional Context
Audit of other hardcoded identifiers that affect multi-bundle:
aicr-bundlehelm installtimeaicr-bundlein Chart.yamlargocdnamespaceThe parent Application name is the only blocker with no operator workaround — it's a hardcoded string in the template, not reachable via
--set.