Skip to content
iam.alan.abreu
ACCEPTEDDraft2024-02-15 — updated 2024-03-10

ADR-001: GitOps over imperative pipelines

Use declarative reconciliation from Git instead of imperative deployment pipelines to drive cluster state.

Launch stateThese entries are placeholders while the real case studies and experiment write-ups are prepared for publication.

Context

  • Multiple product teams each ran their own deployment scripts, making cluster state hard to audit and recover.
  • Imperative pipelines failed in ways that left the cluster in an unknown intermediate state.

Decision

  • Adopt GitOps as the default deployment model. Cluster state is declared in Git and reconciled continuously.
  • Imperative pipelines are allowed only for build, scan and sign steps; they never mutate cluster state directly.

Alternatives considered

  • Keep imperative pipelines and add more checkpoints. Rejected because checkpoints do not make state recoverable.
  • Use a custom orchestrator. Rejected because it adds operational complexity without improving auditability.

Consequences

  • Cluster state is versioned, auditable and recoverable by re-applying a Git ref.
  • Teams must learn declarative patterns and reconciliation semantics.
  • Rollback becomes a Git operation, which is familiar to most engineers.

Linked from

Related suggestions