Custom Resource options¶
The Cluster is configured via the deploy/cr.yaml file.
The metadata part of this file contains the following keys:
name
(cluster1
by default) sets the name of your Percona Distribution for PostgreSQL Cluster; it should include only URL-compatible characters, not exceed 22 characters, start with an alphabetic character, and end with an alphanumeric character;
The spec part of the deploy/cr.yaml file contains the following sections:
Key | Value type | Default | Description |
---|---|---|---|
pause | boolean | false |
Pause/resume: setting it to true gracefully stops the cluster, and setting it to false after shut down starts the cluster back. |
upgradeOptions | subdoc | Percona Distribution for PostgreSQL upgrade options section | |
pgPrimary | subdoc | PostgreSQL Primary instance options section | |
walStorage | subdoc | Tablespaces Storage Section | |
walStorage | subdoc | Write-ahead Log Storage Section | |
backup | subdoc | Section to configure backups and pgBackRest | |
pmm | subdoc | Percona Monitoring and Management section | |
pgBouncer | subdoc | The pgBouncer connection pooler section | |
pgReplicas | subdoc | Section required to manage the replicas within a PostgreSQL cluster | |
pgBadger | subdoc | The pgBadger PostgreSQL log analyzer section |
Key | database |
Value | string |
Example | pgdb |
Description | The name of a database that the PostgreSQL user can log into after the PostgreSQL cluster is created |
Key | disableAutofail |
Value | boolean |
Example | false |
Description | Turns high availability on or off. By default, every cluster can have high availability if there is at least one replica |
Key | tlsOnly |
Value | boolean |
Example | false |
Description | Enforece Operator to use only Transport Layer Security (TLS) for both internal and external communications |
Key | sslCA |
Value | string |
Example | cluster1-ssl-ca |
Description | The name of the secret with TLS used for both connection encryption (external traffic), and replication (internal traffic) |
Key | sslSecretName |
Value | string |
Example | cluster1-ssl-keypair |
Description | The name of the secret created to encrypt external communications |
Key | sslReplicationSecretName |
Value | string |
Example | cluster1-ssl-keypair" |
Description | The name of the secret created to encrypt internal communications |
Key | keepData |
Value | boolean |
Example | true |
Description | If true , PVCs will be kept after the cluster deletion |
Key | keepBackups |
Value | boolean |
Example | true |
Description | If true , local backups will be kept after the cluster deletion |
Key | pgDataSource.restoreFrom |
Value | string |
Example | "" |
Description | The name of a data source PostgreSQL cluster, which is used to restore backup to a new cluster |
Key | pgDataSource.restoreOpts |
Value | string |
Example | "" |
Description | Custom pgBackRest options to restore backup to a new cluster |
Upgrade Options Section¶
The upgradeOptions
section in the deploy/cr.yaml file contains various configuration options to control Percona Distribution for PostgreSQL upgrades.
Key | upgradeOptions.versionServiceEndpoint |
Value | string |
Example | https://check.percona.com |
Description | The Version Service URL used to check versions compatibility for upgrade |
Key | upgradeOptions.apply |
Value | string |
Example | disabled |
Description | Specifies how updates are processed by the Operator. Never or Disabled will completely disable automatic upgrades, otherwise it can be set to Latest or Recommended or to a specific version number of Percona Distribution for PostgreSQL to have it version-locked (so that the user can control the version running, but use automatic upgrades to move between them). |
Key | upgradeOptions.schedule |
Value | string |
Example | 0 2 \* \* \* |
Description | Scheduled time to check for updates, specified in the crontab format |
pgPrimary Section¶
The pgPrimary section controls the PostgreSQL Primary instance.
Key | pgPrimary.image |
Value | string |
Example | perconalab/percona-postgresql-operator:main-ppg13-postgres-ha |
Description | The Docker image of the PostgreSQL Primary instance |
Key | pgPrimary.imagePullPolicy |
Value | string |
Example | Always |
Description | This option is used to set the policy for updating pgPrimary and pgReplicas images |
Key | pgPrimary.resources.requests.memory |
Value | int |
Example | 256Mi |
Description | The Kubernetes memory requests for a PostgreSQL Primary container |
Key | pgPrimary.resources.requests.cpu |
Value | string |
Example | 500m |
Description | Kubernetes CPU requests for a PostgreSQL Primary container |
Key | pgPrimary.resources.limits.cpu |
Value | string |
Example | 500m |
Description | Kubernetes CPU limits for a PostgreSQL Primary container |
Key | pgPrimary.resources.limits.memory |
Value | string |
Example | 256Mi |
Description | The Kubernetes memory limits for a PostgreSQL Primary container |
Key | pgPrimary.affinity.antiAffinityType |
Value | string |
Example | preferred |
Description | Pod anti-affinity type, can be either preferred or required |
Key | pgPrimary.affinity.nodeAffinityType |
Value | string |
Example | preferred |
Description | Node affinity type, can be either preferred or required |
Key | pgPrimary.affinity.nodeLabel |
Value | label |
Example | kubernetes.io/region: us-central1 |
Description | Set labels for PostgreSQL instances Node affinity |
Key | pgPrimary.affinity.advanced |
Value | subdoc |
Example | |
Description | Allows using standard Kubernetes affinity constraints for advanced affinity and anti-affinity tuning |
Key | pgPrimary.volumeSpec.size |
Value | int |
Example | 1G |
Description | The Kubernetes PersistentVolumeClaim size for the PostgreSQL Primary storage |
Key | pgPrimary.tolerations |
Value | subdoc |
Example | node.alpha.kubernetes.io/unreachable |
Description | Kubernetes Pod tolerations |
Key | pgPrimary.volumeSpec.size |
Value | int |
Example | 1G |
Description | The Kubernetes PersistentVolumeClaim size for the PostgreSQL Primary storage |
Key | pgPrimary.volumeSpec.accessmode |
Value | string |
Example | ReadWriteOnce |
Description | The Kubernetes PersistentVolumeClaim access modes for the PostgreSQL Primary storage |
Key | pgPrimary.volumeSpec.storagetype |
Value | string |
Example | dynamic |
Description | Type of the PostgreSQL Primary storage provisioning: create (the default variant; used if storage is provisioned, e.g. using hostpath) or dynamic (for a dynamic storage provisioner, e.g. via a StorageClass) |
Key | pgPrimary.volumeSpec.storageclass |
Value | string |
Example | "" |
Description | Optionally sets the Kubernetes storage class to use with the PostgreSQL Primary storage PersistentVolumeClaim |
Key | pgPrimary.volumeSpec.matchLabels |
Value | string |
Example | "" |
Description | A PostgreSQL Primary storage label selector |
Key | pgPrimary.imagePullPolicy |
Value | string |
Example | Always |
Description | This option is used to set the policy for updating pgPrimary and pgReplicas images |
Key | pgPrimary.customconfig |
Value | string |
Example | "" |
Description | Name of the Custom configuration options ConfigMap for PostgreSQL cluster |
Tablespaces Storage Section¶
The tablespaceStorages
section in the deploy/cr.yaml
file contains configuration options for PostgreSQL Tablespace.
Key | tablespaceStorages.<storage-name>.volumeSpec.size |
Value | int |
Example | 1G |
Description | The Kubernetes PersistentVolumeClaim size for the PostgreSQL Tablespaces storage |
Key | tablespaceStorages.<storage-name>.volumeSpec.accessmode |
Value | string |
Example | ReadWriteOnce |
Description | The Kubernetes PersistentVolumeClaim access modes for the PostgreSQL Tablespaces storage |
Key | tablespaceStorages.<storage-name>.volumeSpec.storagetype |
Value | string |
Example | dynamic |
Description | Type of the PostgreSQL Tablespaces storage provisioning: create (the default variant; used if storage is provisioned, e.g. using hostpath) or dynamic (for a dynamic storage provisioner, e.g. via a StorageClass) |
Key | tablespaceStorages.<storage-name>.volumeSpec.storageclass |
Value | string |
Example | "" |
Description | Optionally sets the Kubernetes storage class to use with the PostgreSQL Tablespaces storage PersistentVolumeClaim |
Key | tablespaceStorages.<storage-name>.volumeSpec.matchLabels |
Value | string |
Example | "" |
Description | A PostgreSQL Tablespaces storage label selector |
Write-ahead Log Storage Section¶
The walStorage
section in the deploy/cr.yaml
file contains configuration options for PostgreSQL write-ahead logging.
Key | walStorage.volumeSpec.size |
Value | int |
Example | 1G |
Description | The Kubernetes PersistentVolumeClaim size for the PostgreSQL Write-ahead Log storage |
Key | walStorage.volumeSpec.accessmode |
Value | string |
Example | ReadWriteOnce |
Description | The Kubernetes PersistentVolumeClaim access modes for the PostgreSQL Write-ahead Log storage |
Key | walStorage.volumeSpec.storagetype |
Value | string |
Example | dynamic |
Description | Type of the PostgreSQL Write-ahead Log storage provisioning: create (the default variant; used if storage is provisioned, e.g. using hostpath) or dynamic (for a dynamic storage provisioner, e.g. via a StorageClass) |
Key | walStorage.volumeSpec.storageclass |
Value | string |
Example | "" |
Description | Optionally sets the Kubernetes storage class to use with the PostgreSQL Write-ahead Log storage PersistentVolumeClaim |
Key | walStorage.volumeSpec.matchLabels |
Value | string |
Example | "" |
Description | A PostgreSQL Write-ahead Log storage label selector |
Backup Section¶
The backup
section in the
deploy/cr.yaml
file contains the following configuration options for the regular
Percona Distribution for PostgreSQL backups.
Key | backup.image |
Value | string |
Example | perconalab/percona-postgresql-operator:main-ppg13-pgbackrest |
Description | The Docker image for pgBackRest |
Key | backup.backrestRepoImage |
Value | string |
Example | perconalab/percona-postgresql-operator:main-ppg13-pgbackrest-repo |
Description | The Docker image for the BackRest repository |
Key | backup.resources.requests.cpu |
Value | string |
Example | 500m |
Description | Kubernetes CPU requests for a pgBackRest container |
Key | backup.resources.requests.memory |
Value | int |
Example | 48Mi |
Description | The Kubernetes memory requests for a pgBackRest container |
Key | backup.resources.limits.cpu |
Value | int |
Example | 1 |
Description | Kubernetes CPU limits for a pgBackRest container |
Key | backup.resources.limits.memory |
Value | int |
Example | 64Mi |
Description | The Kubernetes memory limits for a pgBackRest container |
Key | backup.affinity.antiAffinityType |
Value | string |
Example | preferred |
Description | Pod anti-affinity type, can be either preferred or required |
Key | backup.volumeSpec.size |
Value | int |
Example | 1G |
Description | The Kubernetes PersistentVolumeClaim size for the pgBackRest Storage |
Key | backup.volumeSpec.accessmode |
Value | string |
Example | ReadWriteOnce |
Description | The Kubernetes PersistentVolumeClaim access modes for the pgBackRest Storage |
Key | backup.volumeSpec.storagetype |
Value | string |
Example | dynamic |
Description | Type of the pgBackRest storage provisioning: create (the default variant; used if storage is provisioned, e.g. using hostpath) or dynamic (for a dynamic storage provisioner, e.g. via a StorageClass) |
Key | backup.volumeSpec.storageclass |
Value | string |
Example | "" |
Description | Optionally sets the Kubernetes storage class to use with the pgBackRest Storage PersistentVolumeClaim |
Key | backup.volumeSpec.matchLabels |
Value | string |
Example | "" |
Description | A pgBackRest storage label selector |
Key | backup.storages.<storage-name>.type |
Value | string |
Example | s3 |
Description | Type of the storage used for backups |
Key | backup.storages.<storage-name>.endpointURL |
Value | string |
Example | minio-gateway-svc:9000 |
Description | The endpoint URL of the S3-compatible storage to be used for backups (not needed for the original Amazon S3 cloud) |
Key | backup.storages.<storage-name>.bucket |
Value | string |
Example | "" |
Description | The Amazon S3 bucket or Google Cloud Storage bucket |
name used for backups | |
Key | backup.storages.<storage-name>.region |
Value | boolean |
Example | us-east-1 |
Description | The AWS region to use for Amazon and all S3-compatible storages |
Key | backup.storages.<storage-name>.uriStyle |
Value | string |
Example | path |
Description | Optional parameter that specifies if pgBackRest should use the path or host S3 URI style |
Key | backup.storages.<storage-name>.verifyTLS |
Value | boolean |
Example | false |
Description | Enables or disables TLS verification for pgBackRest |
Key | backup.storageTypes |
Value | array |
Example | [ "s3" ] |
Description | The backup storage types for the pgBackRest repository |
Key | backup.repoPath |
Value | string |
Example | "" |
Description | Custom path for pgBackRest repository backups |
Key | backup.schedule.name |
Value | string |
Example | sat-night-backup |
Description | The backup name |
Key | backup.schedule.schedule |
Value | string |
Example | 0 0 \* \* 6 |
Description | Scheduled time to make a backup specified in the |
crontab format | |
Key | backup.schedule.keep |
Value | int |
Example | 3 |
Description | The amount of most recent backups to store. Older backups are automatically deleted. Set keep to zero or completely remove it to disable automatic deletion of backups |
Key | backup.schedule.type |
Value | string |
Example | full |
Description | The type of the pgBackRest backup |
Key | backup.schedule.storage |
Value | string |
Example | local |
Description | The type of the pgBackRest repository |
Key | backup.customconfig |
Value | string |
Example | "" |
Description | Name of the ConfigMap to pass custom pgBackRest configuration options |
Key | backup.imagePullPolicy |
Value | string |
Example | Always |
Description | This option is used to set the policy for updating pgBackRest images |
PMM Section¶
The pmm
section in the deploy/cr.yaml
file contains configuration options for Percona Monitoring and Management.
Key | pmm.enabled |
Value | boolean |
Example | false |
Description | Enables or disables monitoring Percona Distribution for PostgreSQL cluster with PMM |
Key | pmm.image |
Value | string |
Example | percona/pmm-client:2.29.0 |
Description | Percona Monitoring and Management (PMM) Client Docker image |
Key | pmm.serverHost |
Value | string |
Example | monitoring-service |
Description | Address of the PMM Server to collect data from the cluster |
Key | pmm.serverUser |
Value | string |
Example | admin |
Description | The PMM Server User. The PMM Server password should be configured using Secrets |
Key | pmm.pmmSecret |
Value | string |
Example | cluster1-pmm-secret |
Description | Name of the Kubernetes Secret object for the PMM Server password |
Key | pmm.resources.requests.memory |
Value | string |
Example | 200M |
Description | The Kubernetes memory requests for a PMM container |
Key | pmm.resources.requests.cpu |
Value | string |
Example | 500m |
Description | Kubernetes CPU requests for a PMM container |
Key | pmm.resources.limits.cpu |
Value | string |
Example | 500m |
Description | Kubernetes CPU limits for a PMM container |
Key | pmm.resources.limits.memory |
Value | string |
Example | 200M |
Description | The Kubernetes memory limits for a PMM container |
Key | pmm.imagePullPolicy |
Value | string |
Example | Always |
Description | This option is used to set the policy for updating PMM Client images |
pgBouncer Section¶
The pgBouncer
section in the deploy/cr.yaml
file contains configuration options for the pgBouncer connection pooler for PostgreSQL.
Key | pgBouncer.image |
Value | string |
Example | perconalab/percona-postgresql-operator:main-ppg13-pgbouncer |
Description | Docker image for the pgBouncer connection pooler |
Key | pgBouncer.exposePostgresUser |
Value | boolean |
Example | false |
Description | Enables or disables exposing postgres user through pgBouncer |
Key | pgBouncer.size |
Value | int |
Example | 1G |
Description | The number of the pgBouncer Pods to provide connection pooling |
Key | pgBouncer.resources.requests.cpu |
Value | int |
Example | 1 |
Description | Kubernetes CPU requests for a pgBouncer container |
Key | pgBouncer.resources.requests.memory |
Value | int |
Example | 128Mi |
Description | The Kubernetes memory requests for a pgBouncer container |
Key | pgBouncer.resources.limits.cpu |
Value | int |
Example | 2 |
Description | Kubernetes CPU limits for a pgBouncer container |
Key | pgBouncer.resources.limits.memory |
Value | int |
Example | 512Mi |
Description | The Kubernetes memory limits for a pgBouncer container |
Key | pgBouncer.affinity.antiAffinityType |
Value | string |
Example | preferred |
Description | Pod anti-affinity type, can be either preferred or required |
Key | pgBouncer.expose.serviceType |
Value | string |
Example | ClusterIP |
Description | Specifies the type of Kubernetes Service for pgBouncer |
Key | pgBouncer.expose.loadBalancerSourceRanges |
Value | string |
Example | "10.0.0.0/8" |
Description | The range of client IP addresses from which the load balancer should be reachable (if not set, there is no limitations) |
Key | pgBouncer.expose.annotations |
Value | label |
Example | pg-cluster-annot: cluster1 |
Description | The Kubernetes annotations metadata for pgBouncer |
Key | pgBouncer.expose.labels |
Value | label |
Example | pg-cluster-label: cluster1 |
Description | Set labels for the pgBouncer Service |
Key | pgBouncer.imagePullPolicy |
Value | string |
Example | Always |
Description | This option is used to set the policy for updating pgBouncer images |
pgReplicas Section¶
The pgReplicas
section in the deploy/cr.yaml
file stores information required to manage the replicas within a PostgreSQL cluster.
Key | pgReplicas. |
Value | int |
Example | 1G |
Description | The number of the PostgreSQL Replica Pods |
Key | pgReplicas. |
Value | int |
Example | 500m |
Description | Kubernetes CPU requests for a PostgreSQL Replica container |
Key | pgReplicas. |
Value | int |
Example | 256Mi |
Description | The Kubernetes memory requests for a PostgreSQL Replica container |
Key | pgReplicas. |
Value | int |
Example | 500m |
Description | Kubernetes CPU limits for a PostgreSQL Replica container |
Key | pgReplicas. |
Value | int |
Example | 256Mi |
Description | The Kubernetes memory limits |
for a PostgreSQL Replica container | |
Key | pgReplicas. |
Value | string |
Example | ReadWriteOnce |
Description | The Kubernetes PersistentVolumeClaim access modes for the PostgreSQL Replica storage |
Key | pgReplicas. |
Value | int |
Example | 1G |
Description | The Kubernetes PersistentVolumeClaim size for the PostgreSQL Replica storage |
Key | pgReplicas. |
Value | string |
Example | dynamic |
Description | Type of the PostgreSQL Replica storage provisioning: create (the default variant; used if storage is provisioned, e.g. using hostpath) or dynamic (for a dynamic storage provisioner, e.g. via a StorageClass) |
Key | pgReplicas. |
Value | string |
Example | standard |
Description | Optionally sets the Kubernetes storage class to use with the PostgreSQL Replica storage PersistentVolumeClaim |
Key | pgReplicas. |
Value | string |
Example | "" |
Description | A PostgreSQL Replica storage label selector |
Key | pgReplicas. |
Value | label |
Example | pg-cluster-label: cluster1 |
Description | Set labels for PostgreSQL Replica Pods |
Key | pgReplicas. |
Value | label |
Example | pg-cluster-annot: cluster1-1 |
Description | The Kubernetes annotations metadata for PostgreSQL Replica |
Key | pgReplicas. |
Value | string |
Example | ClusterIP |
Description | Specifies the type of Kubernetes Service for for PostgreSQL Replica |
Key | pgReplicas. |
Value | string |
Example | "10.0.0.0/8" |
Description | The range of client IP addresses from which the load balancer should be reachable (if not set, there is no limitations) |
Key | pgReplicas. |
Value | label |
Example | pg-cluster-annot: cluster1 |
Description | The Kubernetes annotations metadata for PostgreSQL Replica |
Key | pgReplicas. |
Value | label |
Example | pg-cluster-label: cluster1 |
Description | Set labels for the PostgreSQL Replica Service |
pgBadger Section¶
The pgBadger
section in the deploy/cr.yaml
file contains configuration options for the pgBadger PostgreSQL log analyzer.
Key | pgBadger.enabled |
Value | boolean |
Example | false |
Description | Enables or disables the pgBadger PostgreSQL log analyzer |
Key | pgBadger.image |
Value | string |
Example | perconalab/percona-postgresql-operator:main-ppg13-pgbadger |
Description | pgBadger PostgreSQL log analyzer Docker image |
Key | pgBadger.port |
Value | int |
Example | 10000 |
Description | The port number for pgBadger |
Key | pgBadger.imagePullPolicy |
Value | string |
Example | Always |
Description | This option is used to set the policy for updating pgBadger images |