Argo CD / Editorial solution guide

OutOfSync returns after a successful operation

Identify the changing field and its owner before suppressing differences or repeating sync.

About 3 min readContent reviewed

Read-only knowledge base ยท No public comments

Recognize the symptoms

An operation succeeds, then the Application becomes OutOfSync again. The workload may remain healthy, or a field may alternate between desired and live values as two actors reconcile it.

A diff repeatedly shows a small field change, reordered structure, admission mutation, or a different rendered value. A successful operation from an earlier revision can also be mistaken for evidence about the current desired input.

Understand the likely causes

  • An autoscaler, admission component, another Application, operator, or manual actor may manage the field. Nondeterministic generation and mutable external input can change desired output independently of live mutation.
  • Normalization and API representation can differ from source syntax. Incorrect resource tracking, repeated identities, broad source composition, or an unexplained ignore rule can obscure the real owner. A green sync result does not promise permanent equality under competing controllers.

Capture the exact resource and field

Retain Application identity, resolved source and rendering inputs, operation revision, full resource group-kind-namespace-name, field path, and a bounded redacted before-and-after example. Compare timestamps and observation freshness. Do not publish full Secrets or managed resources containing private payloads. A name-only diff can accidentally refer to another namespace, and an old operation result cannot explain a newer source revision without an explicit relationship.

Determine who changes desired and live values

Separate a changing desired render from a stable desired field that another live actor rewrites. Inspect existing authorized ownership and controller evidence with the target owner. The following diagram describes two hypotheses rather than a command to remove metadata or stop a controller. Both can produce recurring differences but require different corrections.

text A recurring-drift classification map
same inputs -> different desired output: investigate generation
stable desired -> changing live field: investigate owner or admission
same identity in several Applications: review source and tracking contracts

No source, controller, field manager, label, annotation, or cluster is queried or changed. These branches guide a bounded review using existing evidence.

Use a narrow exception only for a known contract

If an external controller legitimately owns one field, document the arrangement and scope any comparison exception to the intended identity and path. Test that image, identity, secret-related, and other release-sensitive differences remain visible. Review JSON Pointer escaping and supported selectors. Remember that ignoreDifferences comparison behavior is separate from RespectIgnoreDifferences during sync. A clean badge is not evidence that Argo CD will never write the ignored field.

Repair competing ownership or unstable generation

For a rendering defect, stabilize inputs or fix the template instead of ignoring all output changes. For competing Applications, choose an explicit owner and reviewed transition rather than stripping tracking metadata. For a legitimate field owner, align write behavior, comparison, and independent observations. Do not enable replace, force, or broad ignores as a bundle. Repeated sync can amplify a control fight or rerun side effects without establishing the intended lifecycle.

Verify the fix

In retained evidence or a separately authorized suitable environment, confirm equivalent resolved inputs produce the expected desired set, the declared owner controls the intended field, and unrelated critical drift remains detectable. Observe an adequate bounded interval for the relevant reconciliation behavior and retain limitations. This guide performs no sync, controller change, field write, or live investigation.

Keep it from recurring

  • Maintain field-ownership records, narrow reviewed diff exceptions, deterministic source inputs, collision-free Application scope, and negative drift fixtures. Assign an owner and retirement condition to each exception. Review source order, renderer changes, and controller removal as possible changes to the comparison contract.

Official references