Repository navigation
Release notes — v0.3.2
First-class PostgreSQL extensions, plus Prometheus scraping for every instance.
Highlights
PostgreSQL extensions
Enable extensions with spec.components.engine.parameters.extensions.<name>.enabled. The provider creates them in the application database through one CloudNativePG Database (<instance>-extensions). That also fixes TimescaleDB instances that never became Ready, because their Database resource was not being synced.
| Extension | Toggle | PostgreSQL | Enable later | Disable |
|---|---|---|---|---|
| pgvector | pgvector |
14–18, bundled | Yes, no restart | No |
| pgAudit | pgaudit |
14–18, bundled | Yes, rolling restart | Yes |
| TimescaleDB OSS | timescaledb |
18, image volume | Creation only | No |
| PostGIS | postgis |
18, image volume | Yes, rolling restart | No |
| pgRouting | pgrouting |
18, image volume (needs PostGIS) | Yes, rolling restart | No |
| pg_ivm | pgivm |
18, image volume | Creation only | No |
| wal2json | wal2json |
18, image volume | Yes, rolling restart | Yes |
| Apache AGE | age |
18, image volume | Creation only | No |
Image-volume extensions need PostgreSQL 18 and Kubernetes ImageVolume (1.35+, or 1.33/1.34 with the feature gate). Their images come from a CloudNativePG ClusterImageCatalog the chart renders from extensionCatalog (official CloudNativePG trixie builds, plus AGE, pinned by digest). Bump or mirror images with helm upgrade, or set extensionCatalog.create=false and point extensionCatalog.name at a catalog you manage. SQL versions belong in sql-version.extensions.openeverest.io/<major>.<name> annotations. A new image restarts the instances that use it.
TimescaleDB, pg_ivm, and AGE are creation-only. The provider rejects enabling them on a running instance. pgAudit sets pgaudit.log to ddl, role unless you set it in postgresql.parameters. AGE grants the application owner USAGE on ag_catalog at bootstrap. Run SET search_path = ag_catalog, "$user", public before using it. wal2json is a logical decoding plugin, so there is no CREATE EXTENSION; drop replication slots that use it before disabling it.
See examples/instance-pgvector.yaml and examples/instance-timescaledb.yaml.
Prometheus monitoring
With the Prometheus Operator installed, turn on Monitoring → Prometheus to create a PodMonitor (<instance>-metrics) that scrapes the CloudNativePG metrics exporter on port 9187. Scraping uses HTTPS when spec.components.engine.parameters.monitoring.tls.enabled is set. Use podMonitorLabels so your Prometheus podMonitorSelector can select the monitor. Turning the toggle off removes the PodMonitor.
spec:
topology:
type: replicaSet
parameters:
monitoring:
prometheus:
enabled: true
podMonitorLabels:
release: kube-prometheus-stackThe PodMonitor is labeled app.kubernetes.io/managed-by=everest and app.kubernetes.io/instance=<instance> for the OpenEverest metrics plugin. The provider rejects spec.components.engine.parameters.monitoring.enablePodMonitor while this toggle is on, so each pod is scraped once.
What's Changed
Full Changelog: v0.3.1...v0.3.2