Flux Recovery

Recover a stuck HelmRelease, force an ExternalSecret resync, or unblock a Flux reconcile. Use when a HelmRelease is stuck/failed, an ExternalSecret hasn't picked up a changed value, or a Flux reconciliation needs unblocking.

billimek Updated

File contents

Flux/HelmRelease Troubleshooting

Stuck HelmRelease: When a HelmRelease exhausts its upgrade retries (e.g. due to image pull failures or timeout), scale the deployment to 0 to unblock it, then force reconciliation:

kubectl scale deployment app-name --replicas=0 -n namespace
flux reconcile helmrelease app-name -n namespace --with-source
# Flux will scale it back up automatically on success

Force ExternalSecret resync: Bypass the secretStore cache when a 1Password value changed but the ExternalSecret hasn't picked it up:

kubectl annotate externalsecret <name> -n <ns> force-sync=$(date +%s) --overwrite

HelmRelease upgrade recovery: Before reconciling an upgrade, check for stuck pods from the prior revision and scale the workload to 0 if needed. If a HelmRelease is stuck, prefer helm rollback or suspend/resume the HR over retrying reconciliation:

flux suspend helmrelease app-name -n namespace
flux resume helmrelease app-name -n namespace

billimek/k8s-gitops/tree/main/.claude/skills/flux-recovery commit 58efa58c82

Frequently asked questions

npx skillmds@latest add billimek/flux-recovery