# For a full explanation of how to set up the custom resource, please refer to # the documentation: # https://access.crunchydata.com/documentation/postgres-operator/v5/ ########### # General # ########### # name is the name of the cluster. This defaults to the name of the Helm # release. name: clank # postgresVersion sets the version to deploy. This version number needs to be # available as one of the "RELATED_IMAGE_POSTGRES_..." images as part of the PGO # installation if you want to deploy the image without setting the "postgres" # image variable. This value is required. postgresVersion: 15 # postGISVersion if sets and coupled with a PostGIS enabled container, enables # PostGIS. This version number needs to be available as one of the # "RELATED_IMAGE_POSTGRES_..." images as part of the PGO installation if you # want to deploy the image without setting the "postgres" image variable. # postGISVersion: 3.1 # NOTE: pgBackRest is enabled by default. It must be set in # "RELATED_IMAGE_PGBACKREST" on the PGO deployment, otherwise you will need to # override the "pgBackRest" image. # pgBouncerReplicas sets the number of pgBouncer instances to deploy. The # default is 0. You need to set this to at least 1 to deploy pgBouncer or set # "pgBouncerConfig". Setting "pgBouncerConfig" will override the value of # pgBouncerReplicas. The "RELATED_IMAGE_PGBOUNCER" in the PGO deployment must be # set if you want to enable this without explicitly setting "pgBouncer". # pgBouncerReplicas: 1 # monitoring enables the ability to monitor the Postgres cluster through a # metrics exporter than can be scraped by Prometheus. This defaults to the value # below. monitoring: true ################### # Image Overrides # ################### # imagePostgres can be a Postgres or GIS-enabled Postgres image. This defaults to the # below value. "postgresVersion" needs to match the version of Postgres that is # used here. If using the GIS-enabled Postgres image, you need to ensure # "postGISVersion" matches the version of PostGIS used. # imagePostgres: registry.developers.crunchydata.com/crunchydata/crunchy-postgres:ubi8-14.7-0 # imagePgBackRest is the pgBackRest backup utility image. This defaults to the # below value. # imagePgBackRest: registry.developers.crunchydata.com/crunchydata/crunchy-pgbackrest:ubi8-2.41-4 # imagePgBouncer is the image for the PgBouncer connection pooler. This defaults # to the below value. # imagePgBouncer: registry.developers.crunchydata.com/crunchydata/crunchy-pgbouncer:ubi8-1.18-0 # imageExporter is the image name for the exporter used as a part of monitoring. # This defaults to the value below. # imageExporter: registry.developers.crunchydata.com/crunchydata/crunchy-postgres-exporter:ubi8-5.3.1-0 ########################### # Basic Postgres Settings # ########################### # instanceName lets you set the name of your instances. This defaults to # the value below. Setting "instances" overrides this value. # instanceName: instance1 # instanceSize sets the size of the volume that contains the data. This defaults # to the value below. Settings "instances" overrides this value. # instanceSize: 1Gi # instanceStorageClassName sets the storage class for the volume that contains the data. # This defaults to the "default" storage class defined in the cluster. # See: 'kubectl get storageclasses.storage.k8s.io | grep default' # Settings "instances" overrides this value. # instanceStorageClassName: "hostpath" # instanceMemory sets the memory limit for the Postgres instances. This defaults # to no limit being set, but an example value is set below. Settings "instances" # overrides this value. # instanceMemory: 2Gi # instanceCPU sets the CPU limit for the Postgres instances. This defaults to # no limit being set, but an example value is set below. Setting "instances" # overrides this value. # instanceCPU: 1000m # instanceReplicas lets you set the total number of Postgres replicas. This # defaults to the value below. More than on replica enables high availability # (HA). Settings "instances" overrides this value. # instanceReplicas: 1 ############################## # Advanced Postgres Settings # ############################## # instances allows you to define one or more Postgres instance sets. By default, # PGO will only deploy a single instance. Each instance set has similar # characteristics to the other instances in the set, e.g. storage size, resource # etc. You can have multiple replicas within an instance set. # # This allows you to fully customize the topology of your Postgres instances. # # For example, to set up an instance set with HA (due to the default pod # topology spread constraints) # # instances: # - name: pgha1 # replicas: 2 # dataVolumeClaimSpec: # accessModes: # - "ReadWriteOnce" # resources: # requests: # storage: 1Gi # instances: {} # port sets the port that Postgres listens on. Defaults to 5432. # port: 5432 # patroni lets you set the Patroni configuration for the Postgres cluster. # for example, to set up synchronous replication: # patroni: # dynamicConfiguration: # synchronous_mode: true # postgresql: # parameters: # synchronous_commit: "on" # patroni: {} # users sets any custom Postgres users and databases that they have access to # as well as any permissions assoicated with the user account. # users: {} # dataSource specifies a data source for bootstrapping a Postgres cluster. # dataSource: {} # customTLSSecret references a Secret that contains the relevant information for # bringing external TLS artifacts to a PostgreSQL cluster. This provides the # TLS for the cluster itself. # customTLSSecret: {} # customReplicationTLSSecret references a Secret that contains the relevant # information for bringing external TLS artifacts to a PostgreSQL cluster. This # provides the information for the replication user. # customReplicationTLSSecret: {} # databaseInitSQL referencs a ConfigMap that contains a SQL file that should be # run a cluster bootstrap. # databaseInitSQL: # name: bootstrap-sql # key: bootstrap.sql # standby sets whether or not to run this as a standby cluster. Setting "enabled" to # "true" eunables the standby cluster while "repoName" points to a pgBackRest # archive to replay WAL files from, and "host" and "port" point to a primary # cluster from which to stream data. # standby: # enabled: false # repoName: repo1 # host: "192.0.2.2" # port: 5432 # shutdown when set scales the entire workload to zero. By default this is not # set. # shutdown: true ################################# # Backups / pgBackRest Settings # ################################# # backupsSize sets the storage size of the backups to a volume in Kubernetes. # can be overridden by "pgBackRestConfig", if set. Defaults to the value below. # backupsSize: 1Gi # backupsStorageClassName sets the storage class to a class existing in Kubernetes. # Defaults to the "default" storage class defined in the cluster. # Can be overridden by "pgBackRestConfig", if set. # backupsStorageClassName: "hostpath" # s3 allows for AWS S3 or an S3 compatible storage system to be used for # backups. This allows for a quick setup with S3; if you need more advanced # setup, use pgBackRestConfig. # s3: # # bucket specifies the S3 bucket to use, # bucket: "" # # endpoint specifies the S3 endpoint to use. # endpoint: "" # # region specifies the S3 region to use. If your S3 storage system does not # # use "region", fill this in with a random vaule. # region: "" # # key is the S3 key. This is stored in a Secret. # key: "" # # keySecret is the S3 key secret. This is stored in a Secret. # keySecret: "" # # keyType can be configured to enable IAM integration via AssumeRole # keyType: "" # # encryptionPassphrase is an optional parameter to enable encrypted backups # # with pgBackRest. This is encrypted by pgBackRest and does not use S3's # # built-in encrpytion system. # encryptionPassphrase: "" # gcs allows for Google Cloud Storage (GCS) to be used for backups. This allows # for a quick setup with GCS; if you need a more advanced setup, use # "pgBackRestConfig". # gcs: # # bucket is the name of the GCS bucket that the backups will be stored in. # bucket: "" # # key is a multi-line string that contains the GCS key, which is a JSON # # structure. # key: | # {} # azure allows for Azure Blob Storage to be used for backups. This allows # for a quick setup with Azure Blob Storage; if you need a more advanced setup, # use "pgBackRestConfig". # azure: # # account is the name of the Azure account to be used. # account: "" # # key is the Secret key used associated with the Azure acount. # key: "" # # container is the Azure container that the backups will be stored in. # container: "" # multiBackupRepos allows for backing up to multiple repositories. This is # effectively uses the "quickstarts" for each of the backup types (volume, s3, # gcs, azure). You can have any permutation of these types. You can set up to 4. # can be overwritten by "pgBackRestConfig". # # You can't set "multiBackupRepos" and any of the individual quickstarts at the # same time. "multiBackupRepos" will take precedence. # # Below is an example that enables one of each backup type. Note all of the # available quickstart options are presented below; please see the backup types # if you want to see how each option works. # multiBackupRepos: # - volume: # backupsSize: 1Gi # - s3: # bucket: "" # endpoint: "" # region: "" # key: "" # keySecret: "" # keyType: "" # - gcs: # bucket: "" # key: | # {} # - azure: # account: "" # key: "" # container: "" # pgBackRestConfig allows for the configuration of every pgBackRest option # except for "image", which is set by "pgBackRest". # pgBackRestConfig: {} ################################ # Pooling / pgBouncer Settings # ################################ # pgBouncerConfig sets all of the pgBouncer portion of the spec except for # image. To set image, you need to set the "pgBouncer" setting. # pgBouncerConfig: {} ####################### # Monitoring Settings # ####################### # monitoringConfig sets all of the monitoring portion of the spec except for the # image. To set the image, which also enables monitoring, you need to set the # "monitoring" setting. # monitoringConfig: {} ####################### # Kubernetes Settings # ####################### # metadata contains any metadata that should be applied to all PGO managed # objects in this Postgres cluster. This includes "annotations" and "labels" as # subkeys. # metadata: {} # service customizes the Service that exposes the Postgres primary. # service: {} # imagePullPolicy sets the pull policy for all the images. This defaults to # the Kubernetes heuristic: # https://kubernetes.io/docs/concepts/containers/images/#imagepullpolicy-defaulting # imagePullPolicy: IfNotPresent # imagePullSecrets references Secrets that credentials for pulling image from # private repositories # imagePullSecrets: [] # supplementalGroups sets any group IDs that should be assigned to # Pods, particularly around file system contraints within a system # supplementalGroups: [] # disableDefaultPodScheduling if set to true, will disable any of the default # scheduling constraints for Pods, such as the default Pod Topology Spread # Constraints. If set to false or unset, the default scheduling constraints will # be used in addition to any customizations that are added in. # disableDefaultPodScheduling: false # openshift can set explicitly if this is an OpenShift cluster, or a cluster # that uses a SecurityContextConstraint. This usually does not need to be set, # but you may want to explicitly set it to "false" when using a SCC like # "anyuid" # openshift: false