Skip to content

feat(bundler): configurable parent Application name for multi-bundle clusters #1011

Description

@xdu31

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 deployerpkg/bundler/deployer/argocdhelm/argocdhelm.go:377:

metadata:
  name: aicr-stack      # hardcoded, no .Values override path
  namespace: argocd

argocd deployerpkg/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

  1. Add --app-name CLI flag to aicr bundle, defaulting to aicr-stack (argocd-helm) / nvidia-stack (argocd) for backward compatibility
  2. In argocd-helm: expose via .Values.appName so it can also be overridden at helm install time
  3. In argocd: template the name in app-of-apps.yaml.tmpl
  4. 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.

Metadata

Metadata

Assignees

Type

Fields

No fields configured for Bug.

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions