Skip to content

v0.3.2

Latest

Choose a tag to compare

@github-actions github-actions released this 15 Oct 17:06
Immutable release. Only release title and notes can be modified.
674fafc

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-stack

The 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