[{"data":1,"prerenderedAt":234},["ShallowReactive",2],{"blog-crunchy-pgo":3,"blog-crunchy-pgo-favor-of":205},{"id":4,"title":5,"body":6,"cover_image":202,"date":203,"decidedDate":203,"decision":204,"decisionInFavorOf":205,"decisionReason":206,"description":207,"evaluatedScore":208,"extension":209,"link":210,"logoPath":205,"meta":211,"navigation":212,"path":213,"placements":214,"reviewTrigger":205,"satisfaction":221,"seo":222,"stage":204,"stem":223,"tags":224,"target":231,"type":232,"__hash__":233},"radar\u002Fradar\u002Fcrunchy-pgo.md","Crunchy Data PGO",{"type":7,"value":8,"toc":191},"minimark",[9,14,18,29,40,43,48,56,66,71,85,105,109,112,124,128,138,140,144,147,164,166,170],[10,11,13],"h1",{"id":12},"crunchy-data-pgo-automated-postgresql-for-kubernetes","Crunchy Data PGO: Automated PostgreSQL for Kubernetes",[15,16,17],"p",{},"Running stateful relational databases inside Kubernetes used to provoke pushback from systems engineers. The primary fear centered on operational failure during failovers, split-brain scenarios, and backup corruption.",[15,19,20,24,25,28],{},[21,22,23],"strong",{},"Crunchy Data PostgreSQL Operator (PGO)"," addressed those concerns directly. Developed by PostgreSQL contributors and built for production reliability, Crunchy PGO has served as our unconditional ",[21,26,27],{},"Adopt"," for mission-critical database clusters across bare-metal k3s nodes and cloud infrastructure.",[15,30,31,32,39],{},"While modern contenders like ",[21,33,34],{},[35,36,38],"a",{"href":37},"\u002Fblog\u002Fcloudnativepg","CloudNativePG"," offer streamlined GitOps ergonomics, Crunchy PGO remains our standard where backup durability, multi-destination retention, and disaster recovery cannot fail.",[41,42],"hr",{},[44,45,47],"h2",{"id":46},"the-architecture-why-pgo-earned-adopt-status","The Architecture: Why PGO Earned \"Adopt\" Status",[15,49,50,51,55],{},"Crunchy PGO v5 replaced older controller architectures with a declarative, reconciler-driven model centered around the ",[52,53,54],"code",{},"PostgresCluster"," custom resource definition.",[57,58,64],"pre",{"className":59,"code":61,"language":62,"meta":63},[60],"language-text","                      ┌──────────────────────────┐\n                      │   Crunchy PGO Operator   │\n                      │   (Reconciliation Loop)  │\n                      └─────────────┬────────────┘\n                                    │ manages\n          ┌─────────────────────────┼─────────────────────────┐\n          ▼                         ▼                         ▼\n   ┌──────────────┐          ┌──────────────┐          ┌──────────────┐\n   │ Primary Pod  │◀─────────┤ Replica Pod  │          │ Dedicated    │\n   │ PostgreSQL   │ stream   │ PostgreSQL   │          │ pgBackRest   │\n   │ + Exporter   │ rep      │ + Exporter   │          │ Repo Host    │\n   └──────┬───────┘          └──────────────┘          └──────┬───────┘\n          │                                                   │\n          └────────────── WAL Archive & Backups ──────────────┘\n                                    │\n                                    ▼\n                         [ S3 \u002F MinIO \u002F Local PVC ]\n","text","",[52,65,61],{"__ignoreMap":63},[67,68,70],"h3",{"id":69},"_1-the-standard-in-backups-pgbackrest","1. The Standard in Backups: pgBackRest",[15,72,73,74,76,77,80,81,84],{},"The decisive factor keeping Crunchy PGO in our ",[52,75,27],{}," tier is its native integration with ",[21,78,79],{},"pgBackRest",". Unlike basic backup utilities that rely on ",[52,82,83],{},"pg_dump"," or naive file copies, pgBackRest provides:",[86,87,88,92,95,102],"ul",{},[89,90,91],"li",{},"Page-level delta backups inspect database files at the 8KB page level, backing up only changed disk blocks to shrink backup windows.",[89,93,94],{},"Multi-repository routing streams Write-Ahead Logs (WAL) and snapshots simultaneously to a fast local volume and a remote S3-compatible object store.",[89,96,97,98,101],{},"Standby backups offload intensive routines from the primary database instance onto read replicas or the dedicated ",[52,99,100],{},"repo-host"," pod.",[89,103,104],{},"Point-in-Time Recovery (PITR) enables deterministic rollbacks to an exact transaction timestamp with integrity validation.",[67,106,108],{"id":107},"_2-high-availability-without-split-brain","2. High Availability Without Split-Brain",[15,110,111],{},"Crunchy PGO implements automated leader election using distributed consensus leases directly within Kubernetes. When a primary database node crashes or suffers a network partition:",[113,114,115,118,121],"ol",{},[89,116,117],{},"The operator detects heartbeat loss without false-positive triggers during transient network blips.",[89,119,120],{},"The controller promotes the replica with the lowest replication lag.",[89,122,123],{},"The remaining standby instances automatically re-point to follow the new primary.",[67,125,127],{"id":126},"_3-integrated-pgbouncer-connection-pooling","3. Integrated PgBouncer Connection Pooling",[15,129,130,131,134,135,137],{},"Database connections in PostgreSQL are process-based, consuming memory and CPU per active client. Crunchy PGO automates ",[21,132,133],{},"PgBouncer"," deployments natively as an isolated service layer. The operator manages credential rotation, TLS configuration, and connection pooling policies directly through the ",[52,136,54],{}," manifest.",[41,139],{},[44,141,143],{"id":142},"operational-trade-offs","Operational Trade-Offs",[15,145,146],{},"Operating Crunchy PGO comes with distinct operational friction points:",[86,148,149,155,161],{},[89,150,151,152,154],{},"PGO deploys dedicated repository pods (",[52,153,100],{},"), sidecar containers for logging and metrics, and supplementary controller jobs, demanding idle RAM.",[89,156,157,158,160],{},"The ",[52,159,54],{}," specification is extensive, requiring dozens of nested YAML blocks that increase the learning curve for junior engineers.",[89,162,163],{},"Crunchy Data separates advanced graphical dashboards and commercial support tiers behind enterprise channels.",[41,165],{},[44,167,169],{"id":168},"verdict-migration-guidance","Verdict & Migration Guidance",[86,171,172,178],{},[89,173,174,177],{},[21,175,176],{},"Keep on Adopt:"," High-throughput production workloads, databases with multi-terabyte datasets, and clusters requiring complex multi-destination backup topologies with pgBackRest.",[89,179,180,183,184,190],{},[21,181,182],{},"Evaluating Alternatives:"," Greenfield projects and modern GitOps pipelines prioritizing minimal pod overhead. Read our comparative evaluation: ",[21,185,186],{},[35,187,189],{"href":188},"\u002Fblog\u002Fpostgres-kubernetes-pgo-vs-cloudnativepg","PostgreSQL on Kubernetes in 2026: Crunchy Data PGO vs. CloudNativePG",".",{"title":63,"searchDepth":192,"depth":192,"links":193},2,[194,200,201],{"id":46,"depth":192,"text":47,"children":195},[196,198,199],{"id":69,"depth":197,"text":70},3,{"id":107,"depth":197,"text":108},{"id":126,"depth":197,"text":127},{"id":142,"depth":192,"text":143},{"id":168,"depth":192,"text":169},"\u002Fimages\u002Fcovers\u002Fradar-crunchy-pgo.png","2026-10-10","adopt",null,"Adopted as our production standard for stateful PostgreSQL workloads on Kubernetes. Relies on pgBackRest for unmatched delta backup and point-in-time recovery capabilities, automated failover, and mature PgBouncer connection pooling.","PostgreSQL operator for Kubernetes powered by pgBackRest, adopted for mission-critical databases and complex multi-datacenter disaster recovery.",4,"md","https:\u002F\u002Faccess.crunchydata.com\u002Fdocumentation\u002Fpostgres-operator\u002Flatest\u002F",{},true,"\u002Fradar\u002Fcrunchy-pgo",[215,218],{"category":216,"subCategory":217},"platforms","databases",{"category":219,"subCategory":220},"infrastructure","storage",5,{"title":5,"description":207},"radar\u002Fcrunchy-pgo",[225,226,227,217,228,220,229,230],"crunchy-pgo","postgresql","kubernetes","pgbackrest","devops","gitops","_blank","tech_report","dvyM1SZapN6AxaFS0pHwyLH9lnU6aq965Yu4ffOeZo0",1791637366756]