Skip to content

Advanced Disciplines

GitOps Beyond Ceremony: Where Declarative Systems Break

GitOps is powerful because it makes intent legible. It fails when intent is ambiguous, ownership is unclear, and emergency changes are not governed.

Text

Authored as doctrine; evaluated as systems craft.

Doctrine

GitOps is a discipline of recorded intent. It is not a guarantee of safety. A Git repository can encode unsafe change as efficiently as safe change.

Kubblai doctrine: GitOps must include governance: review, staging, rollback, and emergency posture.

  • Record intent; prove convergence; preserve reversibility.
  • Do not confuse sync success with system health.
  • Treat drift as a signal: either intent is wrong or enforcement is weak.

The hidden break: desired state vs safe state

A manifest can describe a desired state that is unsafe at the moment: a policy change that blocks deploys, a rollout that violates capacity constraints, or an admission rule that increases latency beyond budget.

Safe state is contextual. You need staged rollouts and stop-loss thresholds.

  • Gate changes with checks tied to SLOs and capacity.
  • Separate policy rollouts from application rollouts when blast radius differs.
  • Prefer progressive delivery patterns for high-consequence workloads.

Field ownership conflicts

Multiple writers to the same object create conflict loops. Server-side apply helps, but only when field ownership is understood and enforced. Otherwise you get invisible tug-of-war.

Kubblai doctrine: one authority per field; explicit handoffs; no hidden mutation.

  • Use SSA with clear field managers; avoid mixing kubectl apply and controllers that patch the same fields.
  • Document which system owns replicas, images, and annotations used by automation.
  • Avoid ‘fix by patch’ tools that silently rewrite intent.

Sync loops as outage amplifiers

A GitOps controller that retries aggressively can saturate the API during incidents. When the control plane is slow, a ‘helpful’ reconciler can become denial-of-service.

Your GitOps posture must include a pause mechanism and backoff discipline.

  • Implement emergency pause/runbook for GitOps reconcilers.
  • Tune concurrency and retry backoff based on API budgets.
  • Prefer smaller, independent sync units to reduce blast radius.

Emergency change without dishonesty

Real incidents require emergency changes. The heresy is not changing production; the heresy is changing without record and without reconciliation back to the archive.

Kubblai doctrine: break glass, then write doctrine: record the delta and fold it back into versioned intent.

  • If you hotfix with kubectl, open a ticket and create a follow-up PR immediately.
  • Annotate emergency changes with incident IDs for later audit.
  • Define who can break-glass and how it is reviewed.