Answer
GitOps excels for declarative Kubernetes config but adds friction for imperative or highly dynamic actions, secret handling needs extra tooling, and Git becomes a critical dependency. Debugging can require understanding reconciliation timing, and very large fleets need patterns (ApplicationSets) to avoid sprawl. It's not ideal for one-off tasks or non-declarative systems.
Real-world example The team keeps ad-hoc database migrations in a controlled Job with hooks rather than forcing every imperative action through GitOps.