CRD Reference

Packages:

postgres-operator.crunchydata.com/v1beta1

Resource Types:

PostgresCluster

PostgresCluster is the Schema for the postgresclusters API

Name Type Description Required
apiVersion string postgres-operator.crunchydata.com/v1beta1 true
kind string PostgresCluster true
metadata object Refer to the Kubernetes API documentation for the fields of the `metadata` field. true
spec object PostgresClusterSpec defines the desired state of PostgresCluster false
status object PostgresClusterStatus defines the observed state of PostgresCluster false

PostgresCluster.spec ↩ Parent

PostgresClusterSpec defines the desired state of PostgresCluster

Name Type Description Required
customReplicationTLSSecret object The secret containing the replication client certificates and keys for secure connections to the PostgreSQL server. It will need to contain the client TLS certificate, TLS key and the Certificate Authority certificate with the data keys set to tls.crt, tls.key and ca.crt, respectively. NOTE: If CustomReplicationClientTLSSecret is provided, CustomTLSSecret MUST be provided and the ca.crt provided must be the same. false
customTLSSecret object The secret containing the Certificates and Keys to encrypt PostgreSQL traffic will need to contain the server TLS certificate, TLS key and the Certificate Authority certificate with the data keys set to tls.crt, tls.key and ca.crt, respectively. It will then be mounted as a volume projection to the '/pgconf/tls' directory. For more information on Kubernetes secret projections, please see https://k8s.io/docs/concepts/configuration/secret/#projection-of-secret-keys-to-specific-paths NOTE: If CustomTLSSecret is provided, CustomReplicationClientTLSSecret MUST be provided and the ca.crt provided must be the same. false
dataSource object Specifies a data source for bootstrapping the PostgreSQL cluster. false
imagePullSecrets []object The image pull secrets used to pull from a private registry Changing this value causes all running pods to restart. https://k8s.io/docs/tasks/configure-pod-container/pull-image-private-registry/ false
metadata object Metadata contains metadata for PostgresCluster resources false
monitoring object The specification of monitoring tools that connect to PostgreSQL false
openshift boolean Whether or not the PostgreSQL cluster is being deployed to an OpenShift envioronment false
patroni object false
port integer The port on which PostgreSQL should listen. false
proxy object The specification of a proxy that connects to PostgreSQL. false
shutdown boolean Whether or not the PostgreSQL cluster should be stopped. When this is true, workloads are scaled to zero and CronJobs are suspended. Other resources, such as Services and Volumes, remain in place. false
standby object Run this cluster as a read-only copy of an existing cluster or archive. false
backups object PostgreSQL backup configuration true
image string The image name to use for PostgreSQL containers true
instances []object true
postgresVersion integer The major version of PostgreSQL installed in the PostgreSQL container true

PostgresCluster.spec.customReplicationTLSSecret ↩ Parent

The secret containing the replication client certificates and keys for secure connections to the PostgreSQL server. It will need to contain the client TLS certificate, TLS key and the Certificate Authority certificate with the data keys set to tls.crt, tls.key and ca.crt, respectively. NOTE: If CustomReplicationClientTLSSecret is provided, CustomTLSSecret MUST be provided and the ca.crt provided must be the same.

Name Type Description Required
items []object If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. false
name string Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? false
optional boolean Specify whether the Secret or its key must be defined false

PostgresCluster.spec.customReplicationTLSSecret.items[index] ↩ Parent

Maps a string key to a path within a volume.

Name Type Description Required
mode integer Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. false
key string The key to project. true
path string The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. true

PostgresCluster.spec.customTLSSecret ↩ Parent

The secret containing the Certificates and Keys to encrypt PostgreSQL traffic will need to contain the server TLS certificate, TLS key and the Certificate Authority certificate with the data keys set to tls.crt, tls.key and ca.crt, respectively. It will then be mounted as a volume projection to the ‘/pgconf/tls’ directory. For more information on Kubernetes secret projections, please see https://k8s.io/docs/concepts/configuration/secret/#projection-of-secret-keys-to-specific-paths NOTE: If CustomTLSSecret is provided, CustomReplicationClientTLSSecret MUST be provided and the ca.crt provided must be the same.

Name Type Description Required
items []object If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. false
name string Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? false
optional boolean Specify whether the Secret or its key must be defined false

PostgresCluster.spec.customTLSSecret.items[index] ↩ Parent

Maps a string key to a path within a volume.

Name Type Description Required
mode integer Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. false
key string The key to project. true
path string The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. true

PostgresCluster.spec.dataSource ↩ Parent

Specifies a data source for bootstrapping the PostgreSQL cluster.

Name Type Description Required
postgresCluster object Defines a pgBackRest data source that can be used to pre-populate the PostgreSQL data directory for a new PostgreSQL cluster using a pgBackRest restore. false

PostgresCluster.spec.dataSource.postgresCluster ↩ Parent

Defines a pgBackRest data source that can be used to pre-populate the PostgreSQL data directory for a new PostgreSQL cluster using a pgBackRest restore.

Name Type Description Required
clusterName string The name of an existing PostgresCluster to use as the data source for the new PostgresCluster. Defaults to the name of the PostgresCluster being created if not provided. false
clusterNamespace string The namespace of the cluster specified as the data source using the clusterName field. Defaults to the namespace of the PostgresCluster being created if not provided. false
options []string Command line options to include when running the pgBackRest restore command. https://pgbackrest.org/command.html#command-restore false
resources object Resource requirements for the pgBackRest restore Job. false
repoName string The name of the pgBackRest repo within the source PostgresCluster that contains the backups that should be utilized to perform a pgBackRest restore when initializing the data source for the new PostgresCluster. true

PostgresCluster.spec.dataSource.postgresCluster.resources ↩ Parent

Resource requirements for the pgBackRest restore Job.

Name Type Description Required
limits map[string]int or string Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ false
requests map[string]int or string Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ false

PostgresCluster.spec.imagePullSecrets[index] ↩ Parent

LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.

Name Type Description Required
name string Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? false

PostgresCluster.spec.metadata ↩ Parent

Metadata contains metadata for PostgresCluster resources

Name Type Description Required
annotations map[string]string false
labels map[string]string false

PostgresCluster.spec.monitoring ↩ Parent

The specification of monitoring tools that connect to PostgreSQL

Name Type Description Required
pgmonitor object PGMonitorSpec defines the desired state of the pgMonitor tool suite false

PostgresCluster.spec.monitoring.pgmonitor ↩ Parent

PGMonitorSpec defines the desired state of the pgMonitor tool suite

Name Type Description Required
exporter object false

PostgresCluster.spec.monitoring.pgmonitor.exporter ↩ Parent

Name Type Description Required
configuration []object Projected volumes containing custom PostgreSQL Exporter configuration. Currently supports the customization of PostgreSQL Exporter queries. If a "queries.yaml" file is detected in any volume projected using this field, it will be loaded using the "extend.query-path" flag: https://github.com/prometheus-community/postgres_exporter#flags Changing the values of field causes PostgreSQL and the exporter to restart. false
resources object Changing this value causes PostgreSQL and the exporter to restart. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers false
image string The image name to use for crunchy-postgres-exporter containers true

PostgresCluster.spec.monitoring.pgmonitor.exporter.configuration[index] ↩ Parent

Projection that may be projected along with other supported volume types

Name Type Description Required
configMap object information about the configMap data to project false
downwardAPI object information about the downwardAPI data to project false
secret object information about the secret data to project false
serviceAccountToken object information about the serviceAccountToken data to project false

PostgresCluster.spec.monitoring.pgmonitor.exporter.configuration[index].configMap ↩ Parent

information about the configMap data to project

Name Type Description Required
items []object If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. false
name string Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? false
optional boolean Specify whether the ConfigMap or its keys must be defined false

PostgresCluster.spec.monitoring.pgmonitor.exporter.configuration[index].configMap.items[index] ↩ Parent

Maps a string key to a path within a volume.

Name Type Description Required
mode integer Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. false
key string The key to project. true
path string The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. true

PostgresCluster.spec.monitoring.pgmonitor.exporter.configuration[index].downwardAPI ↩ Parent

information about the downwardAPI data to project

Name Type Description Required
items []object Items is a list of DownwardAPIVolume file false

PostgresCluster.spec.monitoring.pgmonitor.exporter.configuration[index].downwardAPI.items[index] ↩ Parent

DownwardAPIVolumeFile represents information to create the file containing the pod field

Name Type Description Required
fieldRef object Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. false
mode integer Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. false
resourceFieldRef object Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. false
path string Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..' true

PostgresCluster.spec.monitoring.pgmonitor.exporter.configuration[index].downwardAPI.items[index].fieldRef ↩ Parent

Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

Name Type Description Required
apiVersion string Version of the schema the FieldPath is written in terms of, defaults to "v1". false
fieldPath string Path of the field to select in the specified API version. true

PostgresCluster.spec.monitoring.pgmonitor.exporter.configuration[index].downwardAPI.items[index].resourceFieldRef ↩ Parent

Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

Name Type Description Required
containerName string Container name: required for volumes, optional for env vars false
divisor int or string Specifies the output format of the exposed resources, defaults to "1" false
resource string Required: resource to select true

PostgresCluster.spec.monitoring.pgmonitor.exporter.configuration[index].secret ↩ Parent

information about the secret data to project

Name Type Description Required
items []object If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. false
name string Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? false
optional boolean Specify whether the Secret or its key must be defined false

PostgresCluster.spec.monitoring.pgmonitor.exporter.configuration[index].secret.items[index] ↩ Parent

Maps a string key to a path within a volume.

Name Type Description Required
mode integer Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. false
key string The key to project. true
path string The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. true

PostgresCluster.spec.monitoring.pgmonitor.exporter.configuration[index].serviceAccountToken ↩ Parent

information about the serviceAccountToken data to project

Name Type Description Required
audience string Audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver. false
expirationSeconds integer ExpirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes. false
path string Path is the path relative to the mount point of the file to project the token into. true

PostgresCluster.spec.monitoring.pgmonitor.exporter.resources ↩ Parent

Changing this value causes PostgreSQL and the exporter to restart. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers

Name Type Description Required
limits map[string]int or string Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ false
requests map[string]int or string Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ false

PostgresCluster.spec.patroni ↩ Parent

Name Type Description Required
dynamicConfiguration object false
leaderLeaseDurationSeconds integer TTL of the cluster leader lock. "Think of it as the length of time before initiation of the automatic failover process." false
port integer The port on which Patroni should listen. false
syncPeriodSeconds integer The interval for refreshing the leader lock and applying dynamicConfiguration. Must be less than leaderLeaseDurationSeconds. false

PostgresCluster.spec.proxy ↩ Parent

The specification of a proxy that connects to PostgreSQL.

Name Type Description Required
pgBouncer object Defines a PgBouncer proxy and connection pooler. true

PostgresCluster.spec.proxy.pgBouncer ↩ Parent

Defines a PgBouncer proxy and connection pooler.

Name Type Description Required
affinity object Scheduling constraints of a PgBouncer pod. Changing this value causes PgBouncer to restart. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node false
config object Configuration settings for the PgBouncer process. Changes to any of these values will be automatically reloaded without validation. Be careful, as you may put PgBouncer into an unusable state. More info: https://www.pgbouncer.org/usage.html#reload false
customTLSSecret object A secret projection containing a certificate and key with which to encrypt connections to PgBouncer. The "tls.crt", "tls.key", and "ca.crt" paths must be PEM-encoded certificates and keys. Changing this value causes PgBouncer to restart. More info: https://kubernetes.io/docs/concepts/configuration/secret/#projection-of-secret-keys-to-specific-paths false
metadata object Metadata contains metadata for PostgresCluster resources false
port integer Port on which PgBouncer should listen for client connections. Changing this value causes PgBouncer to restart. false
replicas integer Number of desired PgBouncer pods. false
resources object Compute resources of a PgBouncer container. Changing this value causes PgBouncer to restart. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers false
tolerations []object Tolerations of a PgBouncer pod. Changing this value causes PgBouncer to restart. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration false
image string Name of a container image that can run PgBouncer 1.15 or newer. Changing this value causes PgBouncer to restart. More info: https://kubernetes.io/docs/concepts/containers/images true

PostgresCluster.spec.proxy.pgBouncer.affinity ↩ Parent

Scheduling constraints of a PgBouncer pod. Changing this value causes PgBouncer to restart. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node

Name Type Description Required
nodeAffinity object Describes node affinity scheduling rules for the pod. false
podAffinity object Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)). false
podAntiAffinity object Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)). false

PostgresCluster.spec.proxy.pgBouncer.affinity.nodeAffinity ↩ Parent

Describes node affinity scheduling rules for the pod.

Name Type Description Required
preferredDuringSchedulingIgnoredDuringExecution []object The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred. false
requiredDuringSchedulingIgnoredDuringExecution object If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. false

PostgresCluster.spec.proxy.pgBouncer.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[index] ↩ Parent

An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it’s a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).

Name Type Description Required
preference object A node selector term, associated with the corresponding weight. true
weight integer Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. true

PostgresCluster.spec.proxy.pgBouncer.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[index].preference ↩ Parent

A node selector term, associated with the corresponding weight.

Name Type Description Required
matchExpressions []object A list of node selector requirements by node's labels. false
matchFields []object A list of node selector requirements by node's fields. false

PostgresCluster.spec.proxy.pgBouncer.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[index].preference.matchExpressions[index] ↩ Parent

A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

Name Type Description Required
values []string An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. false
key string The label key that the selector applies to. true
operator string Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. true

PostgresCluster.spec.proxy.pgBouncer.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[index].preference.matchFields[index] ↩ Parent

A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

Name Type Description Required
values []string An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. false
key string The label key that the selector applies to. true
operator string Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. true

PostgresCluster.spec.proxy.pgBouncer.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution ↩ Parent

If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

Name Type Description Required
nodeSelectorTerms []object Required. A list of node selector terms. The terms are ORed. true

PostgresCluster.spec.proxy.pgBouncer.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[index] ↩ Parent

A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.

Name Type Description Required
matchExpressions []object A list of node selector requirements by node's labels. false
matchFields []object A list of node selector requirements by node's fields. false

PostgresCluster.spec.proxy.pgBouncer.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[index].matchExpressions[index] ↩ Parent

A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

Name Type Description Required
values []string An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. false
key string The label key that the selector applies to. true
operator string Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. true

PostgresCluster.spec.proxy.pgBouncer.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[index].matchFields[index] ↩ Parent

A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

Name Type Description Required
values []string An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. false
key string The label key that the selector applies to. true
operator string Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. true

PostgresCluster.spec.proxy.pgBouncer.affinity.podAffinity ↩ Parent

Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).

Name Type Description Required
preferredDuringSchedulingIgnoredDuringExecution []object The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. false
requiredDuringSchedulingIgnoredDuringExecution []object If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. false

PostgresCluster.spec.proxy.pgBouncer.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[index] ↩ Parent

The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

Name Type Description Required
podAffinityTerm object Required. A pod affinity term, associated with the corresponding weight. true
weight integer weight associated with matching the corresponding podAffinityTerm, in the range 1-100. true

PostgresCluster.spec.proxy.pgBouncer.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[index].podAffinityTerm ↩ Parent

Required. A pod affinity term, associated with the corresponding weight.

Name Type Description Required
labelSelector object A label query over a set of resources, in this case pods. false
namespaces []string namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means "this pod's namespace" false
topologyKey string This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. true

PostgresCluster.spec.proxy.pgBouncer.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[index].podAffinityTerm.labelSelector ↩ Parent

A label query over a set of resources, in this case pods.

Name Type Description Required
matchExpressions []object matchExpressions is a list of label selector requirements. The requirements are ANDed. false
matchLabels map[string]string matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. false

PostgresCluster.spec.proxy.pgBouncer.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[index].podAffinityTerm.labelSelector.matchExpressions[index] ↩ Parent

A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

Name Type Description Required
values []string values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. false
key string key is the label key that the selector applies to. true
operator string operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. true

PostgresCluster.spec.proxy.pgBouncer.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[index] ↩ Parent

Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running

Name Type Description Required
labelSelector object A label query over a set of resources, in this case pods. false
namespaces []string namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means "this pod's namespace" false
topologyKey string This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. true

PostgresCluster.spec.proxy.pgBouncer.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[index].labelSelector ↩ Parent

A label query over a set of resources, in this case pods.

Name Type Description Required
matchExpressions []object matchExpressions is a list of label selector requirements. The requirements are ANDed. false
matchLabels map[string]string matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. false

PostgresCluster.spec.proxy.pgBouncer.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[index].labelSelector.matchExpressions[index] ↩ Parent

A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

Name Type Description Required
values []string values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. false
key string key is the label key that the selector applies to. true
operator string operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. true

PostgresCluster.spec.proxy.pgBouncer.affinity.podAntiAffinity ↩ Parent

Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).

Name Type Description Required
preferredDuringSchedulingIgnoredDuringExecution []object The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. false
requiredDuringSchedulingIgnoredDuringExecution []object If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. false

PostgresCluster.spec.proxy.pgBouncer.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[index] ↩ Parent

The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

Name Type Description Required
podAffinityTerm object Required. A pod affinity term, associated with the corresponding weight. true
weight integer weight associated with matching the corresponding podAffinityTerm, in the range 1-100. true

PostgresCluster.spec.proxy.pgBouncer.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[index].podAffinityTerm ↩ Parent

Required. A pod affinity term, associated with the corresponding weight.

Name Type Description Required
labelSelector object A label query over a set of resources, in this case pods. false
namespaces []string namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means "this pod's namespace" false
topologyKey string This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. true

PostgresCluster.spec.proxy.pgBouncer.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[index].podAffinityTerm.labelSelector ↩ Parent

A label query over a set of resources, in this case pods.

Name Type Description Required
matchExpressions []object matchExpressions is a list of label selector requirements. The requirements are ANDed. false
matchLabels map[string]string matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. false

PostgresCluster.spec.proxy.pgBouncer.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[index].podAffinityTerm.labelSelector.matchExpressions[index] ↩ Parent

A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

Name Type Description Required
values []string values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. false
key string key is the label key that the selector applies to. true
operator string operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. true

PostgresCluster.spec.proxy.pgBouncer.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[index] ↩ Parent

Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running

Name Type Description Required
labelSelector object A label query over a set of resources, in this case pods. false
namespaces []string namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means "this pod's namespace" false
topologyKey string This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. true

PostgresCluster.spec.proxy.pgBouncer.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[index].labelSelector ↩ Parent

A label query over a set of resources, in this case pods.

Name Type Description Required
matchExpressions []object matchExpressions is a list of label selector requirements. The requirements are ANDed. false
matchLabels map[string]string matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. false

PostgresCluster.spec.proxy.pgBouncer.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[index].labelSelector.matchExpressions[index] ↩ Parent

A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

Name Type Description Required
values []string values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. false
key string key is the label key that the selector applies to. true
operator string operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. true

PostgresCluster.spec.proxy.pgBouncer.config ↩ Parent

Configuration settings for the PgBouncer process. Changes to any of these values will be automatically reloaded without validation. Be careful, as you may put PgBouncer into an unusable state. More info: https://www.pgbouncer.org/usage.html#reload

Name Type Description Required
databases map[string]string PgBouncer database definitions. The key is the database requested by a client while the value is a libpq-styled connection string. The special key "*" acts as a fallback. When this field is empty, PgBouncer is configured with a single "*" entry that connects to the primary PostgreSQL instance. More info: https://www.pgbouncer.org/config.html#section-databases false
files []object Files to mount under "/etc/pgbouncer". When specified, settings in the "pgbouncer.ini" file are loaded before all others. From there, other files may be included by absolute path. Changing these references causes PgBouncer to restart, but changes to the file contents are automatically reloaded. More info: https://www.pgbouncer.org/config.html#include-directive false
global map[string]string Settings that apply to the entire PgBouncer process. More info: https://www.pgbouncer.org/config.html false
users map[string]string Connection settings specific to particular users. More info: https://www.pgbouncer.org/config.html#section-users false

PostgresCluster.spec.proxy.pgBouncer.config.files[index] ↩ Parent

Projection that may be projected along with other supported volume types

Name Type Description Required
configMap object information about the configMap data to project false
downwardAPI object information about the downwardAPI data to project false
secret object information about the secret data to project false
serviceAccountToken object information about the serviceAccountToken data to project false

PostgresCluster.spec.proxy.pgBouncer.config.files[index].configMap ↩ Parent

information about the configMap data to project

Name Type Description Required
items []object If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. false
name string Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? false
optional boolean Specify whether the ConfigMap or its keys must be defined false

PostgresCluster.spec.proxy.pgBouncer.config.files[index].configMap.items[index] ↩ Parent

Maps a string key to a path within a volume.

Name Type Description Required
mode integer Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. false
key string The key to project. true
path string The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. true

PostgresCluster.spec.proxy.pgBouncer.config.files[index].downwardAPI ↩ Parent

information about the downwardAPI data to project

Name Type Description Required
items []object Items is a list of DownwardAPIVolume file false

PostgresCluster.spec.proxy.pgBouncer.config.files[index].downwardAPI.items[index] ↩ Parent

DownwardAPIVolumeFile represents information to create the file containing the pod field

Name Type Description Required
fieldRef object Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. false
mode integer Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. false
resourceFieldRef object Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. false
path string Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..' true

PostgresCluster.spec.proxy.pgBouncer.config.files[index].downwardAPI.items[index].fieldRef ↩ Parent

Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

Name Type Description Required
apiVersion string Version of the schema the FieldPath is written in terms of, defaults to "v1". false
fieldPath string Path of the field to select in the specified API version. true

PostgresCluster.spec.proxy.pgBouncer.config.files[index].downwardAPI.items[index].resourceFieldRef ↩ Parent

Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

Name Type Description Required
containerName string Container name: required for volumes, optional for env vars false
divisor int or string Specifies the output format of the exposed resources, defaults to "1" false
resource string Required: resource to select true

PostgresCluster.spec.proxy.pgBouncer.config.files[index].secret ↩ Parent

information about the secret data to project

Name Type Description Required
items []object If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. false
name string Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? false
optional boolean Specify whether the Secret or its key must be defined false

PostgresCluster.spec.proxy.pgBouncer.config.files[index].secret.items[index] ↩ Parent

Maps a string key to a path within a volume.

Name Type Description Required
mode integer Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. false
key string The key to project. true
path string The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. true

PostgresCluster.spec.proxy.pgBouncer.config.files[index].serviceAccountToken ↩ Parent

information about the serviceAccountToken data to project

Name Type Description Required
audience string Audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver. false
expirationSeconds integer ExpirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes. false
path string Path is the path relative to the mount point of the file to project the token into. true

PostgresCluster.spec.proxy.pgBouncer.customTLSSecret ↩ Parent

A secret projection containing a certificate and key with which to encrypt connections to PgBouncer. The “tls.crt”, “tls.key”, and “ca.crt” paths must be PEM-encoded certificates and keys. Changing this value causes PgBouncer to restart. More info: https://kubernetes.io/docs/concepts/configuration/secret/#projection-of-secret-keys-to-specific-paths

Name Type Description Required
items []object If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. false
name string Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? false
optional boolean Specify whether the Secret or its key must be defined false

PostgresCluster.spec.proxy.pgBouncer.customTLSSecret.items[index] ↩ Parent

Maps a string key to a path within a volume.

Name Type Description Required
mode integer Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. false
key string The key to project. true
path string The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. true

PostgresCluster.spec.proxy.pgBouncer.metadata ↩ Parent

Metadata contains metadata for PostgresCluster resources

Name Type Description Required
annotations map[string]string false
labels map[string]string false

PostgresCluster.spec.proxy.pgBouncer.resources ↩ Parent

Compute resources of a PgBouncer container. Changing this value causes PgBouncer to restart. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers

Name Type Description Required
limits map[string]int or string Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ false
requests map[string]int or string Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ false

PostgresCluster.spec.proxy.pgBouncer.tolerations[index] ↩ Parent

The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator .

Name Type Description Required
effect string Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. false
key string Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. false
operator string Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. false
tolerationSeconds integer TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. false
value string Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. false

PostgresCluster.spec.standby ↩ Parent

Run this cluster as a read-only copy of an existing cluster or archive.

Name Type Description Required
enabled boolean Whether or not the PostgreSQL cluster should be read-only. When this is true, WAL files are applied from the pgBackRest repository. false
repoName string The name of the pgBackRest repository to follow for WAL files. true

PostgresCluster.spec.backups ↩ Parent

PostgreSQL backup configuration

Name Type Description Required
pgbackrest object pgBackRest archive configuration true

PostgresCluster.spec.backups.pgbackrest ↩ Parent

pgBackRest archive configuration

Name Type Description Required
configuration []object Projected volumes containing custom pgBackRest configuration. These files are mounted under "/etc/pgbackrest/conf.d" alongside any pgBackRest configuration generated by the PostgreSQL Operator: https://pgbackrest.org/configuration.html false
global map[string]string Global pgBackRest configuration settings. These settings are included in the "global" section of the pgBackRest configuration generated by the PostgreSQL Operator, and then mounted under "/etc/pgbackrest/conf.d": https://pgbackrest.org/configuration.html false
manual object Defines details for manual pgBackRest backup Jobs false
metadata object Metadata contains metadata for PostgresCluster resources false
repoHost object Defines a pgBackRest repository host false
repos []object Defines a pgBackRest repository false
restore object Defines details for performing an in-place restore using pgBackRest false
image string The image name to use for pgBackRest containers. Utilized to run pgBackRest repository hosts and backups. true

PostgresCluster.spec.backups.pgbackrest.configuration[index] ↩ Parent

Projection that may be projected along with other supported volume types

Name Type Description Required
configMap object information about the configMap data to project false
downwardAPI object information about the downwardAPI data to project false
secret object information about the secret data to project false
serviceAccountToken object information about the serviceAccountToken data to project false

PostgresCluster.spec.backups.pgbackrest.configuration[index].configMap ↩ Parent

information about the configMap data to project

Name Type Description Required
items []object If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. false
name string Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? false
optional boolean Specify whether the ConfigMap or its keys must be defined false

PostgresCluster.spec.backups.pgbackrest.configuration[index].configMap.items[index] ↩ Parent

Maps a string key to a path within a volume.

Name Type Description Required
mode integer Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. false
key string The key to project. true
path string The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. true

PostgresCluster.spec.backups.pgbackrest.configuration[index].downwardAPI ↩ Parent

information about the downwardAPI data to project

Name Type Description Required
items []object Items is a list of DownwardAPIVolume file false

PostgresCluster.spec.backups.pgbackrest.configuration[index].downwardAPI.items[index] ↩ Parent

DownwardAPIVolumeFile represents information to create the file containing the pod field

Name Type Description Required
fieldRef object Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. false
mode integer Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. false
resourceFieldRef object Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. false
path string Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..' true

PostgresCluster.spec.backups.pgbackrest.configuration[index].downwardAPI.items[index].fieldRef ↩ Parent

Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.

Name Type Description Required
apiVersion string Version of the schema the FieldPath is written in terms of, defaults to "v1". false
fieldPath string Path of the field to select in the specified API version. true

PostgresCluster.spec.backups.pgbackrest.configuration[index].downwardAPI.items[index].resourceFieldRef ↩ Parent

Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.

Name Type Description Required
containerName string Container name: required for volumes, optional for env vars false
divisor int or string Specifies the output format of the exposed resources, defaults to "1" false
resource string Required: resource to select true

PostgresCluster.spec.backups.pgbackrest.configuration[index].secret ↩ Parent

information about the secret data to project

Name Type Description Required
items []object If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. false
name string Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? false
optional boolean Specify whether the Secret or its key must be defined false

PostgresCluster.spec.backups.pgbackrest.configuration[index].secret.items[index] ↩ Parent

Maps a string key to a path within a volume.

Name Type Description Required
mode integer Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. false
key string The key to project. true
path string The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. true

PostgresCluster.spec.backups.pgbackrest.configuration[index].serviceAccountToken ↩ Parent

information about the serviceAccountToken data to project

Name Type Description Required
audience string Audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver. false
expirationSeconds integer ExpirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes. false
path string Path is the path relative to the mount point of the file to project the token into. true

PostgresCluster.spec.backups.pgbackrest.manual ↩ Parent

Defines details for manual pgBackRest backup Jobs

Name Type Description Required
options []string Command line options to include when running the pgBackRest backup command. https://pgbackrest.org/command.html#command-backup false
repoName string The name of the pgBackRest repo to run the backup command against. true

PostgresCluster.spec.backups.pgbackrest.metadata ↩ Parent

Metadata contains metadata for PostgresCluster resources

Name Type Description Required
annotations map[string]string false
labels map[string]string false

PostgresCluster.spec.backups.pgbackrest.repoHost ↩ Parent

Defines a pgBackRest repository host

Name Type Description Required
dedicated object Defines a dedicated repository host configuration false
resources object Resource requirements for a pgBackRest repository host false
sshConfigMap object ConfigMap containing custom SSH configuration false
sshSecret object Secret containing custom SSH keys false

PostgresCluster.spec.backups.pgbackrest.repoHost.dedicated ↩ Parent

Defines a dedicated repository host configuration

Name Type Description Required
affinity object Scheduling constraints of the Dedicated repo host pod. Changing this value causes repo host to restart. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node false
resources object Resource requirements for the dedicated repository host false
tolerations []object Tolerations of a PgBackRest repo host pod. Changing this value causes a restart. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration false

PostgresCluster.spec.backups.pgbackrest.repoHost.dedicated.affinity ↩ Parent

Scheduling constraints of the Dedicated repo host pod. Changing this value causes repo host to restart. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node

Name Type Description Required
nodeAffinity object Describes node affinity scheduling rules for the pod. false
podAffinity object Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)). false
podAntiAffinity object Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)). false

PostgresCluster.spec.backups.pgbackrest.repoHost.dedicated.affinity.nodeAffinity ↩ Parent

Describes node affinity scheduling rules for the pod.

Name Type Description Required
preferredDuringSchedulingIgnoredDuringExecution []object The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred. false
requiredDuringSchedulingIgnoredDuringExecution object If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. false

PostgresCluster.spec.backups.pgbackrest.repoHost.dedicated.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[index] ↩ Parent

An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it’s a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).

Name Type Description Required
preference object A node selector term, associated with the corresponding weight. true
weight integer Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. true

PostgresCluster.spec.backups.pgbackrest.repoHost.dedicated.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[index].preference ↩ Parent

A node selector term, associated with the corresponding weight.

Name Type Description Required
matchExpressions []object A list of node selector requirements by node's labels. false
matchFields []object A list of node selector requirements by node's fields. false

PostgresCluster.spec.backups.pgbackrest.repoHost.dedicated.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[index].preference.matchExpressions[index] ↩ Parent

A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

Name Type Description Required
values []string An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. false
key string The label key that the selector applies to. true
operator string Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. true

PostgresCluster.spec.backups.pgbackrest.repoHost.dedicated.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[index].preference.matchFields[index] ↩ Parent

A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

Name Type Description Required
values []string An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. false
key string The label key that the selector applies to. true
operator string Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. true

PostgresCluster.spec.backups.pgbackrest.repoHost.dedicated.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution ↩ Parent

If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

Name Type Description Required
nodeSelectorTerms []object Required. A list of node selector terms. The terms are ORed. true

PostgresCluster.spec.backups.pgbackrest.repoHost.dedicated.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[index] ↩ Parent

A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.

Name Type Description Required
matchExpressions []object A list of node selector requirements by node's labels. false
matchFields []object A list of node selector requirements by node's fields. false

PostgresCluster.spec.backups.pgbackrest.repoHost.dedicated.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[index].matchExpressions[index] ↩ Parent

A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

Name Type Description Required
values []string An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. false
key string The label key that the selector applies to. true
operator string Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. true

PostgresCluster.spec.backups.pgbackrest.repoHost.dedicated.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[index].matchFields[index] ↩ Parent

A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

Name Type Description Required
values []string An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. false
key string The label key that the selector applies to. true
operator string Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. true

PostgresCluster.spec.backups.pgbackrest.repoHost.dedicated.affinity.podAffinity ↩ Parent

Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).

Name Type Description Required
preferredDuringSchedulingIgnoredDuringExecution []object The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. false
requiredDuringSchedulingIgnoredDuringExecution []object If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. false

PostgresCluster.spec.backups.pgbackrest.repoHost.dedicated.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[index] ↩ Parent

The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

Name Type Description Required
podAffinityTerm object Required. A pod affinity term, associated with the corresponding weight. true
weight integer weight associated with matching the corresponding podAffinityTerm, in the range 1-100. true

PostgresCluster.spec.backups.pgbackrest.repoHost.dedicated.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[index].podAffinityTerm ↩ Parent

Required. A pod affinity term, associated with the corresponding weight.

Name Type Description Required
labelSelector object A label query over a set of resources, in this case pods. false
namespaces []string namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means "this pod's namespace" false
topologyKey string This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. true

PostgresCluster.spec.backups.pgbackrest.repoHost.dedicated.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[index].podAffinityTerm.labelSelector ↩ Parent

A label query over a set of resources, in this case pods.

Name Type Description Required
matchExpressions []object matchExpressions is a list of label selector requirements. The requirements are ANDed. false
matchLabels map[string]string matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. false

PostgresCluster.spec.backups.pgbackrest.repoHost.dedicated.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[index].podAffinityTerm.labelSelector.matchExpressions[index] ↩ Parent

A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

Name Type Description Required
values []string values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. false
key string key is the label key that the selector applies to. true
operator string operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. true

PostgresCluster.spec.backups.pgbackrest.repoHost.dedicated.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[index] ↩ Parent

Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running

Name Type Description Required
labelSelector object A label query over a set of resources, in this case pods. false
namespaces []string namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means "this pod's namespace" false
topologyKey string This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. true

PostgresCluster.spec.backups.pgbackrest.repoHost.dedicated.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[index].labelSelector ↩ Parent

A label query over a set of resources, in this case pods.

Name Type Description Required
matchExpressions []object matchExpressions is a list of label selector requirements. The requirements are ANDed. false
matchLabels map[string]string matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. false

PostgresCluster.spec.backups.pgbackrest.repoHost.dedicated.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[index].labelSelector.matchExpressions[index] ↩ Parent

A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

Name Type Description Required
values []string values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. false
key string key is the label key that the selector applies to. true
operator string operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. true

PostgresCluster.spec.backups.pgbackrest.repoHost.dedicated.affinity.podAntiAffinity ↩ Parent

Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).

Name Type Description Required
preferredDuringSchedulingIgnoredDuringExecution []object The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. false
requiredDuringSchedulingIgnoredDuringExecution []object If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. false

PostgresCluster.spec.backups.pgbackrest.repoHost.dedicated.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[index] ↩ Parent

The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

Name Type Description Required
podAffinityTerm object Required. A pod affinity term, associated with the corresponding weight. true
weight integer weight associated with matching the corresponding podAffinityTerm, in the range 1-100. true

PostgresCluster.spec.backups.pgbackrest.repoHost.dedicated.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[index].podAffinityTerm ↩ Parent

Required. A pod affinity term, associated with the corresponding weight.

Name Type Description Required
labelSelector object A label query over a set of resources, in this case pods. false
namespaces []string namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means "this pod's namespace" false
topologyKey string This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. true

PostgresCluster.spec.backups.pgbackrest.repoHost.dedicated.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[index].podAffinityTerm.labelSelector ↩ Parent

A label query over a set of resources, in this case pods.

Name Type Description Required
matchExpressions []object matchExpressions is a list of label selector requirements. The requirements are ANDed. false
matchLabels map[string]string matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. false

PostgresCluster.spec.backups.pgbackrest.repoHost.dedicated.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[index].podAffinityTerm.labelSelector.matchExpressions[index] ↩ Parent

A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

Name Type Description Required
values []string values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. false
key string key is the label key that the selector applies to. true
operator string operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. true

PostgresCluster.spec.backups.pgbackrest.repoHost.dedicated.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[index] ↩ Parent

Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running

Name Type Description Required
labelSelector object A label query over a set of resources, in this case pods. false
namespaces []string namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means "this pod's namespace" false
topologyKey string This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. true

PostgresCluster.spec.backups.pgbackrest.repoHost.dedicated.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[index].labelSelector ↩ Parent

A label query over a set of resources, in this case pods.

Name Type Description Required
matchExpressions []object matchExpressions is a list of label selector requirements. The requirements are ANDed. false
matchLabels map[string]string matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. false

PostgresCluster.spec.backups.pgbackrest.repoHost.dedicated.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[index].labelSelector.matchExpressions[index] ↩ Parent

A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

Name Type Description Required
values []string values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. false
key string key is the label key that the selector applies to. true
operator string operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. true

PostgresCluster.spec.backups.pgbackrest.repoHost.dedicated.resources ↩ Parent

Resource requirements for the dedicated repository host

Name Type Description Required
limits map[string]int or string Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ false
requests map[string]int or string Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ false

PostgresCluster.spec.backups.pgbackrest.repoHost.dedicated.tolerations[index] ↩ Parent

The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator .

Name Type Description Required
effect string Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. false
key string Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. false
operator string Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. false
tolerationSeconds integer TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. false
value string Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. false

PostgresCluster.spec.backups.pgbackrest.repoHost.resources ↩ Parent

Resource requirements for a pgBackRest repository host

Name Type Description Required
limits map[string]int or string Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ false
requests map[string]int or string Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ false

PostgresCluster.spec.backups.pgbackrest.repoHost.sshConfigMap ↩ Parent

ConfigMap containing custom SSH configuration

Name Type Description Required
items []object If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. false
name string Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? false
optional boolean Specify whether the ConfigMap or its keys must be defined false

PostgresCluster.spec.backups.pgbackrest.repoHost.sshConfigMap.items[index] ↩ Parent

Maps a string key to a path within a volume.

Name Type Description Required
mode integer Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. false
key string The key to project. true
path string The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. true

PostgresCluster.spec.backups.pgbackrest.repoHost.sshSecret ↩ Parent

Secret containing custom SSH keys

Name Type Description Required
items []object If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. false
name string Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? false
optional boolean Specify whether the Secret or its key must be defined false

PostgresCluster.spec.backups.pgbackrest.repoHost.sshSecret.items[index] ↩ Parent

Maps a string key to a path within a volume.

Name Type Description Required
mode integer Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. false
key string The key to project. true
path string The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. true

PostgresCluster.spec.backups.pgbackrest.repos[index] ↩ Parent

PGBackRestRepo represents a pgBackRest repository. Only one of its members may be specified.

Name Type Description Required
azure object Represents a pgBackRest repository that is created using Azure storage false
gcs object Represents a pgBackRest repository that is created using Google Cloud Storage false
s3 object RepoS3 represents a pgBackRest repository that is created using AWS S3 (or S3-compatible) storage false
schedules object Defines the schedules for the pgBackRest backups Full, Differential and Incremental backup types are supported: https://pgbackrest.org/user-guide.html#concept/backup false
volume object Represents a pgBackRest repository that is created using a PersistentVolumeClaim false
name string The name of the the repository true

PostgresCluster.spec.backups.pgbackrest.repos[index].azure ↩ Parent

Represents a pgBackRest repository that is created using Azure storage

Name Type Description Required
container string The Azure container utilized for the repository true

PostgresCluster.spec.backups.pgbackrest.repos[index].gcs ↩ Parent

Represents a pgBackRest repository that is created using Google Cloud Storage

Name Type Description Required
bucket string The GCS bucket utilized for the repository true

PostgresCluster.spec.backups.pgbackrest.repos[index].s3 ↩ Parent

RepoS3 represents a pgBackRest repository that is created using AWS S3 (or S3-compatible) storage

Name Type Description Required
bucket string The S3 bucket utilized for the repository true
endpoint string A valid endpoint corresponding to the specified region true
region string The region corresponding to the S3 bucket true

PostgresCluster.spec.backups.pgbackrest.repos[index].schedules ↩ Parent

Defines the schedules for the pgBackRest backups Full, Differential and Incremental backup types are supported: https://pgbackrest.org/user-guide.html#concept/backup

Name Type Description Required
differential string Defines the Cron schedule for a differential pgBackRest backup. Follows the standard Cron schedule syntax: https://k8s.io/docs/concepts/workloads/controllers/cron-jobs/#cron-schedule-syntax false
full string Defines the Cron schedule for a full pgBackRest backup. Follows the standard Cron schedule syntax: https://k8s.io/docs/concepts/workloads/controllers/cron-jobs/#cron-schedule-syntax false
incremental string Defines the Cron schedule for an incremental pgBackRest backup. Follows the standard Cron schedule syntax: https://k8s.io/docs/concepts/workloads/controllers/cron-jobs/#cron-schedule-syntax false

PostgresCluster.spec.backups.pgbackrest.repos[index].volume ↩ Parent

Represents a pgBackRest repository that is created using a PersistentVolumeClaim

Name Type Description Required
volumeClaimSpec object Defines a PersistentVolumeClaim spec used to create and/or bind a volume true

PostgresCluster.spec.backups.pgbackrest.repos[index].volume.volumeClaimSpec ↩ Parent

Defines a PersistentVolumeClaim spec used to create and/or bind a volume

Name Type Description Required
accessModes []string AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 false
dataSource object This field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) * An existing custom resource that implements data population (Alpha) In order to use custom resource types that implement data population, the AnyVolumeDataSource feature gate must be enabled. If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. false
resources object Resources represents the minimum resources the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources false
selector object A label query over volumes to consider for binding. false
storageClassName string Name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 false
volumeMode string volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec. false
volumeName string VolumeName is the binding reference to the PersistentVolume backing this claim. false

PostgresCluster.spec.backups.pgbackrest.repos[index].volume.volumeClaimSpec.dataSource ↩ Parent

This field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) * An existing custom resource that implements data population (Alpha) In order to use custom resource types that implement data population, the AnyVolumeDataSource feature gate must be enabled. If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source.

Name Type Description Required
apiGroup string APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. false
kind string Kind is the type of resource being referenced true
name string Name is the name of resource being referenced true

PostgresCluster.spec.backups.pgbackrest.repos[index].volume.volumeClaimSpec.resources ↩ Parent

Resources represents the minimum resources the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources

Name Type Description Required
limits map[string]int or string Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ false
requests map[string]int or string Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ false

PostgresCluster.spec.backups.pgbackrest.repos[index].volume.volumeClaimSpec.selector ↩ Parent

A label query over volumes to consider for binding.

Name Type Description Required
matchExpressions []object matchExpressions is a list of label selector requirements. The requirements are ANDed. false
matchLabels map[string]string matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. false

PostgresCluster.spec.backups.pgbackrest.repos[index].volume.volumeClaimSpec.selector.matchExpressions[index] ↩ Parent

A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

Name Type Description Required
values []string values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. false
key string key is the label key that the selector applies to. true
operator string operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. true

PostgresCluster.spec.backups.pgbackrest.restore ↩ Parent

Defines details for performing an in-place restore using pgBackRest

Name Type Description Required
clusterName string The name of an existing PostgresCluster to use as the data source for the new PostgresCluster. Defaults to the name of the PostgresCluster being created if not provided. false
clusterNamespace string The namespace of the cluster specified as the data source using the clusterName field. Defaults to the namespace of the PostgresCluster being created if not provided. false
options []string Command line options to include when running the pgBackRest restore command. https://pgbackrest.org/command.html#command-restore false
resources object Resource requirements for the pgBackRest restore Job. false
enabled boolean Whether or not in-place pgBackRest restores are enabled for this PostgresCluster. true
repoName string The name of the pgBackRest repo within the source PostgresCluster that contains the backups that should be utilized to perform a pgBackRest restore when initializing the data source for the new PostgresCluster. true

PostgresCluster.spec.backups.pgbackrest.restore.resources ↩ Parent

Resource requirements for the pgBackRest restore Job.

Name Type Description Required
limits map[string]int or string Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ false
requests map[string]int or string Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ false

PostgresCluster.spec.instances[index] ↩ Parent

Name Type Description Required
affinity object Scheduling constraints of a PostgreSQL pod. Changing this value causes PostgreSQL to restart. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node false
metadata object Metadata contains metadata for PostgresCluster resources false
name string false
replicas integer false
resources object Compute resources of a PostgreSQL container. false
tolerations []object Tolerations of a PostgreSQL pod. Changing this value causes PostgreSQL to restart. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration false
walVolumeClaimSpec object Defines a separate PersistentVolumeClaim for PostgreSQL's write-ahead log. More info: https://www.postgresql.org/docs/current/wal.html false
dataVolumeClaimSpec object Defines a PersistentVolumeClaim for PostgreSQL data. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes true

PostgresCluster.spec.instances[index].affinity ↩ Parent

Scheduling constraints of a PostgreSQL pod. Changing this value causes PostgreSQL to restart. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node

Name Type Description Required
nodeAffinity object Describes node affinity scheduling rules for the pod. false
podAffinity object Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)). false
podAntiAffinity object Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)). false

PostgresCluster.spec.instances[index].affinity.nodeAffinity ↩ Parent

Describes node affinity scheduling rules for the pod.

Name Type Description Required
preferredDuringSchedulingIgnoredDuringExecution []object The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred. false
requiredDuringSchedulingIgnoredDuringExecution object If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. false

PostgresCluster.spec.instances[index].affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[index] ↩ Parent

An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it’s a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).

Name Type Description Required
preference object A node selector term, associated with the corresponding weight. true
weight integer Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. true

PostgresCluster.spec.instances[index].affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[index].preference ↩ Parent

A node selector term, associated with the corresponding weight.

Name Type Description Required
matchExpressions []object A list of node selector requirements by node's labels. false
matchFields []object A list of node selector requirements by node's fields. false

PostgresCluster.spec.instances[index].affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[index].preference.matchExpressions[index] ↩ Parent

A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

Name Type Description Required
values []string An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. false
key string The label key that the selector applies to. true
operator string Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. true

PostgresCluster.spec.instances[index].affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[index].preference.matchFields[index] ↩ Parent

A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

Name Type Description Required
values []string An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. false
key string The label key that the selector applies to. true
operator string Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. true

PostgresCluster.spec.instances[index].affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution ↩ Parent

If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.

Name Type Description Required
nodeSelectorTerms []object Required. A list of node selector terms. The terms are ORed. true

PostgresCluster.spec.instances[index].affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[index] ↩ Parent

A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.

Name Type Description Required
matchExpressions []object A list of node selector requirements by node's labels. false
matchFields []object A list of node selector requirements by node's fields. false

PostgresCluster.spec.instances[index].affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[index].matchExpressions[index] ↩ Parent

A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

Name Type Description Required
values []string An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. false
key string The label key that the selector applies to. true
operator string Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. true

PostgresCluster.spec.instances[index].affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[index].matchFields[index] ↩ Parent

A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

Name Type Description Required
values []string An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. false
key string The label key that the selector applies to. true
operator string Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. true

PostgresCluster.spec.instances[index].affinity.podAffinity ↩ Parent

Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).

Name Type Description Required
preferredDuringSchedulingIgnoredDuringExecution []object The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. false
requiredDuringSchedulingIgnoredDuringExecution []object If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. false

PostgresCluster.spec.instances[index].affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[index] ↩ Parent

The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

Name Type Description Required
podAffinityTerm object Required. A pod affinity term, associated with the corresponding weight. true
weight integer weight associated with matching the corresponding podAffinityTerm, in the range 1-100. true

PostgresCluster.spec.instances[index].affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[index].podAffinityTerm ↩ Parent

Required. A pod affinity term, associated with the corresponding weight.

Name Type Description Required
labelSelector object A label query over a set of resources, in this case pods. false
namespaces []string namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means "this pod's namespace" false
topologyKey string This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. true

PostgresCluster.spec.instances[index].affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[index].podAffinityTerm.labelSelector ↩ Parent

A label query over a set of resources, in this case pods.

Name Type Description Required
matchExpressions []object matchExpressions is a list of label selector requirements. The requirements are ANDed. false
matchLabels map[string]string matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. false

PostgresCluster.spec.instances[index].affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[index].podAffinityTerm.labelSelector.matchExpressions[index] ↩ Parent

A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

Name Type Description Required
values []string values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. false
key string key is the label key that the selector applies to. true
operator string operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. true

PostgresCluster.spec.instances[index].affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[index] ↩ Parent

Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running

Name Type Description Required
labelSelector object A label query over a set of resources, in this case pods. false
namespaces []string namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means "this pod's namespace" false
topologyKey string This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. true

PostgresCluster.spec.instances[index].affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[index].labelSelector ↩ Parent

A label query over a set of resources, in this case pods.

Name Type Description Required
matchExpressions []object matchExpressions is a list of label selector requirements. The requirements are ANDed. false
matchLabels map[string]string matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. false

PostgresCluster.spec.instances[index].affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[index].labelSelector.matchExpressions[index] ↩ Parent

A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

Name Type Description Required
values []string values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. false
key string key is the label key that the selector applies to. true
operator string operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. true

PostgresCluster.spec.instances[index].affinity.podAntiAffinity ↩ Parent

Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).

Name Type Description Required
preferredDuringSchedulingIgnoredDuringExecution []object The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. false
requiredDuringSchedulingIgnoredDuringExecution []object If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. false

PostgresCluster.spec.instances[index].affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[index] ↩ Parent

The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)

Name Type Description Required
podAffinityTerm object Required. A pod affinity term, associated with the corresponding weight. true
weight integer weight associated with matching the corresponding podAffinityTerm, in the range 1-100. true

PostgresCluster.spec.instances[index].affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[index].podAffinityTerm ↩ Parent

Required. A pod affinity term, associated with the corresponding weight.

Name Type Description Required
labelSelector object A label query over a set of resources, in this case pods. false
namespaces []string namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means "this pod's namespace" false
topologyKey string This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. true

PostgresCluster.spec.instances[index].affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[index].podAffinityTerm.labelSelector ↩ Parent

A label query over a set of resources, in this case pods.

Name Type Description Required
matchExpressions []object matchExpressions is a list of label selector requirements. The requirements are ANDed. false
matchLabels map[string]string matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. false

PostgresCluster.spec.instances[index].affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[index].podAffinityTerm.labelSelector.matchExpressions[index] ↩ Parent

A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

Name Type Description Required
values []string values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. false
key string key is the label key that the selector applies to. true
operator string operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. true

PostgresCluster.spec.instances[index].affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[index] ↩ Parent

Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running

Name Type Description Required
labelSelector object A label query over a set of resources, in this case pods. false
namespaces []string namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means "this pod's namespace" false
topologyKey string This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. true

PostgresCluster.spec.instances[index].affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[index].labelSelector ↩ Parent

A label query over a set of resources, in this case pods.

Name Type Description Required
matchExpressions []object matchExpressions is a list of label selector requirements. The requirements are ANDed. false
matchLabels map[string]string matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. false

PostgresCluster.spec.instances[index].affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[index].labelSelector.matchExpressions[index] ↩ Parent

A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

Name Type Description Required
values []string values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. false
key string key is the label key that the selector applies to. true
operator string operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. true

PostgresCluster.spec.instances[index].metadata ↩ Parent

Metadata contains metadata for PostgresCluster resources

Name Type Description Required
annotations map[string]string false
labels map[string]string false

PostgresCluster.spec.instances[index].resources ↩ Parent

Compute resources of a PostgreSQL container.

Name Type Description Required
limits map[string]int or string Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ false
requests map[string]int or string Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ false

PostgresCluster.spec.instances[index].tolerations[index] ↩ Parent

The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator .

Name Type Description Required
effect string Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. false
key string Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. false
operator string Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. false
tolerationSeconds integer TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. false
value string Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. false

PostgresCluster.spec.instances[index].walVolumeClaimSpec ↩ Parent

Defines a separate PersistentVolumeClaim for PostgreSQL’s write-ahead log. More info: https://www.postgresql.org/docs/current/wal.html

Name Type Description Required
accessModes []string AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 false
dataSource object This field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) * An existing custom resource that implements data population (Alpha) In order to use custom resource types that implement data population, the AnyVolumeDataSource feature gate must be enabled. If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. false
resources object Resources represents the minimum resources the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources false
selector object A label query over volumes to consider for binding. false
storageClassName string Name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 false
volumeMode string volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec. false
volumeName string VolumeName is the binding reference to the PersistentVolume backing this claim. false

PostgresCluster.spec.instances[index].walVolumeClaimSpec.dataSource ↩ Parent

This field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) * An existing custom resource that implements data population (Alpha) In order to use custom resource types that implement data population, the AnyVolumeDataSource feature gate must be enabled. If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source.

Name Type Description Required
apiGroup string APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. false
kind string Kind is the type of resource being referenced true
name string Name is the name of resource being referenced true

PostgresCluster.spec.instances[index].walVolumeClaimSpec.resources ↩ Parent

Resources represents the minimum resources the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources

Name Type Description Required
limits map[string]int or string Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ false
requests map[string]int or string Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ false

PostgresCluster.spec.instances[index].walVolumeClaimSpec.selector ↩ Parent

A label query over volumes to consider for binding.

Name Type Description Required
matchExpressions []object matchExpressions is a list of label selector requirements. The requirements are ANDed. false
matchLabels map[string]string matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. false

PostgresCluster.spec.instances[index].walVolumeClaimSpec.selector.matchExpressions[index] ↩ Parent

A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

Name Type Description Required
values []string values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. false
key string key is the label key that the selector applies to. true
operator string operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. true

PostgresCluster.spec.instances[index].dataVolumeClaimSpec ↩ Parent

Defines a PersistentVolumeClaim for PostgreSQL data. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes

Name Type Description Required
accessModes []string AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 false
dataSource object This field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) * An existing custom resource that implements data population (Alpha) In order to use custom resource types that implement data population, the AnyVolumeDataSource feature gate must be enabled. If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. false
resources object Resources represents the minimum resources the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources false
selector object A label query over volumes to consider for binding. false
storageClassName string Name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 false
volumeMode string volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec. false
volumeName string VolumeName is the binding reference to the PersistentVolume backing this claim. false

PostgresCluster.spec.instances[index].dataVolumeClaimSpec.dataSource ↩ Parent

This field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) * An existing custom resource that implements data population (Alpha) In order to use custom resource types that implement data population, the AnyVolumeDataSource feature gate must be enabled. If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source.

Name Type Description Required
apiGroup string APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. false
kind string Kind is the type of resource being referenced true
name string Name is the name of resource being referenced true

PostgresCluster.spec.instances[index].dataVolumeClaimSpec.resources ↩ Parent

Resources represents the minimum resources the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources

Name Type Description Required
limits map[string]int or string Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ false
requests map[string]int or string Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ false

PostgresCluster.spec.instances[index].dataVolumeClaimSpec.selector ↩ Parent

A label query over volumes to consider for binding.

Name Type Description Required
matchExpressions []object matchExpressions is a list of label selector requirements. The requirements are ANDed. false
matchLabels map[string]string matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. false

PostgresCluster.spec.instances[index].dataVolumeClaimSpec.selector.matchExpressions[index] ↩ Parent

A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

Name Type Description Required
values []string values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. false
key string key is the label key that the selector applies to. true
operator string operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. true

PostgresCluster.status ↩ Parent

PostgresClusterStatus defines the observed state of PostgresCluster

Name Type Description Required
conditions []object conditions represent the observations of postgrescluster's current state. Known .status.conditions.type are: "PersistentVolumeResizing", "ProxyAvailable" false
instances []object Current state of PostgreSQL instances. false
monitoring object Current state of PostgreSQL cluster monitoring tool configuration false
observedGeneration integer observedGeneration represents the .metadata.generation on which the status was based. false
patroni object false
pgbackrest object Status information for pgBackRest false
proxy object Current state of the PostgreSQL proxy. false
startupInstance string The instance that should be started first when bootstrapping and/or starting a PostgresCluster. false
startupInstanceSet string The instance set associated with the startupInstance false

PostgresCluster.status.conditions[index] ↩ Parent

Condition contains details for one aspect of the current state of this API Resource. — This struct is intended for direct use as an array at the field path .status.conditions. For example, type FooStatus struct{ // Represents the observations of a foo’s current state. // Known .status.conditions.type are: “Available”, “Progressing”, and “Degraded” // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,1,rep,name=conditions" // other fields }

Name Type Description Required
observedGeneration integer observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. false
lastTransitionTime string lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. true
message string message is a human readable message indicating details about the transition. This may be an empty string. true
reason string reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. true
status enum status of the condition, one of True, False, Unknown. [True False Unknown] true
type string type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) true

PostgresCluster.status.instances[index] ↩ Parent

Name Type Description Required
readyReplicas integer Total number of ready pods. false
replicas integer Total number of non-terminated pods. false
updatedReplicas integer Total number of non-terminated pods that have the desired specification. false
name string true

PostgresCluster.status.monitoring ↩ Parent

Current state of PostgreSQL cluster monitoring tool configuration

Name Type Description Required
exporterConfiguration string false

PostgresCluster.status.patroni ↩ Parent

Name Type Description Required
systemIdentifier string The PostgreSQL system identifier reported by Patroni. false

PostgresCluster.status.pgbackrest ↩ Parent

Status information for pgBackRest

Name Type Description Required
manualBackup object Status information for manual backups false
repoHost object Status information for the pgBackRest dedicated repository host false
repos []object Status information for pgBackRest repositories false
restore object Status information for in-place restores false
scheduledBackups []object Status information for scheduled backups false

PostgresCluster.status.pgbackrest.manualBackup ↩ Parent

Status information for manual backups

Name Type Description Required
active integer The number of actively running manual backup Pods. false
completionTime string Represents the time the manual backup Job was determined by the Job controller to be completed. This field is only set if the backup completed successfully. Additionally, it is represented in RFC3339 form and is in UTC. false
failed integer The number of Pods for the manual backup Job that reached the "Failed" phase. false
startTime string Represents the time the manual backup Job was acknowledged by the Job controller. It is represented in RFC3339 form and is in UTC. false
succeeded integer The number of Pods for the manual backup Job that reached the "Succeeded" phase. false
finished boolean Specifies whether or not the Job is finished executing (does not indicate success or failure). true
id string A unique identifier for the manual backup as provided using the "pgbackrest-backup" annotation when initiating a backup. true

PostgresCluster.status.pgbackrest.repoHost ↩ Parent

Status information for the pgBackRest dedicated repository host

Name Type Description Required
apiVersion string APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources false
kind string Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds false
ready boolean Whether or not the pgBackRest repository host is ready for use false

PostgresCluster.status.pgbackrest.repos[index] ↩ Parent

RepoVolumeStatus the status of a pgBackRest repository

Name Type Description Required
bound boolean Whether or not the pgBackRest repository PersistentVolumeClaim is bound to a volume false
replicaCreateBackupComplete boolean ReplicaCreateBackupReady indicates whether a backup exists in the repository as needed to bootstrap replicas. false
repoOptionsHash string A hash of the required fields in the spec for defining an Azure, GCS or S3 repository, Utilizd to detect changes to these fields and then execute pgBackRest stanza-create commands accordingly. false
stanzaCreated boolean Specifies whether or not a stanza has been successfully created for the repository false
volume string The name of the volume the containing the pgBackRest repository false
name string The name of the pgBackRest repository true

PostgresCluster.status.pgbackrest.restore ↩ Parent

Status information for in-place restores

Name Type Description Required
active integer The number of actively running manual backup Pods. false
completionTime string Represents the time the manual backup Job was determined by the Job controller to be completed. This field is only set if the backup completed successfully. Additionally, it is represented in RFC3339 form and is in UTC. false
failed integer The number of Pods for the manual backup Job that reached the "Failed" phase. false
startTime string Represents the time the manual backup Job was acknowledged by the Job controller. It is represented in RFC3339 form and is in UTC. false
succeeded integer The number of Pods for the manual backup Job that reached the "Succeeded" phase. false
finished boolean Specifies whether or not the Job is finished executing (does not indicate success or failure). true
id string A unique identifier for the manual backup as provided using the "pgbackrest-backup" annotation when initiating a backup. true

PostgresCluster.status.pgbackrest.scheduledBackups[index] ↩ Parent

Name Type Description Required
active integer The number of actively running manual backup Pods. false
completionTime string Represents the time the manual backup Job was determined by the Job controller to be completed. This field is only set if the backup completed successfully. Additionally, it is represented in RFC3339 form and is in UTC. false
cronJobName string The name of the associated pgBackRest scheduled backup CronJob false
failed integer The number of Pods for the manual backup Job that reached the "Failed" phase. false
repo string The name of the associated pgBackRest repository false
startTime string Represents the time the manual backup Job was acknowledged by the Job controller. It is represented in RFC3339 form and is in UTC. false
succeeded integer The number of Pods for the manual backup Job that reached the "Succeeded" phase. false
type string The pgBackRest backup type for this Job false

PostgresCluster.status.proxy ↩ Parent

Current state of the PostgreSQL proxy.

Name Type Description Required
pgBouncer object false

PostgresCluster.status.proxy.pgBouncer ↩ Parent

Name Type Description Required
postgresRevision string Identifies the revision of PgBouncer assets that have been installed into PostgreSQL. false
readyReplicas integer Total number of ready pods. false
replicas integer Total number of non-terminated pods. false