Use SQLite on a Longhorn PVC for Renovate CE state, not CNPG Postgres
Date: 2026-06-14 Status: Accepted Decision: hl-v808 Deciders: Sean Brandt
Context
Section titled “Context”Renovate CE needs a persistent state store for its job queue and installation/repository registry. The cluster runs CNPG (CloudNativePG) for authoritative relational data. CE’s state is a rebuildable cache: if the volume is lost, CE re-syncs from GitHub on the next autodiscovery sweep with no data loss beyond transient queue churn.
Decision
Section titled “Decision”Mount a Longhorn PVC (via the chart’s cachePersistence.enabled) at the parent directory of MEND_RNV_SQLITE_FILE_PATH. Do not provision a CNPG Postgres cluster (postgresql.enabled=false). Postgres remains a documented future upgrade path, not built now.
Rationale
Section titled “Rationale”- CE’s state is a rebuildable cache (job queue + repo registry), not authoritative data — DB-layer HA/durability would protect data that is not irreplaceable.
- SQLite is CE’s native default; using it avoids a CNPG dependency and keeps the deployment self-contained.
- Longhorn replication provides adequate durability for cache data; PVC loss costs one re-sync sweep, not a restore from backup. (This is also why the
renovatenamespace is excluded from Velero backups.)
Alternatives Considered
Section titled “Alternatives Considered”- SQLite on a Longhorn PVC (chosen): zero additional infrastructure; Longhorn replication is sufficient for rebuildable cache data; SQLite is the CE default. Cost: single-writer, so CE runs a single replica; PVC loss requires a re-sync sweep.
- CNPG Postgres (rejected): HA and WAL durability consistent with the cluster pattern for authoritative data, but adds a dedicated CNPG cluster (CPU/memory/storage) to protect intentionally non-authoritative, fully rebuildable data.
Consequences
Section titled “Consequences”- Positive: no CNPG cluster required; simpler, lower-overhead deployment; Longhorn-backed PVC meets the data’s actual durability needs.
- Negative: SQLite is single-writer, so CE must run as a single replica (no horizontal scaling); a future Postgres migration needs a planned schema/data step.
- Neutral: the pod must set
fsGroup: 12021to match CE’s uid/gid (documented footgun); the namespace is excluded from Velero backups.