PostgreSQL Store Configuration
Overview
NVSentinel can use PostgreSQL instead of MongoDB as the health-events datastore. With postgresql.enabled: true, the chart deploys an in-cluster Bitnami PostgreSQL instance.
For architecture, schema, TLS modes, and MongoDB migration, see PostgreSQL Provider.
To use a cloud-managed PostgreSQL service (RDS, Azure Database for PostgreSQL, Cloud SQL), see External Datastore.
Enable in-cluster PostgreSQL
Full example: distros/kubernetes/nvsentinel/values-postgresql.yaml
Configuration keys
Server TLS, pg_hba, and init scripts are under postgresql.primary.* (see the example values file).
The postgresql subchart is upstream
Everything under postgresql. other than postgresql.enabled belongs to the vendored Bitnami PostgreSQL chart (chart 15.5.38, PostgreSQL 16.4.0), not to NVSentinel. Its full value reference is the upstream chart’s own documentation and distros/kubernetes/nvsentinel/charts/postgresql/values.yaml; this page does not repeat it.
The keys NVSentinel’s own example sets are these:
Anything else the upstream chart offers — replication, backups, resource presets, ldap, audit, network policy — is available and unmodified, but NVSentinel does not test it and the NVSentinel version does not pin your usage of it.
Pod priority
global.priorityClassName and global.systemPriorityClassName do not apply to the PostgreSQL pods. The subchart does not read NVSentinel’s global values, so a release rendered with only those globals leaves the PostgreSQL StatefulSet with no priorityClassName.
Use the upstream key instead:
The chart’s default architecture is standalone, so primary is the only key that matters unless you switch to replication.
Give the datastore at least the priority you give the modules that depend on it. A preempted datastore stops fault detection for the whole cluster, while the health monitors keep running at their own higher priority and cannot persist what they find.
See Pod Priority for the settings that do apply to NVSentinel’s own components.
Secrets
Do not put a password in your values file. Create a Secret and point the chart at it:
The example values file ships postgresPassword: "changeme" to keep a first install working. Replace it before any real deployment.
For the modules’ own connection, set global.datastore.credentialsFromSecret.name to a Secret that defines DATASTORE_PASSWORD, rather than putting the password in values. See External Datastore for the full credential model.
Verify after install
In-cluster service hostname is typically {RELEASE_NAME}-postgresql (for example nvsentinel-postgresql when the release name is nvsentinel).