Database and backups
Chart values: database, backup.
Generated from
charts/harthelm/values.yaml at v1.5.0database
| Value | Type | Default | Description |
|---|---|---|---|
database.mode | bundled, external | "bundled" | bundled: a CloudNativePG Cluster (the operator must be installed). external: your own PostgreSQL (>= 16). |
database.bundled.instances | integer | 1 | |
database.bundled.image | object | The platform database's image, pinned by tag and digest like the managed PostgreSQL operands: its minor version moves only with a Harthelm release, which then restarts it once. | |
database.bundled.image.registry | string | "ghcr.io" | |
database.bundled.image.repository | string | "cloudnative-pg/postgresql" | |
database.bundled.image.tag | string | "18.6" | |
database.bundled.image.digest | string | below | |
database.bundled.smartShutdownTimeout | integer | 15 | Seconds PostgreSQL waits for its clients to disconnect when the operator restarts it (a new image, a parameter that needs a restart, a node drain) before it closes their sessions (CloudNativePG's smartShutdownTimeout, whose default is 180). The old core keeps its connections open until the new one is ready, and the new one cannot connect while PostgreSQL waits, so the console and the API were down for the whole wait at an upgrade that restarted the database. 0 closes the sessions at once; keep it below the operator's stopDelay (1800). |
database.bundled.storage.storageClass | string | "" | |
database.bundled.storage.size | string | "5Gi" | |
database.bundled.resources.requests.cpu | string or number | "100m" | |
database.bundled.resources.requests.memory | string or number | "256Mi" | |
database.bundled.resources.limits.memory | string or number | "512Mi" | |
database.bundled.parameters | object | {} | PostgreSQL settings, e.g. shared_buffers: 64MB; any pg_stat_statements.* setting loads that extension (restarts PostgreSQL) |
database.bundled.monitoring.customQueries | string | "" | Extra queries for the operator's exporter on :9187 (CloudNativePG's custom-queries format, a YAML string), rendered as the ConfigMap <db>-monitoring. Scraping needs networkPolicy.metricsNamespaceSelector. |
database.bundled.monitoring.operatorQueriesConfigMap | string | "cnpg-default-monitoring" | The operator's own default-queries ConfigMap (CloudNativePG's MONITORING_QUERIES_CONFIGMAP). Its webhook puts it first in the list when it is missing, so the chart names it too; empty when the operator runs without one. |
database.external.existingSecret | string | "" | Secret holding the DSN |
database.external.key | string | "dsn" | |
database.external.sslmode | disable, allow, prefer, require, verify-ca, verify-full | "require" | disable | allow | prefer | require | verify-ca | verify-full |
database.external.ca.secretName | string | "" | Secret with the server CA, mounted for verify-ca and verify-full |
database.external.ca.key | string | "ca.crt" |
backup
| Value | Type | Default | Description |
|---|---|---|---|
backup.enabled | boolean | false | Daily pg_dump -Fc of the platform database to a volume: audit.backups records every run, core exports harthelm_backup_* metrics from it. Needs persistence below. |
backup.schedule | string | "30 2 * * *" | |
backup.timeZone | string | "" | empty: the controller's zone |
backup.retention.daily | integer | 7 | |
backup.retention.weekly | integer | 4 | |
backup.persistence.existingClaim | string | "" | else the chart creates <fullname>-backups |
backup.persistence.storageClass | string | "" | |
backup.persistence.size | string | "5Gi" | |
backup.persistence.accessModes | list | ["ReadWriteOnce"] | |
backup.fsGroup | integer or null | null | Group that may write the volume (fsGroup of the backup pods), for volumes that are not group-writable. |
backup.preMigration | object | A dump before every upgrade, as a Helm pre-upgrade hook and an Argo CD PreSync hook: a failed dump stops the upgrade, so no migration runs without a copy of the database that preceded it. | |
backup.preMigration.enabled | boolean | true | |
backup.preMigration.keep | integer | 10 | Pre-migration dumps kept: every upgrade writes one, so a dev cluster that deploys every commit would otherwise collect them; older ones are deleted after each dump. |
backup.managed | object | The managed services' dumps run in the same CronJob after the platform dump (docs/backup.md). | |
backup.managed.s3.maxBytes | integer | 107374182400 | The most one S3 instance's nightly snapshot may reference (bytes; 100 GiB). An instance above it is recorded as a failed dump ("too large for the nightly backup") and the others go on. 0: no limit. The backup volume needs about the unique data of every S3 instance times (1 + five weeks of changes). |
backup.resources.requests.cpu | string or number | "50m" | |
backup.resources.requests.memory | string or number | "64Mi" | |
backup.resources.limits.memory | string or number | "256Mi" | |
backup.workspaces | object | Archives of sleeping workspaces. Core starts a Job per sleeping workspace that changed since its last archive (the volume read-only, PSA restricted, as the volume's UID), and the Job streams a tar.gz of /data/app and /data/tools to a receiver: one Deployment and Service <fullname>-backup that owns the backup volume and writes below workspaces/ (the platform dumps stay in platform/). Needs backup.enabled (the volume). A workspace that is awake is skipped and caught after its next sleep. Retention is backup.retention (7 daily + 4 weekly per workspace). A restore creates a new workspace from an archive (API). Needs the wake module of the same release. | |
backup.workspaces.enabled | boolean | false | |
backup.workspaces.at | string | "01:00" | When core starts the sweep, daily, HH:MM in timeZone (empty: backup.timeZone, else UTC). It must fall where the nodes that hold the volumes are on and the workspaces sleep: on a cluster that powers its day nodes off at night, after they are back. |
backup.workspaces.timeZone | string | "" | |
backup.workspaces.parallel | integer | 2 | Archive Jobs running at once. |
backup.workspaces.receiver.resources.requests.cpu | string or number | "50m" | |
backup.workspaces.receiver.resources.requests.memory | string or number | "64Mi" | |
backup.workspaces.receiver.resources.limits.memory | string or number | "256Mi" |
Long defaults
database.bundled.image.digest
sha256:899d3ed526b659d77935dde0e6bf2d69dbbf17d3d8c6486ca8cfd04bd3c18533