Which THREE of these practices are essential to successfully transition from traditional CI/CD to GitOps?
Declarative manifests stored in Git let a controller continuously reconcile cluster state against the desired configuration, rather than executing one-off imperative commands. This satisfies GitOps's core requirement that Git be the single source of truth, enabling automated drift detection and rollback without manual `kubectl` intervention.
Why this answer
Option B is correct because GitOps requires the desired state to be expressed declaratively in manifest files (YAML) rather than through imperative commands like 'kubectl apply' or 'kubectl edit', so the cluster state can be versioned and reproduced. Option C is correct because Git must serve as the single source of truth, meaning all environment and application configuration lives in Git repositories and any change is made via commits and pull requests, not directly on the cluster. Option D is correct because a GitOps agent (e.g., Argo CD or Flux) must continuously reconcile the live cluster state with the desired state stored in Git, typically using a pull-based model that detects drift and automatically corrects it.
Option A is not correct because a manual deployment document in a wiki is not version-controlled, not machine-readable, and cannot drive automated reconciliation, which contradicts GitOps principles. Option E is not correct because adding manual approvals increases friction and human intervention, whereas GitOps emphasizes automated, auditable, and repeatable delivery driven by Git commits and CI checks.
Exam trap
CGOA often tests the misconception that more manual approvals or wiki documentation improve GitOps — in reality, GitOps reduces manual gates and treats Git itself as the documentation and approval mechanism.