diff --git a/charts/pg-db/Chart.yaml b/charts/pg-db/Chart.yaml index 7cab1183..7e15bacd 100644 --- a/charts/pg-db/Chart.yaml +++ b/charts/pg-db/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 name: pg-db description: 'A Helm chart to deploy the PostgreSQL database with the Percona Operator for PostgreSQL' type: application -version: 2.4.2 +version: 2.4.3 appVersion: 2.4.1 home: https://docs.percona.com/percona-operator-for-postgresql/2.0/ maintainers: diff --git a/charts/pg-db/README.md b/charts/pg-db/README.md index 0a0f7c69..05f129bd 100644 --- a/charts/pg-db/README.md +++ b/charts/pg-db/README.md @@ -24,194 +24,206 @@ To install the chart with the `pg` release name using a dedicated namespace (rec ```sh helm repo add percona https://percona.github.io/percona-helm-charts/ -helm install my-db percona/pg-db --version 2.4.1 --namespace my-namespace +helm install my-db percona/pg-db --version 2.4.3 --namespace my-namespace ``` The chart can be customized using the following configurable parameters: -| Parameter | Description | Default | -| ------------------------------- | ------------------------------------------------------------------------------|-------------------------------------------------------------| -| `finalizers` | Finalizers list | `{}` | -| `crVersion` | CR Cluster Manifest version | `2.4.1` | -| `repository` | PostgreSQL container image repository | `percona/percona-postgresql-operator` | -| `image` | Postgres image | `percona/percona-postgresql-operator:2.4.1-ppg16.3-postgres` | -| `imagePullPolicy` | image Pull Policy | `Always` | -| `port` | PostgreSQL port | `5432` | -| `postgresVersion` | PostgreSQL container version tag | `16` | -| `pause` | Stop PostgreSQL Database safely | `false` | -| `unmanaged` | Start cluster and don't manage it (cross cluster replication) | `false` -| `standby.enabled` | Switch/start PostgreSQL Database in standby mode | `false` | -| `standby.host` | Host address of the primary cluster this standby cluster connects to | `` | -| `standby.port` | Port number used by a standby copy to connect to the primary cluster | `` | -| `standby.repoName` | Name of the pgBackRest repository in the primary cluster this standby cluster connects to | `` | -| `customTLSSecret.name` | A secret with TLS certificate generated for external communications | `""` | -| `customReplicationTLSSecret.name` | A secret with TLS certificate generated for internal communications | `""` | -| `openshift` | Set to true if the cluster is being deployed on OpenShift, set to false otherwise, or unset it for autodetection | `false` | -| `users.name` | The name of the PostgreSQL user | `""` | -| `users.databases` | Databases accessible by a specific PostgreSQL user with rights to create objects in them (the option is ignored for postgres user; also, modifying it can’t be used to revoke the already given access) | `{}` | -| `users.options` | The ALTER ROLE options other than password (the option is ignored for postgres user) | `""` | -| `users.password.type` | The set of characters used for password generation: can be either ASCII (default) or AlphaNumeric | `ASCII` | -| `users.secretName` | User secret name | `"rhino-credentials"` | -| `databaseInitSQL.key` | Data key for the Custom configuration options ConfigMap with the init SQL file, which will be executed at cluster creation time | `init.sql` | -| `databaseInitSQL.name` | Name of the ConfigMap with the init SQL file, which will be executed at cluster creation time | `cluster1-init-sql` | -| `dataSource.postgresCluster.clusterName` | Name of an existing cluster to use as the data source when restoring backup to a new cluster | `""` | -| `dataSource.postgresCluster.repoName` | Name of the pgBackRest repository in the source cluster that contains the backup to be restored to a new cluster | `""` | -| `dataSource.postgresCluster.options` | The pgBackRest command-line options for the pgBackRest restore command | `[]` | -| `dataSource.postgresCluster.tolerations.effect` | The Kubernetes Pod tolerations effect for data migration jobs | `NoSchedule` | -| `dataSource.postgresCluster.tolerations.key` | The Kubernetes Pod tolerations key for data migration jobs | `role` | -| `dataSource.postgresCluster.tolerations.operator` | The Kubernetes Pod tolerations operator for data migration jobs | `Equal` | -| `dataSource.postgresCluster.tolerations.value` | The Kubernetes Pod tolerations value for data migration jobs | `connection-poolers` | -| `dataSource.pgbackrest.stanza` | Name of the pgBackRest stanza to use as the data source when restoring backup to a new cluster | `""` | -| `dataSource.pgbackrest.configuration[].secret.name` | Name of the Kubernetes Secret object with custom pgBackRest configuration, which will be added to the pgBackRest configuration generated by the Operator | `""` | -| `dataSource.pgbackrest.global.repo1-path` | Repo path are to be included in the global section of the pgBackRest configuration generated by the Operator | `""` | -| `dataSource.pgbackrest.tolerations.effect` | The Kubernetes Pod tolerations effect for pgBackRest | `NoSchedule` | -| `dataSource.pgbackrest.tolerations.key` | The Kubernetes Pod tolerations key for pgBackRest | `role` | -| `dataSource.pgbackrest.tolerations.operator` | The Kubernetes Pod tolerations operator for pgBackRest | `Equal` | -| `dataSource.pgbackrest.tolerations.value` | The Kubernetes Pod tolerations value for pgBackRest| `connection-poolers` | -| `dataSource.pgbackrest.repo.name` | Name of the pgBackRest repository | `""` | -| `dataSource.pgbackrest.repo.s3.bucket` | The Amazon S3 bucket name used for backups | `""` | -| `dataSource.pgbackrest.repo.s3.endpoint` | The endpoint URL of the S3-compatible storage to be used for backups (not needed for the original Amazon S3 cloud) | `""` | -| `dataSource.pgbackrest.repo.s3.region` | The AWS region to use for Amazon and all S3-compatible storages | `""` | -| `dataSource.volumes.pgDataVolume` | Defines the existing pgData volume and directory to use in the current PostgresCluster | `{}` | -| `dataSource.volumes.pgWALVolume` | Defines the existing pg_wal volume and directory to use in the current PostgresCluster | `{}` | -| `dataSource.volumes.pgBackRestVolume` | Defines the existing pgBackRest repo volume and directory to use in the current PostgresCluster | `{}` | -| `expose.annotations` | The Kubernetes annotations metadata for PostgreSQL | `{}` | -| `expose.labels` | Set labels for the PostgreSQL Service | `{}` | -| `expose.type` | Specifies the type of Kubernetes Service for PostgreSQL | `LoadBalancer` | -| `expose.loadBalancerSourceRanges` | The range of client IP addresses from which the load balancer should be reachable (if not set, there is no limitations) | `[]` | -| `exposeReplicas.annotations` | The Kubernetes annotations metadata for PostgreSQL replicas | `{}` | -| `exposeReplicas.labels` | Set labels for the PostgreSQL Service replicas | `{}` | -| `exposeReplicas.type` | Specifies the type of Kubernetes Service for PostgreSQL replicas | `LoadBalancer` | -| `exposeReplicas.loadBalancerSourceRanges` | The range of client IP addresses from which the load balancer should be reachable (if not set, there is no limitations) for PostgreSQL replicas | `[]` | -| `instances.name` | The name of the PostgreSQL instance | `instance1` | -| `instances.replicas` | The number of Replicas to create for the PostgreSQL instance | `3` | -| `instances.affinity.podAntiAffinity` | Pod anti-affinity, allows setting the standard Kubernetes affinity constraints of any complexity | `{}` | -| `instances.resources.requests.memory` | Kubernetes memory requests for a PostgreSQL instance | `""` | -| `instances.resources.requests.cpu` | Kubernetes CPU requests for a PostgreSQL instance | `""` | -| `instances.resources.limits.memory` | Kubernetes memory limits for a PostgreSQL instance | `""` | -| `instances.resources.limits.cpu` | Kubernetes CPU limits for a PostgreSQL instance | `""` | -| `instances.containers.replicaCertCopy.resources.limits.cpu` | Kubernetes CPU limits for replicaCertCopy instance | `200m` | -| `instances.containers.replicaCertCopy.resources.limits.memory` | Kubernetes memory limits for replicaCertCopy instance | `128Mi` | -| `instances.sidecars.name` | Name of the custom sidecar container for PostgreSQL Pods | `testcontainer` | -| `instances.sidecars.image` | Image for the custom sidecar container for PostgreSQL Pods | `mycontainer1:latest` | -| `instances.topologySpreadConstraints.maxSkew` | The degree to which Pods may be unevenly distributed under the Kubernetes Pod Topology Spread Constraints | `1` | -| `instances.topologySpreadConstraints.topologyKey` | The key of node labels for the Kubernetes Pod Topology Spread Constraints | `my-node-label` | -| `instances.topologySpreadConstraints.whenUnsatisfiable` | What to do with a Pod if it doesn’t satisfy the Kubernetes Pod Topology Spread Constraints | `DoNotSchedule` | -| `instances.topologySpreadConstraints.labelSelector.matchLabels` | The Label selector for the Kubernetes Pod Topology Spread Constraints | `postgres-operator.crunchydata.com/instance-set: instance1` | -| `instances.tolerations.effect` | The Kubernetes Pod tolerations effect for the PostgreSQL instance | `NoSchedule` | -| `instances.tolerations.key` | The Kubernetes Pod tolerations key for the PostgreSQL instance | `role` | -| `instances.tolerations.operator` | The Kubernetes Pod tolerations operator for the PostgreSQL instance | `Equal` | -| `instances.tolerations.value` | The Kubernetes Pod tolerations value for the PostgreSQL instance | `connection-poolers` | -| `instances.priorityClassName` | The Kuberentes Pod priority class for PostgreSQL instance Pods | `high-priority` | -| `instances.securityContext` | The Kubernetes Pod security context for the PostgreSQL instance | `{}` | -| `instances.walVolumeClaimSpec.accessModes` | The Kubernetes PersistentVolumeClaim access modes for the PostgreSQL Write-ahead Log storage | `ReadWriteOnce` | -| `instances.walVolumeClaimSpec.storageClassName` | The Kubernetes storageClassName for the Write-ahead Log storage | `""` -| `instances.walVolumeClaimSpec.resources.requests.storage` | The Kubernetes storage requests for the PostgreSQL Write-ahead Log use | `1Gi` | -| `instances.dataVolumeClaimSpec.accessModes` | The Kubernetes PersistentVolumeClaim access modes for the PostgreSQL data storage | `ReadWriteOnce` | -| `instances.dataVolumeClaimSpec.storageClassName` | The Kubernetes storageClassName for the PostgreSQL data storage | `""` -| `instances.dataVolumeClaimSpec.resources.requests.storage` | The Kubernetes storage requests for the storage the PostgreSQL instance will use | `1Gi` | -| `backups.pgbackrest.metadata.labels` | Set labels for pgbackrest | `test-label:test` | -| `backups.pgbackrest.configuration` | Name of the Kubernetes Secret object with custom pgBackRest configuration, which will be added to the pgBackRest configuration generated by the Operator | `[]` | -| `backups.pgbackrest.containers.pgbackrest.resources.limits.cpu` | Kubernetes CPU limits for pgbackrest instance | `200m` | -| `backups.pgbackrest.containers.pgbackrest.resources.limits.memory` | Kubernetes memory limits for pgbackrest instance | `128Mi` | -| `backups.pgbackrest.containers.pgbackrestConfig.resources.limits.cpu` | Kubernetes CPU limits for pgbackrestConfig instance | `200m` | -| `backups.pgbackrest.containers.pgbackrestConfig.resources.limits.memory` | Kubernetes memory limits for pgbackrestConfig instance | `128Mi` | -| `backups.pgbackrest.jobs.priorityClassName` | The Kuberentes Pod priority class for pgBackRest jobs | `high-priority` | -| `backups.pgbackrest.jobs.resources.limits.cpu` | Kubernetes CPU limits for a pgBackRest job | `200m` | -| `backups.pgbackrest.jobs.resources.limits.memory` | Kubernetes memory limits for a pgBackRest job | `128Mi` | -| `backups.pgbackrest.jobs.tolerations.effect` | The Kubernetes Pod tolerations effect for a backup job | `NoSchedule` | -| `backups.pgbackrest.jobs.tolerations.key` | The Kubernetes Pod tolerations key for a backup job | `role` | -| `backups.pgbackrest.jobs.tolerations.operator` | The Kubernetes Pod tolerations operator for a backup job | `Equal` | -| `backups.pgbackrest.jobs.tolerations.value` | The Kubernetes Pod tolerations value for a backup job | `connection-poolers` | -| `backups.pgbackrest.jobs.securityContext` | The Kubernetes Pod security context for pgBackRest jobs | `{}` | -| `backups.pgbackrest.global` | Settings, which are to be included in the global section of the pgBackRest configuration generated by the Operator | `/pgbackrest/postgres-operator/hippo/repo1` | -| `backups.pgbackrest.repoHost.topologySpreadConstraints.maxSkew` | The degree to which Pods may be unevenly distributed under the Kubernetes Pod Topology Spread Constraints | `1` | -| `backups.pgbackrest.repoHost.topologySpreadConstraints.topologyKey` | The key of node labels for the Kubernetes Pod Topology Spread Constraints | `my-node-label` | -| `backups.pgbackrest.repoHost.topologySpreadConstraints.whenUnsatisfiable` | What to do with a Pod if it doesn’t satisfy the Kubernetes Pod Topology Spread Constraints | `DoNotSchedule` | -| `backups.pgbackrest.repoHost.topologySpreadConstraints.labelSelector.matchLabels` | The Label selector for the Kubernetes Pod Topology Spread Constraints | `postgres-operator.crunchydata.com/instance-set: instance1` | -| `backups.pgbackrest.repoHost.priorityClassName` | The Kuberentes Pod priority class for pgBackRest repo | `high-priority` | -| `backups.pgbackrest.repoHost.affinity.podAntiAffinity` | Pod anti-affinity, allows setting the standard Kubernetes affinity constraints of any complexity | `{}` | -| `backups.pgbackrest.repoHost.tolerations.effect` | The Kubernetes Pod tolerations effect for pgBackRest repo | `NoSchedule` | -| `backups.pgbackrest.repoHost.tolerations.key` | The Kubernetes Pod tolerations key for pgBackRest repo | `role` | -| `backups.pgbackrest.repoHost.tolerations.operator` | The Kubernetes Pod tolerations operator for pgBackRest repo | `Equal` | -| `backups.pgbackrest.repoHost.tolerations.value` | The Kubernetes Pod tolerations value for pgBackRest repo | `connection-poolers` | -| `backups.pgbackrest.repoHost.securityContext` | The Kubernetes Pod security context for pgBackRest repo | `{}` | -| `backups.pgbackrest.manual.repoName` | Name of the pgBackRest repository for on-demand backups | `repo1` | -| `backups.pgbackrest.manual.options` | The on-demand backup command-line options which will be passed to pgBackRest for on-demand backups | `--type=full` | -| `backups.pgbackrest.repos.repo1.name` | Name of the pgBackRest repository for backups | `repo1` | -| `backups.pgbackrest.repos.repo1.schedules.full` | Scheduled time to make a full backup specified in the crontab format | `0 0 \* \* 6` | -| `backups.pgbackrest.repos.repo1.schedules.differential` | Scheduled time to make a differential backup specified in the crontab format | `0 0 \* \* 6` | -| `backups.pgbackrest.repos.repo1.schedules.incremental` | Scheduled time to make an incremental backup specified in the crontab format | `0 0 \* \* 6` | -| `backups.pgbackrest.repos.repo1.volume.volumeClaimSpec.accessModes` | The Kubernetes PersistentVolumeClaim access modes for the pgBackRest Storage | `ReadWriteOnce` | -| `backups.pgbackrest.repos.repo1.volume.volumeClaimSpec.storageClassName` | The Kubernetes storageClassName for the pgBackRest Storage | `""` -| `backups.pgbackrest.repos.repo1.volume.volumeClaimSpec.resources.requests.storage` | The Kubernetes storage requests for the pgBackRest storage | `1Gi` | -| `backups.pgbackrest.repos.repo3.gcs.bucket` | The Google Cloud Storage bucket | `my-bucket` | -| `backups.pgbackrest.repos.repo4.azure.container` | Name of the Azure Blob Storage container for backups | `my-container` | -| `backups.pgbackrest.restore.tolerations.effect` | The Kubernetes Pod tolerations effect for the backup restore job | `NoSchedule` | -| `backups.pgbackrest.restore.tolerations.key` | The Kubernetes Pod tolerations key for the backup restore job | `role` | -| `backups.pgbackrest.restore.tolerations.operator` | The Kubernetes Pod tolerations operator for the backup restore job | `Equal` | -| `backups.pgbackrest.restore.tolerations.value` | The Kubernetes Pod tolerations value for the backup restore job | `connection-poolers` | -| `backups.restore.enabled` | Enables or disables restoring a previously made backup | `false` | -| `backups.restore.repoName` | Name of the pgBackRest repository that contains the backup to be restored | `repo1` | -| `backups.restore.options` | The pgBackRest command-line options for the pgBackRest restore command | `--type=time` | -| `backups.pgbackrest.image` | Set this variable if you need to use a custom pgBackrest image | `percona/percona-postgresql-operator:2.4.1-ppg16.3-pgbackrest2.51-1` | -| `backups.repos.repo2.s3.bucket` | Storage bucket | `` | -| `backups.repos.repo2.s3.region` | S3-compatible storage name | `` | -| `backups.repos.repo2.s3.endpoint` | S3-compatible storage endpoint | `` | -| `proxy.pgBouncer.expose.annotations` | The Kubernetes annotations metadata for pgBouncer | `pg-cluster-annot: cluster1` | -| `proxy.pgBouncer.expose.labels` | Set labels for the pgBouncer Service | `pg-cluster-label: cluster1` | -| `proxy.pgBouncer.expose.type` | K8S service type for the pgbouncer deployment | `ClusterIP` | -| `proxy.pgBouncer.expose.loadBalancerSourceRanges` | The range of client IP addresses from which the load balancer should be reachable (if not set, there is no limitations) | `[]` | -| `proxy.pgBouncer.sidecars.image` | Image for the custom sidecar container for pgBouncer Pods | `mycontainer1:latest` | -| `proxy.pgBouncer.sidecars.name` | Name of the custom sidecar container for pgBouncer Pods | `testcontainer` | -| `proxy.pgBouncer.exposeSuperusers` | Allow superusers connect via pgbouncer | `false` | -| `proxy.pgBouncer.config.global` | Custom configuration options for pgBouncer. | `pool_mode: transaction` | -| `proxy.pgBouncer.topologySpreadConstraints.maxSkew` | The degree to which Pods may be unevenly distributed under the Kubernetes Pod Topology Spread Constraints | `1` | -| `proxy.pgBouncer.topologySpreadConstraints.topologyKey` | The key of node labels for the Kubernetes Pod Topology Spread Constraints | `my-node-label` | -| `proxy.pgBouncer.topologySpreadConstraints.whenUnsatisfiable` | What to do with a Pod if it doesn’t satisfy the Kubernetes Pod Topology Spread Constraints | `DoNotSchedule` | -| `proxy.pgBouncer.topologySpreadConstraints.labelSelector.matchLabels` | The Label selector for the Kubernetes Pod Topology Spread Constraints | `postgres-operator.crunchydata.com/instance-set: instance1` | -| `proxy.pgBouncer.tolerations.effect` | The Kubernetes Pod tolerations effect for the PostgreSQL instance | `NoSchedule` | -| `proxy.pgBouncer.tolerations.key` | The Kubernetes Pod tolerations key for the PostgreSQL instance | `role` | -| `proxy.pgBouncer.tolerations.operator` | The Kubernetes Pod tolerations operator for the PostgreSQL instance | `Equal` | -| `proxy.pgBouncer.tolerations.value` | The Kubernetes Pod tolerations value for the PostgreSQL instance | `connection-poolers` | -| `proxy.pgBouncer.customTLSSecret.name` | Custom external TLS secret name | `keycloakdb-pgbouncer.tls` | -| `proxy.pgBouncer.securityContext` | The Kubernetes Pod security context for the pgBouncer instance | `{}` | -| `proxy.pgBouncer.affinity.podAntiAffinity` | Pod anti-affinity, allows setting the standard Kubernetes affinity constraints of any complexity | `{}` | -| `proxy.pgBouncer.image` | Set this variable if you need to use a custom pgbouncer image | `percona/percona-postgresql-operator:2.4.1-ppg16.3-pgbouncer1.22.1` | -| `proxy.pgBouncer.replicas` | The number of pgbouncer instances | `3` | -| `proxy.pgBouncer.resources.requests.cpu` | Container resource request for CPU | `1` | -| `proxy.pgBouncer.resources.requests.memory` | Container resource request for RAM | `128Mi` | -| `proxy.pgBouncer.resources.limits.cpu` | Container resource limits for CPU | `2` | -| `proxy.pgBouncer.resources.limits.memory` | Container resource limits for RAM | `512Mi` | -| `proxy.pgBouncer.containers.pgbouncerConfig.resources.limits.cpu` | Kubernetes CPU limits for pgbouncerConfig instance | `200m` | -| `proxy.pgBouncer.containers.pgbouncerConfig.resources.limits.memory` | Kubernetes memory limits for pgbouncerConfig instance | `128Mi` | -| `pmm.enabled` | Enable integration with [Percona Monitoring and Management software](https://www.percona.com/blog/2020/07/23/using-percona-kubernetes-operators-with-percona-monitoring-and-management/) | `false` | -| `pmm.image.repository` | PMM Container image repository | `percona/pmm-client` | -| `pmm.image.tag` | PMM Container image tag | `2.42.0` | -| `pmm.serverHost` | PMM server related K8S service hostname | `monitoring-service` | -| `pmm.resources.requests.memory` | Container resource request for RAM | `200M` | -| `pmm.resources.requests.cpu` | Container resource request for CPU | `500m` | -| `patroni.syncPeriodSeconds` | The interval for refreshing the leader lock and applying dynamicConfiguration | `10` | -| `patroni.leaderLeaseDurationSeconds` | TTL of the cluster leader lock | `30` | -| `patroni.dynamicConfiguration` | Custom PostgreSQL configuration options. Please note that configuration changes are automatically applied to the running instances without validation, so having an invalid config can make the cluster unavailable | `{}` | -| `patroni.dynamicConfiguration.postgresql.parameters` | Custom PostgreSQL configuration options | `{}` | -| `patroni.dynamicConfiguration.postgresql.pg_hba` | PostgreSQL Host-Based Authentication section | `{}` | -| `patroni.switchover.enabled` | Enables or disables manual change of the cluster primary instance | `""` | -| `patroni.switchover.targetInstance` | The name of the Pod that should be set as the new primary. When not specified, the new primary will be selected randomly | `""` | -| `extensions.image` | Image for the custom PostgreSQL extension loader sidecar container | `""` | -| `extensions.imagePullPolicy` | Policy for the custom extension sidecar container | `Always` | -| `extensions.storage.type` | The cloud storage type used for backups. Only s3 type is currently supported. | `""` | -| `extensions.storage.bucket` | The Amazon S3 bucket name for prepackaged PostgreSQL custom extensions | `""` | -| `extensions.storage.region` | The AWS region to use | `""` | -| `extensions.storage.endpoint` | The S3 endpoint to use. | `""` | -| `extensions.storage.secret.name` | The Kubernetes secret for the custom extensions storage. It should contain AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY keys | `""` | -| `extensions.builtin` | The key-value pairs which enable or disable Percona Distribution for PostgreSQL builtin extensions | `{}` | -| `extensions.custom` | Array of name and versions for each PostgreSQL custom extension | `[]` | -| `secrets.name` | Database secrets object name. Object will be autogenerated if the name is not explicitly specified | `-users` | -| `secrets.primaryuser` | primary user password (in use for replication only) | `autogenerated by operator` | -| `secrets.postgres` | postges user password (superuser, not accessible via pgbouncer) | `autogenerated by operator` | -| `secrets.pgbouncer` | pgbouncer user password | `autogenerated by operator` | -| `secrets.` | Default user password | `autogenerated by operator` | +| Parameter | Description | Default | +| --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ | +| `finalizers` | Finalizers list | `{}` | +| `crVersion` | CR Cluster Manifest version | `2.4.1` | +| `repository` | PostgreSQL container image repository | `percona/percona-postgresql-operator` | +| `image` | Postgres image | `percona/percona-postgresql-operator:2.4.1-ppg16.3-postgres` | +| `imagePullPolicy` | image Pull Policy | `Always` | +| `port` | PostgreSQL port | `5432` | +| `postgresVersion` | PostgreSQL container version tag | `16` | +| `pause` | Stop PostgreSQL Database safely | `false` | +| `unmanaged` | Start cluster and don't manage it (cross cluster replication) | `false` | +| `standby.enabled` | Switch/start PostgreSQL Database in standby mode | `false` | +| `standby.host` | Host address of the primary cluster this standby cluster connects to | `` | +| `standby.port` | Port number used by a standby copy to connect to the primary cluster | `` | +| `standby.repoName` | Name of the pgBackRest repository in the primary cluster this standby cluster connects to | `` | +| `customTLSSecret.name` | A secret with TLS certificate generated for external communications | `""` | +| `customReplicationTLSSecret.name` | A secret with TLS certificate generated for internal communications | `""` | +| `openshift` | Set to true if the cluster is being deployed on OpenShift, set to false otherwise, or unset it for autodetection | `false` | +| `users.name` | The name of the PostgreSQL user | `""` | +| `users.databases` | Databases accessible by a specific PostgreSQL user with rights to create objects in them (the option is ignored for postgres user; also, modifying it can’t be used to revoke the already given access) | `{}` | +| `users.options` | The ALTER ROLE options other than password (the option is ignored for postgres user) | `""` | +| `users.password.type` | The set of characters used for password generation: can be either ASCII (default) or AlphaNumeric | `ASCII` | +| `users.secretName` | User secret name | `"rhino-credentials"` | +| `databaseInitSQL.key` | Data key for the Custom configuration options ConfigMap with the init SQL file, which will be executed at cluster creation time | `init.sql` | +| `databaseInitSQL.name` | Name of the ConfigMap with the init SQL file, which will be executed at cluster creation time | `cluster1-init-sql` | +| | +| `dataSource.postgresCluster.clusterName` | Name of an existing cluster to use as the data source when restoring backup to a new cluster | `""` | +| `dataSource.postgresCluster.repoName` | Name of the pgBackRest repository in the source cluster that contains the backup to be restored to a new cluster | `""` | +| `dataSource.postgresCluster.options` | The pgBackRest command-line options for the pgBackRest restore command | `[]` | +| `dataSource.postgresCluster.tolerations.effect` | The Kubernetes Pod tolerations effect for data migration jobs | `NoSchedule` | +| `dataSource.postgresCluster.tolerations.key` | The Kubernetes Pod tolerations key for data migration jobs | `role` | +| `dataSource.postgresCluster.tolerations.operator` | The Kubernetes Pod tolerations operator for data migration jobs | `Equal` | +| `dataSource.postgresCluster.tolerations.value` | The Kubernetes Pod tolerations value for data migration jobs | `connection-poolers` | +| `dataSource.pgbackrest.stanza` | Name of the pgBackRest stanza to use as the data source when restoring backup to a new cluster | `""` | +| `dataSource.pgbackrest.configuration[].secret.name` | Name of the Kubernetes Secret object with custom pgBackRest configuration, which will be added to the pgBackRest configuration generated by the Operator | `""` | +| `dataSource.pgbackrest.global.repo1-path` | Repo path are to be included in the global section of the pgBackRest configuration generated by the Operator | `""` | +| `dataSource.pgbackrest.tolerations.effect` | The Kubernetes Pod tolerations effect for pgBackRest | `NoSchedule` | +| `dataSource.pgbackrest.tolerations.key` | The Kubernetes Pod tolerations key for pgBackRest | `role` | +| `dataSource.pgbackrest.tolerations.operator` | The Kubernetes Pod tolerations operator for pgBackRest | `Equal` | +| `dataSource.pgbackrest.tolerations.value` | The Kubernetes Pod tolerations value for pgBackRest | `connection-poolers` | +| `dataSource.pgbackrest.repo.name` | Name of the pgBackRest repository | `""` | +| `dataSource.pgbackrest.repo.s3.bucket` | The Amazon S3 bucket name used for backups | `""` | +| `dataSource.pgbackrest.repo.s3.endpoint` | The endpoint URL of the S3-compatible storage to be used for backups (not needed for the original Amazon S3 cloud) | `""` | +| `dataSource.pgbackrest.repo.s3.region` | The AWS region to use for Amazon and all S3-compatible storages | `""` | +| `dataSource.volumes.pgDataVolume` | Defines the existing pgData volume and directory to use in the current PostgresCluster | `{}` | +| `dataSource.volumes.pgWALVolume` | Defines the existing pg_wal volume and directory to use in the current PostgresCluster | `{}` | +| `dataSource.volumes.pgBackRestVolume` | Defines the existing pgBackRest repo volume and directory to use in the current PostgresCluster | `{}` | +| | +| `expose.annotations` | The Kubernetes annotations metadata for PostgreSQL | `{}` | +| `expose.labels` | Set labels for the PostgreSQL Service | `{}` | +| `expose.type` | Specifies the type of Kubernetes Service for PostgreSQL | `LoadBalancer` | +| `expose.loadBalancerSourceRanges` | The range of client IP addresses from which the load balancer should be reachable (if not set, there is no limitations) | `[]` | +| `exposeReplicas.annotations` | The Kubernetes annotations metadata for PostgreSQL replicas | `{}` | +| `exposeReplicas.labels` | Set labels for the PostgreSQL Service replicas | `{}` | +| `exposeReplicas.type` | Specifies the type of Kubernetes Service for PostgreSQL replicas | `LoadBalancer` | +| `exposeReplicas.loadBalancerSourceRanges` | The range of client IP addresses from which the load balancer should be reachable (if not set, there is no limitations) for PostgreSQL replicas | `[]` | +| | +| `instances.name` | The name of the PostgreSQL instance | `instance1` | +| `instances.replicas` | The number of Replicas to create for the PostgreSQL instance | `3` | +| `instances.affinity.podAntiAffinity` | Pod anti-affinity, allows setting the standard Kubernetes affinity constraints of any complexity | `{}` | +| `instances.resources.requests.memory` | Kubernetes memory requests for a PostgreSQL instance | `""` | +| `instances.resources.requests.cpu` | Kubernetes CPU requests for a PostgreSQL instance | `""` | +| `instances.resources.limits.memory` | Kubernetes memory limits for a PostgreSQL instance | `""` | +| `instances.resources.limits.cpu` | Kubernetes CPU limits for a PostgreSQL instance | `""` | +| `instances.containers.replicaCertCopy.resources.limits.cpu` | Kubernetes CPU limits for replicaCertCopy instance | `200m` | +| `instances.containers.replicaCertCopy.resources.limits.memory` | Kubernetes memory limits for replicaCertCopy instance | `128Mi` | +| `instances.sidecars.name` | Name of the custom sidecar container for PostgreSQL Pods | `testcontainer` | +| `instances.sidecars.image` | Image for the custom sidecar container for PostgreSQL Pods | `mycontainer1:latest` | +| `instances.topologySpreadConstraints.maxSkew` | The degree to which Pods may be unevenly distributed under the Kubernetes Pod Topology Spread Constraints | `1` | +| `instances.topologySpreadConstraints.topologyKey` | The key of node labels for the Kubernetes Pod Topology Spread Constraints | `my-node-label` | +| `instances.topologySpreadConstraints.whenUnsatisfiable` | What to do with a Pod if it doesn’t satisfy the Kubernetes Pod Topology Spread Constraints | `DoNotSchedule` | +| `instances.topologySpreadConstraints.labelSelector.matchLabels` | The Label selector for the Kubernetes Pod Topology Spread Constraints | `postgres-operator.crunchydata.com/instance-set: instance1` | +| `instances.tolerations.effect` | The Kubernetes Pod tolerations effect for the PostgreSQL instance | `NoSchedule` | +| `instances.tolerations.key` | The Kubernetes Pod tolerations key for the PostgreSQL instance | `role` | +| `instances.tolerations.operator` | The Kubernetes Pod tolerations operator for the PostgreSQL instance | `Equal` | +| `instances.tolerations.value` | The Kubernetes Pod tolerations value for the PostgreSQL instance | `connection-poolers` | +| `instances.priorityClassName` | The Kuberentes Pod priority class for PostgreSQL instance Pods | `high-priority` | +| `instances.securityContext` | The Kubernetes Pod security context for the PostgreSQL instance | `{}` | +| `instances.walVolumeClaimSpec.accessModes` | The Kubernetes PersistentVolumeClaim access modes for the PostgreSQL Write-ahead Log storage | `ReadWriteOnce` | +| `instances.walVolumeClaimSpec.storageClassName` | The Kubernetes storageClassName for the Write-ahead Log storage | `""` | +| `instances.walVolumeClaimSpec.resources.requests.storage` | The Kubernetes storage requests for the PostgreSQL Write-ahead Log use | `1Gi` | +| `instances.dataVolumeClaimSpec.accessModes` | The Kubernetes PersistentVolumeClaim access modes for the PostgreSQL data storage | `ReadWriteOnce` | +| `instances.dataVolumeClaimSpec.storageClassName` | The Kubernetes storageClassName for the PostgreSQL data storage | `""` | +| `instances.dataVolumeClaimSpec.resources.requests.storage` | The Kubernetes storage requests for the storage the PostgreSQL instance will use | `1Gi` | +| `instances.tablespaceVolumes.name` | Name for the custom [tablespace volume](https://docs.percona.com/percona-operator-for-postgresql/2.0/tablespaces.html) | `""` | +| `instances.tablespaceVolumes.dataVolumeClaimSpec.accessModes` | The Kubernetes PersistentVolumeClaim access modes for the tablespace volume | `{}` | +| `instances.tablespaceVolumes.dataVolumeClaimSpec.resources.requests.storage` | The Kubernetes storage requests for the tablespace volume | `""` | +| | +| `backups.pgbackrest.metadata.labels` | Set labels for pgbackrest | `test-label:test` | +| `backups.pgbackrest.configuration` | Name of the Kubernetes Secret object with custom pgBackRest configuration, which will be added to the pgBackRest configuration generated by the Operator | `[]` | +| `backups.pgbackrest.containers.pgbackrest.resources.limits.cpu` | Kubernetes CPU limits for pgbackrest instance | `200m` | +| `backups.pgbackrest.containers.pgbackrest.resources.limits.memory` | Kubernetes memory limits for pgbackrest instance | `128Mi` | +| `backups.pgbackrest.containers.pgbackrestConfig.resources.limits.cpu` | Kubernetes CPU limits for pgbackrestConfig instance | `200m` | +| `backups.pgbackrest.containers.pgbackrestConfig.resources.limits.memory` | Kubernetes memory limits for pgbackrestConfig instance | `128Mi` | +| `backups.pgbackrest.jobs.priorityClassName` | The Kuberentes Pod priority class for pgBackRest jobs | `high-priority` | +| `backups.pgbackrest.jobs.resources.limits.cpu` | Kubernetes CPU limits for a pgBackRest job | `200m` | +| `backups.pgbackrest.jobs.resources.limits.memory` | Kubernetes memory limits for a pgBackRest job | `128Mi` | +| `backups.pgbackrest.jobs.tolerations.effect` | The Kubernetes Pod tolerations effect for a backup job | `NoSchedule` | +| `backups.pgbackrest.jobs.tolerations.key` | The Kubernetes Pod tolerations key for a backup job | `role` | +| `backups.pgbackrest.jobs.tolerations.operator` | The Kubernetes Pod tolerations operator for a backup job | `Equal` | +| `backups.pgbackrest.jobs.tolerations.value` | The Kubernetes Pod tolerations value for a backup job | `connection-poolers` | +| `backups.pgbackrest.jobs.securityContext` | The Kubernetes Pod security context for pgBackRest jobs | `{}` | +| `backups.pgbackrest.global` | Settings, which are to be included in the global section of the pgBackRest configuration generated by the Operator | `/pgbackrest/postgres-operator/hippo/repo1` | +| `backups.pgbackrest.repoHost.topologySpreadConstraints.maxSkew` | The degree to which Pods may be unevenly distributed under the Kubernetes Pod Topology Spread Constraints | `1` | +| `backups.pgbackrest.repoHost.topologySpreadConstraints.topologyKey` | The key of node labels for the Kubernetes Pod Topology Spread Constraints | `my-node-label` | +| `backups.pgbackrest.repoHost.topologySpreadConstraints.whenUnsatisfiable` | What to do with a Pod if it doesn’t satisfy the Kubernetes Pod Topology Spread Constraints | `DoNotSchedule` | +| `backups.pgbackrest.repoHost.topologySpreadConstraints.labelSelector.matchLabels` | The Label selector for the Kubernetes Pod Topology Spread Constraints | `postgres-operator.crunchydata.com/instance-set: instance1` | +| `backups.pgbackrest.repoHost.priorityClassName` | The Kuberentes Pod priority class for pgBackRest repo | `high-priority` | +| `backups.pgbackrest.repoHost.affinity.podAntiAffinity` | Pod anti-affinity, allows setting the standard Kubernetes affinity constraints of any complexity | `{}` | +| `backups.pgbackrest.repoHost.tolerations.effect` | The Kubernetes Pod tolerations effect for pgBackRest repo | `NoSchedule` | +| `backups.pgbackrest.repoHost.tolerations.key` | The Kubernetes Pod tolerations key for pgBackRest repo | `role` | +| `backups.pgbackrest.repoHost.tolerations.operator` | The Kubernetes Pod tolerations operator for pgBackRest repo | `Equal` | +| `backups.pgbackrest.repoHost.tolerations.value` | The Kubernetes Pod tolerations value for pgBackRest repo | `connection-poolers` | +| `backups.pgbackrest.repoHost.securityContext` | The Kubernetes Pod security context for pgBackRest repo | `{}` | +| `backups.pgbackrest.manual.repoName` | Name of the pgBackRest repository for on-demand backups | `repo1` | +| `backups.pgbackrest.manual.options` | The on-demand backup command-line options which will be passed to pgBackRest for on-demand backups | `--type=full` | +| `backups.pgbackrest.repos.repo1.name` | Name of the pgBackRest repository for backups | `repo1` | +| `backups.pgbackrest.repos.repo1.schedules.full` | Scheduled time to make a full backup specified in the crontab format | `0 0 \* \* 6` | +| `backups.pgbackrest.repos.repo1.schedules.differential` | Scheduled time to make a differential backup specified in the crontab format | `0 0 \* \* 6` | +| `backups.pgbackrest.repos.repo1.schedules.incremental` | Scheduled time to make an incremental backup specified in the crontab format | `0 0 \* \* 6` | +| `backups.pgbackrest.repos.repo1.volume.volumeClaimSpec.accessModes` | The Kubernetes PersistentVolumeClaim access modes for the pgBackRest Storage | `ReadWriteOnce` | +| `backups.pgbackrest.repos.repo1.volume.volumeClaimSpec.storageClassName` | The Kubernetes storageClassName for the pgBackRest Storage | `""` | +| `backups.pgbackrest.repos.repo1.volume.volumeClaimSpec.resources.requests.storage` | The Kubernetes storage requests for the pgBackRest storage | `1Gi` | +| `backups.pgbackrest.repos.repo3.gcs.bucket` | The Google Cloud Storage bucket | `my-bucket` | +| `backups.pgbackrest.repos.repo4.azure.container` | Name of the Azure Blob Storage container for backups | `my-container` | +| `backups.pgbackrest.restore.tolerations.effect` | The Kubernetes Pod tolerations effect for the backup restore job | `NoSchedule` | +| `backups.pgbackrest.restore.tolerations.key` | The Kubernetes Pod tolerations key for the backup restore job | `role` | +| `backups.pgbackrest.restore.tolerations.operator` | The Kubernetes Pod tolerations operator for the backup restore job | `Equal` | +| `backups.pgbackrest.restore.tolerations.value` | The Kubernetes Pod tolerations value for the backup restore job | `connection-poolers` | +| `backups.restore.enabled` | Enables or disables restoring a previously made backup | `false` | +| `backups.restore.repoName` | Name of the pgBackRest repository that contains the backup to be restored | `repo1` | +| `backups.restore.options` | The pgBackRest command-line options for the pgBackRest restore command | `--type=time` | +| `backups.pgbackrest.image` | Set this variable if you need to use a custom pgBackrest image | `percona/percona-postgresql-operator:2.4.1-ppg16.3-pgbackrest2.51-1` | +| `backups.repos.repo2.s3.bucket` | Storage bucket | `` | +| `backups.repos.repo2.s3.region` | S3-compatible storage name | `` | +| `backups.repos.repo2.s3.endpoint` | S3-compatible storage endpoint | `` | +| | +| `proxy.pgBouncer.expose.annotations` | The Kubernetes annotations metadata for pgBouncer | `pg-cluster-annot: cluster1` | +| `proxy.pgBouncer.expose.labels` | Set labels for the pgBouncer Service | `pg-cluster-label: cluster1` | +| `proxy.pgBouncer.expose.type` | K8S service type for the pgbouncer deployment | `ClusterIP` | +| `proxy.pgBouncer.expose.loadBalancerSourceRanges` | The range of client IP addresses from which the load balancer should be reachable (if not set, there is no limitations) | `[]` | +| `proxy.pgBouncer.sidecars.image` | Image for the custom sidecar container for pgBouncer Pods | `mycontainer1:latest` | +| `proxy.pgBouncer.sidecars.name` | Name of the custom sidecar container for pgBouncer Pods | `testcontainer` | +| `proxy.pgBouncer.exposeSuperusers` | Allow superusers connect via pgbouncer | `false` | +| `proxy.pgBouncer.config.global` | Custom configuration options for pgBouncer. | `pool_mode: transaction` | +| `proxy.pgBouncer.topologySpreadConstraints.maxSkew` | The degree to which Pods may be unevenly distributed under the Kubernetes Pod Topology Spread Constraints | `1` | +| `proxy.pgBouncer.topologySpreadConstraints.topologyKey` | The key of node labels for the Kubernetes Pod Topology Spread Constraints | `my-node-label` | +| `proxy.pgBouncer.topologySpreadConstraints.whenUnsatisfiable` | What to do with a Pod if it doesn’t satisfy the Kubernetes Pod Topology Spread Constraints | `DoNotSchedule` | +| `proxy.pgBouncer.topologySpreadConstraints.labelSelector.matchLabels` | The Label selector for the Kubernetes Pod Topology Spread Constraints | `postgres-operator.crunchydata.com/instance-set: instance1` | +| `proxy.pgBouncer.tolerations.effect` | The Kubernetes Pod tolerations effect for the PostgreSQL instance | `NoSchedule` | +| `proxy.pgBouncer.tolerations.key` | The Kubernetes Pod tolerations key for the PostgreSQL instance | `role` | +| `proxy.pgBouncer.tolerations.operator` | The Kubernetes Pod tolerations operator for the PostgreSQL instance | `Equal` | +| `proxy.pgBouncer.tolerations.value` | The Kubernetes Pod tolerations value for the PostgreSQL instance | `connection-poolers` | +| `proxy.pgBouncer.customTLSSecret.name` | Custom external TLS secret name | `keycloakdb-pgbouncer.tls` | +| `proxy.pgBouncer.securityContext` | The Kubernetes Pod security context for the pgBouncer instance | `{}` | +| `proxy.pgBouncer.affinity.podAntiAffinity` | Pod anti-affinity, allows setting the standard Kubernetes affinity constraints of any complexity | `{}` | +| `proxy.pgBouncer.image` | Set this variable if you need to use a custom pgbouncer image | `percona/percona-postgresql-operator:2.4.1-ppg16.3-pgbouncer1.22.1` | +| `proxy.pgBouncer.replicas` | The number of pgbouncer instances | `3` | +| `proxy.pgBouncer.resources.requests.cpu` | Container resource request for CPU | `1` | +| `proxy.pgBouncer.resources.requests.memory` | Container resource request for RAM | `128Mi` | +| `proxy.pgBouncer.resources.limits.cpu` | Container resource limits for CPU | `2` | +| `proxy.pgBouncer.resources.limits.memory` | Container resource limits for RAM | `512Mi` | +| `proxy.pgBouncer.containers.pgbouncerConfig.resources.limits.cpu` | Kubernetes CPU limits for pgbouncerConfig instance | `200m` | +| `proxy.pgBouncer.containers.pgbouncerConfig.resources.limits.memory` | Kubernetes memory limits for pgbouncerConfig instance | `128Mi` | +| | +| `pmm.enabled` | Enable integration with [Percona Monitoring and Management software](https://www.percona.com/blog/2020/07/23/using-percona-kubernetes-operators-with-percona-monitoring-and-management/) | `false` | +| `pmm.image.repository` | PMM Container image repository | `percona/pmm-client` | +| `pmm.image.tag` | PMM Container image tag | `2.42.0` | +| `pmm.serverHost` | PMM server related K8S service hostname | `monitoring-service` | +| `pmm.resources.requests.memory` | Container resource request for RAM | `200M` | +| `pmm.resources.requests.cpu` | Container resource request for CPU | `500m` | +| | +| `patroni.syncPeriodSeconds` | The interval for refreshing the leader lock and applying dynamicConfiguration | `10` | +| `patroni.leaderLeaseDurationSeconds` | TTL of the cluster leader lock | `30` | +| `patroni.dynamicConfiguration` | Custom PostgreSQL configuration options. Please note that configuration changes are automatically applied to the running instances without validation, so having an invalid config can make the cluster unavailable | `{}` | +| `patroni.dynamicConfiguration.postgresql.parameters` | Custom PostgreSQL configuration options | `{}` | +| `patroni.dynamicConfiguration.postgresql.pg_hba` | PostgreSQL Host-Based Authentication section | `{}` | +| `patroni.switchover.enabled` | Enables or disables manual change of the cluster primary instance | `""` | +| `patroni.switchover.targetInstance` | The name of the Pod that should be set as the new primary. When not specified, the new primary will be selected randomly | `""` | +| | +| `extensions.image` | Image for the custom PostgreSQL extension loader sidecar container | `""` | +| `extensions.imagePullPolicy` | Policy for the custom extension sidecar container | `Always` | +| `extensions.storage.type` | The cloud storage type used for backups. Only s3 type is currently supported. | `""` | +| `extensions.storage.bucket` | The Amazon S3 bucket name for prepackaged PostgreSQL custom extensions | `""` | +| `extensions.storage.region` | The AWS region to use | `""` | +| `extensions.storage.endpoint` | The S3 endpoint to use. | `""` | +| `extensions.storage.secret.name` | The Kubernetes secret for the custom extensions storage. It should contain AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY keys | `""` | +| `extensions.builtin` | The key-value pairs which enable or disable Percona Distribution for PostgreSQL builtin extensions | `{}` | +| `extensions.custom` | Array of name and versions for each PostgreSQL custom extension | `[]` | +| | +| `secrets.name` | Database secrets object name. Object will be autogenerated if the name is not explicitly specified | `-users` | +| `secrets.primaryuser` | primary user password (in use for replication only) | `autogenerated by operator` | +| `secrets.postgres` | postges user password (superuser, not accessible via pgbouncer) | `autogenerated by operator` | +| `secrets.pgbouncer` | pgbouncer user password | `autogenerated by operator` | +| `secrets.` | Default user password | `autogenerated by operator` | Specify parameters using `--set key=value[,key=value]` argument to `helm install` Notice that you can use multiple replica sets only with sharding enabled. diff --git a/charts/pg-db/templates/cluster.yaml b/charts/pg-db/templates/cluster.yaml index 3f2a50a7..04a16b8f 100644 --- a/charts/pg-db/templates/cluster.yaml +++ b/charts/pg-db/templates/cluster.yaml @@ -255,6 +255,20 @@ spec: resources: requests: storage: {{ $instance.dataVolumeClaimSpec.resources.requests.storage }} + {{- if $instance.tablespaceVolumes }} + tablespaceVolumes: + {{- range $volume := $instance.tablespaceVolumes }} + - name: {{ $volume.name }} + dataVolumeClaimSpec: + accessModes: + {{- range $accessMode := $volume.dataVolumeClaimSpec.accessModes }} + - {{ $accessMode }} + {{- end }} + resources: + requests: + storage: {{ $volume.dataVolumeClaimSpec.resources.requests.storage }} + {{- end }} + {{- end }} {{- end }} proxy: diff --git a/charts/pg-db/values.yaml b/charts/pg-db/values.yaml index 11dc2942..22e83d2d 100644 --- a/charts/pg-db/values.yaml +++ b/charts/pg-db/values.yaml @@ -220,6 +220,15 @@ instances: resources: requests: storage: 5Gi +# +# tablespaceVolumes: +# - name: user +# dataVolumeClaimSpec: +# accessModes: +# - 'ReadWriteOnce' +# resources: +# requests: +# storage: 1Gi proxy: pgBouncer: