Context: Using Argo CD to manage ingress-nginx Helm chart.
Issue Introduced: In chart version 4.12.3+, pre-sync and post-sync Jobs have ttlSecondsAfterFinished: 0, meaning the Job itself is deleted immediately after completion.
Symptom: Argo CD sync remains stuck in Pending or Waiting—Jobs finish, Kubernetes garbage‑collects them immediately, but Argo CD can't track completion and retries indefinitely.
The chart’s hardcoding leads to:
Job runs and completes.
ttlSecondsAfterFinished: 0 triggers deletion of the Job object.
Argo CD sees the Job’s absence on the cluster → marks it OutOfSync, re-creates it → loop.
Similar behavior confirmed in community answers: Argo CD re-syncs Jobs removed due to ttlSecondsAfterFinished.
Deploy ingress-nginx v4.12.2 to bypass ttl issue.
Still use the latest container image by patching image tag & digest via values.yaml:
controller:
image:
tag: <latest-tag>
digest: <latest-digest>
This avoids introducing ttl bug while benefiting from newest controller releases.
Confirm Chart Version & Behavior
Deploy v4.12.3+ with Argo CD → observe Jobs disappear quickly, sync never completes.
kubectl get jobs after sync stuck.
Validate Argo CD Logs
argocd-server logs indicate re-application of the Job resource.
Implement Fix
Pin chart to 4.12.2 + patch image.
Test and Confirm
Validate no lingering Jobs and Application health is green.
Monitor Upstream Changes
Once ttlSecondsAfterFinished is made configurable and published, re-adopt latest chart version and remove patch.
values.yamlcontroller:
image:
tag: "v1.8.1" # or current latest
digest: "sha256:<digest>"
Ensure chart dependency still references 4.12.2 in Chart.yaml.
Hardcoded ttl of 0 in chart v4.12.3 causes Job disappearance→Argo CD loops. |
| Pinning to v4.12.2 + image patch avoids the bug. |
| Keep an eye on upstream chart changes for permanent fix. |