Argo CD / Editorial solution guide

A generated Application change disappears or a child is removed

Trace ApplicationSet input, template, modification policy, owner references, and workload lifecycle separately.

About 3 min readContent reviewed

Read-only knowledge base · No public comments

Recognize the symptoms

A manual change to a generated Application is reverted, has no lasting effect, or differs from what the reviewer expected after the parent reconciles. Automation settings are a common visible example, but source, destination, and other owned fields can matter too.

A generator no longer selects a target and the child Application disappears or its managed-resource lifecycle changes. A user may describe this as workload deletion even though several controller and finalizer boundaries are involved.

Understand the likely causes

  • The ApplicationSet generator and template remain the authoritative source for owned child fields under effective modification policy. Editing the child does not necessarily change that durable input.
  • Input selection, missing parameters, duplicate generated identities, empty output, parent policy, owner references, and Application finalizers can affect child and resource lifecycles. Automated pruning inside a child is a separate mechanism from parent-driven Application removal.

Map the full ownership chain

Record ApplicationSet identity, generator type and resolved input, template revision or configuration, expected child name and namespace, actual child identity, and relevant retained conditions. Include the project and destination selected by the generated spec. Use existing authorized metadata and redact secrets. A label saying generated is not a complete explanation; identify which definition owns the specific field and which controller observed the change.

Compare effective output with the child edit

For a reverting field, compare the generator parameters and template with the child’s intended change. Review documented modification and ignore behavior for the actual version. Go-template missing-key errors, type limitations, and parameter selection can produce a different output than a casual reading suggests. Do not broaden project or target authority to compensate for a wrong template value. The ownership map below is conceptual and performs no reconciliation.

text A generated-ownership investigation map
generator input + template + parent policy -> child Application
child Application + project + target authority -> managed resources
child removal + owner/finalizer rules -> separate lifecycle decision

No generator, template engine, child, resource, owner reference, or finalizer is queried or changed. The arrows distinguish review boundaries rather than guaranteeing deletion behavior.

Separate removal from ordinary drift

If a child vanished, determine whether the input set intentionally changed, became empty, collided, or failed generation. Review parent modification policy and deletion behavior, then inspect Application owner references and resource finalizer semantics through the owner’s approved evidence path. Do not remove finalizers or recreate children blindly. Those actions can bypass intended protection, orphan resources, or trigger a different reconciliation path without resolving the source error.

Change the authoritative input through review

For a legitimate lasting change, update the appropriate parent input or template, or use the documented supported exception under a bounded policy. For accidental selection loss, restore the reviewed generator contract and assess existing child and resource state before any separately authorized recovery. Bind decisions to actual generated identities and targets. If data-bearing resources were affected, involve their owner and compatibility plan rather than assuming recreation restores authoritative state or reverses external actions.

Verify the fix

Using retained evidence or a separately authorized suitable environment, verify the expected child set, field values, project, destination, and managed-resource lifecycle after the parent’s relevant reconciliation. Include removed-target, empty-input, duplicate-name, and rejected-template cases. Confirm no unintended resource loss or authority expansion. This guide creates, edits, deletes, restores, or reconciles no object.

Keep it from recurring

  • Protect generator and template writers, validate generated identities and high-authority fields, keep modification and deletion policies explicit, and rehearse retirement separately from ordinary updates. Document temporary exceptions and their expiry. Review child automation changes at the parent ownership layer before relying on manual edits.

Official references