From 27db0d26b017c2de56958a0cda95af13165056d6 Mon Sep 17 00:00:00 2001 From: Markus Pesch Date: Sun, 4 Oct 2026 00:28:59 +0200 Subject: [PATCH] feat!: remove the postgresql sub-chart With `cloudnativePG` in place, the bundled Bitnami `postgresql` sub-chart is the second in-chart way to run a database, and the worse one. It is a single, non-HA instance without failover, backup or managed major-version upgrades, and it ships images that Bitnami no longer distributes freely. Keeping it around means maintaining two code paths for the same job, including the mutual-exclusion assertion between both dependencies and a second set of DNS, credential and image helpers. Removing it leaves exactly two supported choices: a CloudNativePG `Cluster` rendered by this chart, or an external database configured via `gitea.config.database`. Both scale from a single instance to a HA setup - `cloudnativePG.instances=1` covers the use case the `postgresql` sub-chart served - so nothing is lost besides the duplication. BREAKING CHANGE: The `postgresql` sub-chart and all `postgresql.*` values have been removed. There is no in-place migration path: dump the database of the old `postgresql` release with `pg_dump`, remove the `postgresql` values, deploy the chart with `cloudnativePG.enabled=true` and restore the dump. Alternatively point `gitea.config.database` at an externally managed database. Setting `postgresql` now fails the release with a pointer to the changelog. Co-authored-by: Copilot --- .github/copilot-instructions.md | 2 +- Chart.lock | 7 +- Chart.yaml | 5 - README.md | 80 ++++---------- docs/ha-setup.md | 8 +- templates/_helpers.tpl | 15 --- templates/deprecation.yaml | 5 + templates/secret_config.yaml | 5 - unittests/helm/config/database.yaml | 11 -- .../customizationIntegrityPostgresql.yaml | 102 ------------------ .../dependency-checks/majorImageBump.yaml | 13 --- unittests/helm/deprecation/deployment.yaml | 7 ++ values.yaml | 51 --------- 13 files changed, 36 insertions(+), 275 deletions(-) delete mode 100644 unittests/helm/dependency-checks/customizationIntegrityPostgresql.yaml diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 4c4d602..7cfafef 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -2,7 +2,7 @@ ## Project Overview -Kubernetes Helm chart for deploying [Gitea](https://gitea.com). Uses Go/Helm templating (`templates/`), YAML values (`values.yaml`), and includes sub-charts for PostgreSQL, Valkey, and Valkey-cluster. The HA-ready database is provisioned as a CloudNativePG `Cluster` resource, the operator itself is not part of the chart. +Kubernetes Helm chart for deploying [Gitea](https://gitea.com). Uses Go/Helm templating (`templates/`), YAML values (`values.yaml`), and includes a sub-chart for Valkey. The database is provisioned as a CloudNativePG `Cluster` resource, the operator itself is not part of the chart. ## Build & Test diff --git a/Chart.lock b/Chart.lock index 0a7289f..7b68267 100644 --- a/Chart.lock +++ b/Chart.lock @@ -1,9 +1,6 @@ dependencies: -- name: postgresql - repository: oci://registry-1.docker.io/bitnamicharts - version: 16.7.27 - name: valkey repository: https://valkey.io/valkey-helm version: 0.10.0 -digest: sha256:40619b69b9527f2044de588b227cf6b174011d4aa16cc048690cc970ce9ecd35 -generated: "2026-10-03T23:18:30.630364276+02:00" +digest: sha256:c3deb43d02228f143e1c9525f5ce06dc6a78646e763c7a73c5ec8ea0101ed2f5 +generated: "2026-10-04T00:24:11.331968211+02:00" diff --git a/Chart.yaml b/Chart.yaml index e404859..1bf0f5e 100644 --- a/Chart.yaml +++ b/Chart.yaml @@ -36,11 +36,6 @@ maintainers: email: christopher.homberger@web.de dependencies: - # https://github.com/bitnami/charts/blob/main/bitnami/postgresql - - name: postgresql - repository: oci://registry-1.docker.io/bitnamicharts - version: 16.7.27 - condition: postgresql.enabled # https://github.com/bitnami/charts/blob/main/bitnami/valkey/Chart.yaml - name: valkey repository: https://valkey.io/valkey-helm diff --git a/README.md b/README.md index 0c98810..4f83951 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,6 @@ - [Update and versioning policy](#update-and-versioning-policy) - [Dependencies](#dependencies) - [HA Dependencies](#ha-dependencies) - - [Non-HA Dependencies](#non-ha-dependencies) - [Dependency Versioning](#dependency-versioning) - [Installing](#installing) - [High Availability](#high-availability) @@ -59,7 +58,6 @@ - [StartupProbe](#startupprobe) - [valkey](#valkey) - [CloudNativePG](#cloudnativepg) - - [PostgreSQL](#postgresql) - [Advanced](#advanced) - [Contributing](#contributing) - [Upgrading](#upgrading) @@ -103,21 +101,15 @@ Users can also configure their own external providers via the configuration. CloudNativePG is **not** bundled as a sub-chart. Only the `Cluster` resource is rendered by this chart, the [CloudNativePG operator](https://cloudnative-pg.io/documentation/current/installation_upgrade/) must already be installed cluster-wide. Because that operator cannot be assumed to be present, `cloudnativePG.enabled` defaults to `false`. -Set it to `true` once the operator is installed, or use either the `postgresql` sub-chart or an external database instead. - -### Non-HA Dependencies - -Alternatively, the following non-HA replacements are available: - -- PostgreSQL ([Bitnami PostgreSQL](https://github.com/bitnami/charts/blob/main/bitnami/postgresql/Chart.yaml)) +Set it to `true` once the operator is installed, or use an external database instead. ### Dependency Versioning Updates of sub-charts will be incorporated into the Gitea chart as they are released. The reasoning behind this is that new users of the chart will start with the most recent sub-chart dependency versions. -**Note** If you want to stay on an older appVersion of a sub-chart dependency (e.g. PostgreSQL), you need to override the image tag in your `values.yaml` file. -In fact, we recommend to do so right from the start to be independent of major sub-chart dependency changes as they are released. +**Note** If you want to stay on an older appVersion of a dependency (e.g. PostgreSQL), you need to override the image tag in your `values.yaml` file. +In fact, we recommend to do so right from the start to be independent of major dependency changes as they are released. There is no need to update to every new PostgreSQL major version - you can happily skip some and do larger updates when you are ready for them. We recommend to use a rolling tag like `:-debian-` to incorporate minor and patch updates for the respective major version as they are released. @@ -126,7 +118,6 @@ Alternatively you can also use a versioning helper tool like [renovate](https:// Please double-check the image repository and available tags in the sub-chart: - [CloudNativePG](https://github.com/cloudnative-pg/postgres-containers/pkgs/container/postgresql) -- [PostgreSQL](https://hub.docker.com/r/bitnami/postgresql/tags) - [Valkey](https://hub.docker.com/r/valkey/valkey/tags) and look up the image tag which fits your needs on Dockerhub. @@ -341,7 +332,7 @@ External tools such as `valkey` or `memcached` handle these workloads much bette If HA is not needed/desired, the following configurations can be used to deploy a single-pod Gitea instance. -1. For a production-ready single-pod Gitea instance without external dependencies (using the chart dependency `postgresql` and `valkey`): +1. For a production-ready single-pod Gitea instance (using the chart dependency `valkey` and a single-instance CloudNativePG `Cluster`):
@@ -350,10 +341,9 @@ If HA is not needed/desired, the following configurations can be used to deploy ```yaml valkey: enabled: true - postgresql: - enabled: true cloudnativePG: - enabled: false + enabled: true + instances: 1 persistence: enabled: true @@ -381,8 +371,6 @@ If HA is not needed/desired, the following configurations can be used to deploy ```yaml valkey: enabled: false - postgresql: - enabled: false cloudnativePG: enabled: false @@ -495,7 +483,7 @@ Priority (highest to lowest) for defining app.ini variables: Any external database listed in [https://docs.gitea.com/installation/database-prep/](https://docs.gitea.com/installation/database-prep/) can be used instead of the built-in PostgreSQL. In fact, it is **highly recommended** to use an external database to ensure a stable Gitea installation longterm. -If an external database is used, no matter which type, make sure to set `postgresql.enabled` and `cloudnativePG.enabled` to `false` to disable the use of the built-in PostgreSQL. +If an external database is used, no matter which type, make sure to set `cloudnativePG.enabled` to `false` to disable the use of the built-in PostgreSQL. ```yaml gitea: @@ -508,9 +496,6 @@ gitea: PASSWD: gitea SCHEMA: gitea -postgresql: - enabled: false - cloudnativePG: enabled: false ``` @@ -614,14 +599,14 @@ persistence: In case that persistence has been disabled it will simply use an empty dir volume. -PostgreSQL handles the persistence in the exact same way. -You can interact with the postgres settings as displayed in the following example: +The CloudNativePG `Cluster` handles the persistence on its own. +You can interact with its storage settings as displayed in the following example: ```yaml -postgresql: - persistence: - enabled: true - existingClaim: MyAwesomeGiteaPostgresClaim +cloudnativePG: + storage: + size: 20Gi + storageClass: myOwnStorageClass ``` ### Admin User @@ -1431,25 +1416,6 @@ To comply with the Gitea helm chart definition of the digest parameter, a "custo | `valkey.metrics.exporter.image.repository` | Image repository. | `oliver006/redis_exporter` | | `valkey.metrics.exporter.image.tag` | Image tag. | `""` | -### PostgreSQL - -| Name | Description | Value | -| ------------------------------------------------------- | ----------------------------------------------------------------- | --------------------------------- | -| `postgresql.enabled` | Enable PostgreSQL. | `false` | -| `postgresql.global.postgresql.auth.password` | Password for the `gitea` user (overrides `auth.password`). | `gitea` | -| `postgresql.global.postgresql.auth.database` | Name for a custom database to create (overrides `auth.database`). | `gitea` | -| `postgresql.global.postgresql.auth.username` | Name for a custom user to create (overrides `auth.username`). | `gitea` | -| `postgresql.global.postgresql.service.ports.postgresql` | PostgreSQL service port (overrides `service.ports.postgresql`). | `5432` | -| `postgresql.image.repository` | Image repository, eg. `bitnamilegacy/postgresql`. | `bitnamilegacy/postgresql` | -| `postgresql.primary.persistence.enabled` | Enable persistence. | `true` | -| `postgresql.primary.persistence.storageClass` | Persistent Volume storage class. | `""` | -| `postgresql.primary.persistence.size` | PVC Storage Request for PostgreSQL volume. | `10Gi` | -| `postgresql.readReplicas.persistence.enabled` | Enable PostgreSQL read only data persistence using PVC. | `true` | -| `postgresql.readReplicas.persistence.storageClass` | Persistent Volume storage class. | `""` | -| `postgresql.readReplicas.persistence.size` | PVC Storage Request for PostgreSQL volume. | `""` | -| `postgresql.metrics.image.repository` | Image repository, eg. `bitnamilegacy/postgres-exporter`. | `bitnamilegacy/postgres-exporter` | -| `postgresql.volumePermissions.image.repository` | Image repository, eg. `bitnamilegacy/os-shell`. | `bitnamilegacy/os-shell` | - ### Advanced | Name | Description | Value | @@ -1697,28 +1663,18 @@ If you want to switch to a RWX volume and go for HA, you need to -**Transitioning from Postgres to Postgres HA** +**Transitioning from Postgres or Postgres HA to CloudNativePG** -If you are running with a non-HA PG DB from a previous chart release, you need to set - -- `cloudnativePG.enabled=false` -- `postgresql.enabled=true` - -This is needed to stay with your existing single-instance DB (as the HA-variant is the new default). - - - -**Transitioning from Postgres HA to CloudNativePG** - - -The `postgresql-ha` sub-chart has been replaced by a [CloudNativePG](https://cloudnative-pg.io/) `Cluster` resource, configured via `cloudnativePG`. +The `postgresql` and `postgresql-ha` sub-charts have been replaced by a [CloudNativePG](https://cloudnative-pg.io/) `Cluster` resource, configured via `cloudnativePG`. The CloudNativePG operator is not bundled with this chart and has to be installed cluster-wide beforehand. -There is no in-place migration path between the two: dump the database of the old `postgresql-ha` deployment with `pg_dump`, remove the `postgresql-ha` values and deploy the chart with `cloudnativePG.enabled=true`. +There is no in-place migration path: dump the database of the old deployment with `pg_dump`, remove the `postgresql` or `postgresql-ha` values and deploy the chart with `cloudnativePG.enabled=true`. Afterwards restore the dump into the new cluster. Alternatively, point the new `Cluster` at the existing data via one of the [CloudNativePG bootstrap methods](https://cloudnative-pg.io/documentation/current/bootstrap/). +For a single-instance database, set `cloudnativePG.instances=1`. + **Change of env-to-ini prefix** diff --git a/docs/ha-setup.md b/docs/ha-setup.md index 61c04a8..33478ed 100644 --- a/docs/ha-setup.md +++ b/docs/ha-setup.md @@ -28,8 +28,8 @@ In addition, the following components are required for full HA-readiness: - A HA-ready cache (`valkey-cluster`) - A HA-ready DB -`postgresql.enabled`, which defaults to `false`, must stay disabled for a HA setup. -The `postgresql` chart dependency is not HA-ready, use the `cloudnativePG` option instead. +`cloudnativePG.enabled`, which defaults to `false`, must be enabled for a HA setup. +It requires the CloudNativePG operator to be installed cluster-wide beforehand. The following sections discuss each of the components in more detail. Note that for each component discussed, the shown configurations only provides a (working) starting point, not necessarily the most optimal setup. @@ -171,13 +171,11 @@ cloudnativePG: ``` If you do not want to run the operator, using a managed database service in the cloud might be the easiest and most robust solution. -Remember: keep `cloudnativePG` and `postgresql` disabled and configure the database connection manually via `gitea.config.database`: +Remember: keep `cloudnativePG` disabled and configure the database connection manually via `gitea.config.database`: ```yml cloudnativePG: enabled: false -postgresql: - enabled: false gitea: config: diff --git a/templates/_helpers.tpl b/templates/_helpers.tpl index 7da9248..f67d2f6 100644 --- a/templates/_helpers.tpl +++ b/templates/_helpers.tpl @@ -180,12 +180,6 @@ app.kubernetes.io/instance: {{ .Release.Name }} {{- end -}} {{- end -}} -{{- define "postgresql.dns" -}} -{{- if (index .Values "postgresql").enabled -}} -{{- printf "%s-postgresql.%s.svc.%s:%g" .Release.Name .Release.Namespace .Values.clusterDomain .Values.postgresql.global.postgresql.service.ports.postgresql -}} -{{- end -}} -{{- end -}} - {{- define "valkey.dns" -}} {{- if (index .Values "valkey").enabled -}} {{- printf "redis://:%s@%s-valkey.%s.svc.%s:%g/0?pool_size=100&idle_timeout=180s&" (index (index .Values "valkey").auth.aclUsers "default").password .Release.Name .Release.Namespace .Values.clusterDomain (index .Values "valkey").service.port -}} @@ -450,15 +444,6 @@ https {{- $_ := set .Values.gitea.config.database "NAME" .Values.cloudnativePG.credentials.database -}} {{- $_ := set .Values.gitea.config.database "USER" .Values.cloudnativePG.credentials.username -}} {{- end -}} - {{- if (index .Values "postgresql" "enabled") -}} - {{- $_ := set .Values.gitea.config.database "DB_TYPE" "postgres" -}} - {{- if not (.Values.gitea.config.database.HOST) -}} - {{- $_ := set .Values.gitea.config.database "HOST" (include "postgresql.dns" .) -}} - {{- end -}} - {{- $_ := set .Values.gitea.config.database "NAME" .Values.postgresql.global.postgresql.auth.database -}} - {{- $_ := set .Values.gitea.config.database "USER" .Values.postgresql.global.postgresql.auth.username -}} - {{- $_ := set .Values.gitea.config.database "PASSWD" .Values.postgresql.global.postgresql.auth.password -}} - {{- end -}} {{- end -}} {{- define "gitea.container-additional-mounts" -}} diff --git a/templates/deprecation.yaml b/templates/deprecation.yaml index d3758d6..85957d9 100644 --- a/templates/deprecation.yaml +++ b/templates/deprecation.yaml @@ -95,6 +95,11 @@ {{- fail "`openshift.hostUsers` does no longer exist. Please refer to the changelog and configure `deployment.hostUsers` instead." -}} {{- end -}} + {{/* POSTGRESQL */}} + {{- if index .Values "postgresql" -}} + {{- fail "`postgresql` does no longer exist. Please refer to the changelog and configure `cloudnativePG` instead, which requires the CloudNativePG operator to be installed in the cluster." -}} + {{- end -}} + {{/* POSTGRESQL HA */}} {{- if index .Values "postgresql-ha" -}} {{- fail "`postgresql-ha` does no longer exist. Please refer to the changelog and configure `cloudnativePG` instead, which requires the CloudNativePG operator to be installed in the cluster." -}} diff --git a/templates/secret_config.yaml b/templates/secret_config.yaml index 340e290..90fec7a 100644 --- a/templates/secret_config.yaml +++ b/templates/secret_config.yaml @@ -21,11 +21,6 @@ data: {{- define "gitea.config.assertions" -}} - {{- /*assert that only one PG dep is enabled */ -}} - {{- if and (.Values.postgresql.enabled) (.Values.cloudnativePG.enabled) -}} - {{- fail "Only one of postgresql or cloudnativePG can be enabled at the same time." -}} - {{- end }} - {{- /* multiple replicas assertions */ -}} {{- if gt (.Values.deployment.replicas | int) 1 -}} {{- if .Values.gitea.config.cron -}} diff --git a/unittests/helm/config/database.yaml b/unittests/helm/config/database.yaml index 2140550..d5e1d80 100644 --- a/unittests/helm/config/database.yaml +++ b/unittests/helm/config/database.yaml @@ -46,14 +46,3 @@ tests: HOST=gitea-unittests-postgresql-rw.testing.svc.cluster.local:5432 NAME=gitea-database USER=gitea-username - - - it: "Fail when postgresql and cloudnativePG are enabled at the same time" - template: templates/secret_config.yaml - set: - postgresql: - enabled: true - cloudnativePG: - enabled: true - asserts: - - failedTemplate: - errorMessage: "Only one of postgresql or cloudnativePG can be enabled at the same time." diff --git a/unittests/helm/dependency-checks/customizationIntegrityPostgresql.yaml b/unittests/helm/dependency-checks/customizationIntegrityPostgresql.yaml deleted file mode 100644 index 5aadb4b..0000000 --- a/unittests/helm/dependency-checks/customizationIntegrityPostgresql.yaml +++ /dev/null @@ -1,102 +0,0 @@ -suite: Test dependency customization integrity of postgresql -release: - name: gitea-unittests - namespace: testing -set: - cloudnativePG: - enabled: false - postgresql: - enabled: true - global: - postgresql: - auth: - password: gitea-password - database: gitea-database - username: gitea-username - service: - ports: - postgresql: 1234 - primary: - persistence: - size: 1337Mi -tests: - - it: "[postgresql] Apply the database settings" - template: charts/postgresql/templates/primary/statefulset.yaml - asserts: - - documentIndex: 0 - contains: - path: spec.template.spec.containers[0].env - content: - name: POSTGRES_DATABASE - value: "gitea-database" - - documentIndex: 0 - contains: - path: spec.template.spec.containers[0].env - content: - name: POSTGRES_USER - value: "gitea-username" - - it: "[postgresql] Apply the database password" - template: charts/postgresql/templates/secrets.yaml - asserts: - - documentIndex: 0 - equal: - path: data["password"] - value: "Z2l0ZWEtcGFzc3dvcmQ=" - - it: "[postgresql] Apply primary.persistence.size" - template: charts/postgresql/templates/primary/statefulset.yaml - asserts: - - documentIndex: 0 - equal: - path: spec.volumeClaimTemplates[0].spec.resources.requests.storage - value: "1337Mi" - - it: "[postgresql] Apply global.postgresql.service.ports.postgresql" - template: charts/postgresql/templates/primary/svc.yaml - asserts: - - documentIndex: 0 - equal: - path: spec.ports[0].port - value: 1234 - - it: "[postgresql] Render the referenced Service" - template: charts/postgresql/templates/primary/svc.yaml - asserts: - - containsDocument: - kind: Service - apiVersion: v1 - name: gitea-unittests-postgresql - namespace: testing - - it: "[gitea] Connect to the postgresql Service" - template: templates/secret_inlineConfig.yaml - asserts: - - documentIndex: 0 - matchRegex: - path: data.database - decodeBase64: true - pattern: HOST=gitea-unittests-postgresql.testing.svc.cluster.local:1234 - - it: "[gitea] Connect to the postgresql Service with a custom cluster domain" - set: - clusterDomain: my-special-cluster.local - template: templates/secret_inlineConfig.yaml - asserts: - - documentIndex: 0 - matchRegex: - path: data.database - decodeBase64: true - pattern: HOST=gitea-unittests-postgresql.testing.svc.my-special-cluster.local:1234 - - it: "[gitea] Connect to the configured database" - template: templates/secret_inlineConfig.yaml - asserts: - - documentIndex: 0 - matchRegex: - path: data.database - decodeBase64: true - pattern: NAME=gitea-database - - documentIndex: 0 - matchRegex: - path: data.database - decodeBase64: true - pattern: USER=gitea-username - - documentIndex: 0 - matchRegex: - path: data.database - decodeBase64: true - pattern: PASSWD=gitea-password diff --git a/unittests/helm/dependency-checks/majorImageBump.yaml b/unittests/helm/dependency-checks/majorImageBump.yaml index 2c881bb..845ca08 100644 --- a/unittests/helm/dependency-checks/majorImageBump.yaml +++ b/unittests/helm/dependency-checks/majorImageBump.yaml @@ -3,19 +3,6 @@ release: name: gitea-unittests namespace: testing tests: - - it: "[postgresql] Detect major image version upgrades" - template: charts/postgresql/templates/primary/statefulset.yaml - set: - postgresql: - enabled: true - cloudnativePG: - enabled: false - asserts: - - documentIndex: 0 - matchRegex: - path: spec.template.spec.containers[0].image - # IN CASE OF AN INTENTIONAL MAJOR BUMP, ADJUST THIS TEST - pattern: bitnamilegacy/postgresql:17.+$ - it: "[valkey] Detect major image version upgrades" template: charts/valkey/templates/deploy_valkey.yaml set: diff --git a/unittests/helm/deprecation/deployment.yaml b/unittests/helm/deprecation/deployment.yaml index 0b2f399..2510367 100644 --- a/unittests/helm/deprecation/deployment.yaml +++ b/unittests/helm/deprecation/deployment.yaml @@ -98,6 +98,13 @@ tests: asserts: - failedTemplate: errorMessage: "`openshift.hostUsers` does no longer exist. Please refer to the changelog and configure `deployment.hostUsers` instead." + - it: "Fail when the removed `postgresql` value is set" + set: + postgresql: + enabled: true + asserts: + - failedTemplate: + errorMessage: "`postgresql` does no longer exist. Please refer to the changelog and configure `cloudnativePG` instead, which requires the CloudNativePG operator to be installed in the cluster." - it: "Fail when the removed `postgresql-ha` value is set" set: postgresql-ha: diff --git a/values.yaml b/values.yaml index d36475d..48b1765 100644 --- a/values.yaml +++ b/values.yaml @@ -1251,57 +1251,6 @@ valkey: tag: "" -## @section PostgreSQL -postgresql: - ## @param postgresql.enabled Enable PostgreSQL. - enabled: false - - ## @param postgresql.global.postgresql.auth.password Password for the `gitea` user (overrides `auth.password`). - ## @param postgresql.global.postgresql.auth.database Name for a custom database to create (overrides `auth.database`). - ## @param postgresql.global.postgresql.auth.username Name for a custom user to create (overrides `auth.username`). - ## @param postgresql.global.postgresql.service.ports.postgresql PostgreSQL service port (overrides `service.ports.postgresql`). - global: - postgresql: - auth: - password: gitea - database: gitea - username: gitea - service: - ports: - postgresql: 5432 - - ## @param postgresql.image.repository Image repository, eg. `bitnamilegacy/postgresql`. - image: - repository: bitnamilegacy/postgresql - - primary: - ## @param postgresql.primary.persistence.enabled Enable persistence. - ## @param postgresql.primary.persistence.storageClass Persistent Volume storage class. - ## @param postgresql.primary.persistence.size PVC Storage Request for PostgreSQL volume. - persistence: - enabled: true - storageClass: "" - size: 10Gi - - readReplicas: - ## @param postgresql.readReplicas.persistence.enabled Enable PostgreSQL read only data persistence using PVC. - ## @param postgresql.readReplicas.persistence.storageClass Persistent Volume storage class. - ## @param postgresql.readReplicas.persistence.size PVC Storage Request for PostgreSQL volume. - persistence: - enabled: true - storageClass: "" - size: "" - - ## @param postgresql.metrics.image.repository Image repository, eg. `bitnamilegacy/postgres-exporter`. - metrics: - image: - repository: bitnamilegacy/postgres-exporter - - ## @param postgresql.volumePermissions.image.repository Image repository, eg. `bitnamilegacy/os-shell`. - volumePermissions: - image: - repository: bitnamilegacy/os-shell - # By default, removed or moved settings that still remain in a user defined values.yaml will cause Helm to fail running the install/update. # Set it to false to skip this basic validation check. ## @section Advanced