Harthelm Docs

Database and backups

Chart values: database, backup.

Generated from charts/harthelm/values.yaml at v1.5.0

database

ValueTypeDefaultDescription
database.modebundled, external"bundled"bundled: a CloudNativePG Cluster (the operator must be installed). external: your own PostgreSQL (>= 16).
database.bundled.instancesinteger1
database.bundled.imageobjectThe 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.registrystring"ghcr.io"
database.bundled.image.repositorystring"cloudnative-pg/postgresql"
database.bundled.image.tagstring"18.6"
database.bundled.image.digeststringbelow
database.bundled.smartShutdownTimeoutinteger15Seconds 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.storageClassstring""
database.bundled.storage.sizestring"5Gi"
database.bundled.resources.requests.cpustring or number"100m"
database.bundled.resources.requests.memorystring or number"256Mi"
database.bundled.resources.limits.memorystring or number"512Mi"
database.bundled.parametersobject{}PostgreSQL settings, e.g. shared_buffers: 64MB; any pg_stat_statements.* setting loads that extension (restarts PostgreSQL)
database.bundled.monitoring.customQueriesstring""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.operatorQueriesConfigMapstring"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.existingSecretstring""Secret holding the DSN
database.external.keystring"dsn"
database.external.sslmodedisable, allow, prefer, require, verify-ca, verify-full"require"disable | allow | prefer | require | verify-ca | verify-full
database.external.ca.secretNamestring""Secret with the server CA, mounted for verify-ca and verify-full
database.external.ca.keystring"ca.crt"

backup

ValueTypeDefaultDescription
backup.enabledbooleanfalseDaily 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.schedulestring"30 2 * * *"
backup.timeZonestring""empty: the controller's zone
backup.retention.dailyinteger7
backup.retention.weeklyinteger4
backup.persistence.existingClaimstring""else the chart creates <fullname>-backups
backup.persistence.storageClassstring""
backup.persistence.sizestring"5Gi"
backup.persistence.accessModeslist["ReadWriteOnce"]
backup.fsGroupinteger or nullnullGroup that may write the volume (fsGroup of the backup pods), for volumes that are not group-writable.
backup.preMigrationobjectA 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.enabledbooleantrue
backup.preMigration.keepinteger10Pre-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.managedobjectThe managed services' dumps run in the same CronJob after the platform dump (docs/backup.md).
backup.managed.s3.maxBytesinteger107374182400The 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.cpustring or number"50m"
backup.resources.requests.memorystring or number"64Mi"
backup.resources.limits.memorystring or number"256Mi"
backup.workspacesobjectArchives 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.enabledbooleanfalse
backup.workspaces.atstring"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.timeZonestring""
backup.workspaces.parallelinteger2Archive Jobs running at once.
backup.workspaces.receiver.resources.requests.cpustring or number"50m"
backup.workspaces.receiver.resources.requests.memorystring or number"64Mi"
backup.workspaces.receiver.resources.limits.memorystring or number"256Mi"

Long defaults

database.bundled.image.digest

sha256:899d3ed526b659d77935dde0e6bf2d69dbbf17d3d8c6486ca8cfd04bd3c18533

On this page