← Articles

GitOps: Synced does not mean the application works

Three separate observations: configuration, resource health and the user operation.

Underlined terms have explanations. Copy the code and run it locally.

Contents and terms

Terms at hand

Select a term to see its definition.

Full glossary →

The declaration matches, but the application still fails

reports Synced. The rollout can still be unhealthy, or the application can answer requests while a reservation fails. These are different checks.

  • Sync: does the observed match the desired configuration tracked by Argo?
  • Health: do the resources satisfy their health criteria?
  • Business smoke: can a small representative user operation complete correctly?

A successful sync is useful evidence, but it does not answer the other two questions.

Predict three release decisions

This standalone 3.11+ example uses synthetic observations. Save release.py, then run python3 release.py. It does not contact or modify a cluster.

python
def release_ready(sync: str, health: str, smoke_ok: bool) -> bool:
    return sync == "Synced" and health == "Healthy" and smoke_ok is True

cases = [
    ("Synced", "Degraded", True),
    ("Synced", "Healthy", False),
    ("Synced", "Healthy", True),
]
for case in cases:
    print(release_ready(*case))

Expected output is False, False, True, each on its own line. This is a small release policy, not a replacement for Argo's health assessment or a live . A real check must collect fresh observations for the intended environment and revision.

Find the missing condition

Remove and smoke_ok is True. The second case now returns True, although the user operation failed. it. Add an OutOfSync / Healthy / True case and predict its result before running.

Do not invent a successful observation to make a release green. An unavailable check means you lack evidence; diagnose the check or the application.

Follow the dependencies

Reviewed source → → configuration commit → Argo → → business operation.

During a migration, an old Pod may need to continue serving until the new schema is ready. Rolling back an image does not undo data already written. In a real lab, deliberately fail a migration and check the old application before claiming rollback works.

Your next experiment

On a local cluster, compare four observations of one deployment: revision, sync, health and an application request result. them separately. Which observation catches a healthy Deployment with incorrect business configuration?

Sources

CHECK YOUR INTUITION

Argo reports Synced. Does that prove the user operation works?

NOW WRITE YOUR OWN CODE

Put your understanding into practice.

Continue with GitOps: manifests, reconciliation and deployment checks.

Open the learning material →