Skip to content

fix(arc-tf): silence listener-resource drift via SSA + ignoreDifferences#26

Merged
xnoto merged 1 commit intomainfrom
fix/arc-tf-ssa
Apr 30, 2026
Merged

fix(arc-tf): silence listener-resource drift via SSA + ignoreDifferences#26
xnoto merged 1 commit intomainfrom
fix/arc-tf-ssa

Conversation

@xnoto
Copy link
Copy Markdown
Contributor

@xnoto xnoto commented Apr 30, 2026

Summary

`arc-tf` Application has been showing OutOfSync because the gha-runner-scale-set controller dynamically creates an `AutoscalingListener` plus a paired `Role` / `RoleBinding` (named `--listener`) at runtime — none of which are in the chart's rendered output — and rotates hash annotations on them on every reconcile.

Two parts to the fix:

  1. `ServerSideApply=true` — ArgoCD respects field-manager separation. The controller's mutations on annotations don't get reverted, and ArgoCD doesn't try to manage fields it doesn't own.
  2. `ignoreDifferences` extended to cover `/metadata/annotations` on the dynamically-created `Role` and `RoleBinding` kinds (was previously only `AutoscalingListener` + `AutoscalingRunnerSet`).

Test plan

  • After merge: `arc-tf` Application reaches Synced + Healthy and stays there across listener reconciles
  • Runner pod still spawns / picks up jobs / terminates as before

🤖 Generated with Claude Code

The gha-runner-scale-set controller dynamically creates the listener
AutoscalingListener and a paired Role/RoleBinding (named
`<release>-<hash>-listener`) at runtime, and rotates hash annotations
on them on every reconcile. None are in the chart's rendered output, so
ArgoCD reports them OutOfSync.

Add ServerSideApply=true so ArgoCD respects field-manager separation
between itself and the controller, and extend ignoreDifferences to
cover annotation churn on the Role/RoleBinding kinds the controller
also touches.
@xnoto xnoto self-assigned this Apr 30, 2026
@xnoto xnoto merged commit c46b6f1 into main Apr 30, 2026
1 check passed
@xnoto xnoto deleted the fix/arc-tf-ssa branch April 30, 2026 05:01
xnoto added a commit that referenced this pull request Apr 30, 2026
## Summary

Revert the additions from #26 — they didn't actually resolve the
OutOfSync state, which structurally needs a cluster-wide
\`resourceTrackingMethod\` change to fix and is functionally cosmetic.
Keep only the AutoscalingRunnerSet \`ignoreDifferences\` entry that
prevents selfHeal from thrashing on controller-driven annotation churn.

### Removed (from #26)

- \`ServerSideApply=true\` syncOption
- \`Role\` / \`RoleBinding\` \`ignoreDifferences\` entries

### Removed (cleanup, was originally added in #25)

- \`AutoscalingListener\` \`ignoreDifferences\` entry — the chart
doesn't render that kind at all, so there's nothing for ArgoCD to drift
from

### Kept

- \`AutoscalingRunnerSet\` \`ignoreDifferences\` for
\`/metadata/annotations\` and \`/spec/template\` (chart-rendered, does
see real drift)
- \`RespectIgnoreDifferences=true\` syncOption

## Comment in the manifest now documents the cosmetic OutOfSync as
accepted.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant