| name | flux-ops |
| description | Flux/GitOps operations, troubleshooting, and cluster health monitoring |
Flux Operations
Commands and patterns for managing Flux-based GitOps deployments.
Health Checks
Quick Status
flux check
flux get kustomizations -A
flux get helmreleases -A
flux get sources all -A
flux get all -A --status-selector ready=false
Pod Health
kubectl get pods -A --field-selector 'status.phase!=Running,status.phase!=Succeeded'
kubectl get pods -A -o json | jq -r '.items[] | select(.status.containerStatuses[]?.restartCount > 3) | "\(.metadata.namespace)/\(.metadata.name) restarts=\(.status.containerStatuses[0].restartCount)"'
kubectl top pods -A --sort-by=memory | head -20
HelmRelease Troubleshooting
Diagnosis Flow
flux get hr <name> -n <namespace>
kubectl describe helmrelease <name> -n <namespace>
kubectl get helmchart -n <namespace>
helm history <name> -n <namespace>
kubectl events -n <namespace> --for helmrelease/<name>
Common Issues
"upgrade retries exhausted"
flux suspend hr <name> -n <namespace>
flux resume hr <name> -n <namespace>
"chart not found"
flux get sources helm -A
flux reconcile source helm <repo-name> -n <namespace>
"values validation failed"
helm get values <name> -n <namespace> -a
Stuck in "progressing"
kubectl rollout status deployment/<name> -n <namespace> --timeout=60s
flux reconcile hr <name> -n <namespace> --force
Kustomization Operations
Drift Detection
flux diff kustomization <name>
flux reconcile ks <name> --with-source
flux get ks -A -o json | jq -r '.[] | "\(.namespace)/\(.name) rev=\(.lastAppliedRevision) ready=\(.isReady)"'
Dependency Issues
flux tree ks <name> -n <namespace>
flux reconcile ks flux-system --with-source
Source Management
flux reconcile source git flux-system
flux get sources git -A
flux get sources oci -A
flux get sources helm -A -o json | jq '.[] | {name: .name, url: .url, lastUpdated: .lastHandledReconcileAt}'
PR Review Checklist for Manifest Changes
When reviewing PRs that modify Kubernetes manifests:
Useful Aliases
alias fga='flux get all -A'
alias fgk='flux get ks -A'
alias fgh='flux get hr -A'
alias fgs='flux get sources all -A'
alias frf='flux reconcile ks flux-system --with-source'
Emergency: Force Sync Everything
flux reconcile source git flux-system
for ks in $(flux get ks -A -o json | jq -r '.[].name'); do
flux reconcile ks "$ks" --with-source &
done
wait
Notes
- Always check
flux logs for controller-level errors
- Use
--force sparingly — it reapplies everything
- HelmRelease remediation: set
remediateLastFailure: true in spec
- Flux v2 stores state in-cluster, not in Git — Git is the desired state