feat(infra): install CloudNativePG operator and shared-cluster - #182
Draft
TineoC wants to merge 1 commit into
Draft
feat(infra): install CloudNativePG operator and shared-cluster#182TineoC wants to merge 1 commit into
TineoC wants to merge 1 commit into
Conversation
First half of moving Balancer off AWS RDS (CodeForPhilly/balancer-main#526). Production still reads from RDS; this only stands the cluster up beside it. Mirrors cfp-sandbox-cluster's layout: chart v0.28.0 as a holosource, projected to _infra/cloudnative-pg/operator and rendered by a helm3 lens with CRDs included; the Cluster CR and namespace sit outside the lens root and pass through raw. Two deliberate omissions, both documented inline: - no managed.roles — the balancer role's passwordSecret must be sealed first, or cnpg reports a reconcile error until it exists - no backup stanza — needs an object store and credentials that do not exist yet. Nothing may depend on this cluster as a sole copy until that lands. Storage class is pinned to linode-block-storage-retain rather than taking the cluster default, which sandbox does. Refs CodeForPhilly/balancer-main#526
This was referenced Aug 13, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Step 4 of CodeForPhilly/balancer-main#526 — stand up CloudNativePG on this cluster. Nothing cuts over here. Production Balancer keeps reading from AWS RDS; this only puts the destination cluster in place beside it.
Opened as a draft: this adds a shared-infra component to the live cluster and wants @themightychris's eyes before it merges.
What lands
.holo/sources/cloudnative-pg-chart.tomlrefs/tags/cloudnative-pg-v0.28.0.holo/branches/k8s-manifests/_infra/cloudnative-pg/operator.tomlcharts/cloudnative-pg→_infra/cloudnative-pg/operator.holo/lenses/cloudnative-pg.tomlinclude_crds = true, releasecloudnative-pgin nscloudnative-pg_infra/cloudnative-pg/namespaces.yaml_infra/cloudnative-pg/shared-cluster.yamlCluster/shared-cluster, 2 instances, PostGIS 18 image, 20Gi.claude/CLAUDE.mdAll of it mirrors
cfp-sandbox-cluster, which has been running this exact shape since June. The Cluster CR and namespace sit outside the lens input root, so they pass through raw while the chart gets rendered.Two deliberate omissions
No
managed.roles. Thebalancerrole names apasswordSecretthat has to be sealed intocloudnative-pg.secrets/first — and cnpg reports a role reconcile error for as long as that Secret is absent. The role and theDatabaseCR land together in the follow-up PR, after the seal.No
backup:stanza. It needs an object store bucket and credentials that do not exist yet. Worth stating plainly: this cluster has no backups, and neither does sandbox. Moving production data here before that lands would trade RDS's automated snapshots for nothing. That is tracked as a blocking step in CodeForPhilly/balancer-main#526.One difference from sandbox
storageClass: linode-block-storage-retainis explicit here; sandbox takes the cluster default. On a production cluster the-retainreclaim policy is the difference between a deleted PVC being an incident and being an outage. Flagging it since it is the one line not copied verbatim.Verification after deploy
No existing workload is touched — no app in this repo references cnpg yet.
Sequencing
balancer-db-credentialsintocloudnative-pg.secrets/(needs cluster access; not a PR I can open)managed.roles+balancer/cnpg/database.yamlwith thevectorextension, plus thebalancer/split intoapp/+cnpg/that sandbox already haspg_dumpRDS →pg_restore→ row-count parity checkbalancer.secrets/balancer-config.yamlwith the cnpg host, bump the image off1.1.5ScheduledBackup, then decommission RDSSteps 2, 4 and 5 need cluster and AWS credentials, so they cannot be delivered as PRs.