PostgresCluster
PostgresCluster
PostgresCluster is the Schema for the postgresclusters API
name | type | required | description |
---|---|---|---|
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 |
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 |
metadata | object | ✅ | Kubernetes resource namespace, name, labels, and annotations |
spec | object | ❌ | PostgresClusterSpec defines the desired state of PostgresCluster |
status | object | ❌ | PostgresClusterStatus defines the observed state of PostgresCluster |
↩ ParentPostgresCluster.spec
PostgresClusterSpec defines the desired state of PostgresCluster
name | type | required | description |
---|---|---|---|
backups | object | ✅ | PostgreSQL backup configuration |
config | object | ❌ | undefined |
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. |
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. |
dataSource | object | ❌ | Specifies a data source for bootstrapping the PostgreSQL cluster. |
databaseInitSQL | object | ❌ | DatabaseInitSQL defines a ConfigMap containing custom SQL that will be run after the cluster is initialized. This ConfigMap must be in the same namespace as the cluster. |
disableDefaultPodScheduling | boolean | ❌ | Whether or not the PostgreSQL cluster should use the defined default scheduling constraints. If the field is unset or false, the default scheduling constraints will be used in addition to any custom constraints provided. |
image | string | ❌ | The image name to use for PostgreSQL containers. When omitted, the value comes from an operator environment variable. For standard PostgreSQL images, the format is RELATED_IMAGE_POSTGRES_{postgresVersion} , e.g. RELATED_IMAGE_POSTGRES_13. For PostGIS enabled PostgreSQL images, the format is RELATED_IMAGE_POSTGRES_{postgresVersion} GIS{postGISVersion} , e.g. RELATED_IMAGE_POSTGRES_13_GIS_3.1. |
imagePullPolicy | Always , Never , IfNotPresent | ❌ | ImagePullPolicy is used to determine when Kubernetes will attempt to pull (download) container images. More info: https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy |
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/ |
instances | []object | ✅ | Specifies one or more sets of PostgreSQL pods that replicate data for this cluster. |
metadata | object | ❌ | Metadata contains metadata for custom resources |
monitoring | object | ❌ | The specification of monitoring tools that connect to PostgreSQL |
openshift | boolean | ❌ | Whether or not the PostgreSQL cluster is being deployed to an OpenShift environment. If the field is unset, the operator will automatically detect the environment. |
patroni | object | ❌ | undefined |
paused | boolean | ❌ | Suspends the rollout and reconciliation of changes made to the PostgresCluster spec. |
port | integer | ❌ | The port on which PostgreSQL should listen. |
postGISVersion | string | ❌ | The PostGIS extension version installed in the PostgreSQL image. When image is not set, indicates a PostGIS enabled image will be used. |
postgresVersion | integer | ✅ | The major version of PostgreSQL installed in the PostgreSQL image |
proxy | object | ❌ | The specification of a proxy that connects to PostgreSQL. |
service | object | ❌ | Specification of the service that exposes the PostgreSQL primary instance. |
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. |
standby | object | ❌ | Run this cluster as a read-only copy of an existing cluster or archive. |
supplementalGroups | []integer | ❌ | A list of group IDs applied to the process of a container. These can be useful when accessing shared file systems with constrained permissions. More info: https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#security-context |
userInterface | object | ❌ | The specification of a user interface that connects to PostgreSQL. |
users | []object | ❌ | Users to create inside PostgreSQL and the databases they should access. The default creates one user that can access one database matching the PostgresCluster name. An empty list creates no users. Removing a user from this list does NOT drop the user nor revoke their access. |
↩ ParentPostgresCluster.spec.backups
PostgreSQL backup configuration
name | type | required | description |
---|---|---|---|
pgbackrest | object | ✅ | pgBackRest archive configuration |
↩ ParentPostgresCluster.spec.backups.pgbackrest
pgBackRest archive configuration
name | type | required | description |
---|---|---|---|
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 |
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 |
image | string | ❌ | The image name to use for pgBackRest containers. Utilized to run pgBackRest repository hosts and backups. The image may also be set using the RELATED_IMAGE_PGBACKREST environment variable |
jobs | object | ❌ | Jobs field allows configuration for all backup jobs |
manual | object | ❌ | Defines details for manual pgBackRest backup Jobs |
metadata | object | ❌ | Metadata contains metadata for custom resources |
repoHost | object | ❌ | Defines configuration for a pgBackRest dedicated repository host. This section is only applicable if at least one "volume" (i.e. PVC-based) repository is defined in the "repos" section, therefore enabling a dedicated repository host Deployment. |
repos | []object | ✅ | Defines a pgBackRest repository |
restore | object | ❌ | Defines details for performing an in-place restore using pgBackRest |
sidecars | object | ❌ | Configuration for pgBackRest sidecar containers |
↩ ParentPostgresCluster.spec.backups.pgbackrest.configuration[index]
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
name | type | required | description |
---|---|---|---|
configMap | object | ❌ | configMap information about the configMap data to project |
downwardAPI | object | ❌ | downwardAPI information about the downwardAPI data to project |
secret | object | ❌ | secret information about the secret data to project |
serviceAccountToken | object | ❌ | serviceAccountToken is information about the serviceAccountToken data to project |
↩ ParentPostgresCluster.spec.backups.pgbackrest.configuration[index].configMap
configMap information about the configMap data to project
name | type | required | description |
---|---|---|---|
items | []object | ❌ | items 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 '..'. |
name | string | ❌ | Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names |
optional | boolean | ❌ | optional specify whether the ConfigMap or its keys must be defined |
↩ ParentPostgresCluster.spec.backups.pgbackrest.configuration[index].configMap.items[index]
items 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 '..'.
name | type | required | description |
---|---|---|---|
key | string | ✅ | key is the key to project. |
mode | integer | ❌ | mode is 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. |
path | string | ✅ | path is 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 '..'. |
↩ ParentPostgresCluster.spec.backups.pgbackrest.configuration[index].downwardAPI
downwardAPI information about the downwardAPI data to project
name | type | required | description |
---|---|---|---|
items | []object | ❌ | Items is a list of DownwardAPIVolume file |
↩ ParentPostgresCluster.spec.backups.pgbackrest.configuration[index].downwardAPI.items[index]
Items is a list of DownwardAPIVolume file
name | type | required | description |
---|---|---|---|
fieldRef | object | ❌ | Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. |
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. |
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 '..' |
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. |
↩ ParentPostgresCluster.spec.backups.pgbackrest.configuration[index].downwardAPI.items[index].fieldRef
Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.
name | type | required | description |
---|---|---|---|
apiVersion | string | ❌ | Version of the schema the FieldPath is written in terms of, defaults to "v1". |
fieldPath | string | ✅ | Path of the field to select in the specified API version. |
↩ ParentPostgresCluster.spec.backups.pgbackrest.configuration[index].downwardAPI.items[index].resourceFieldRef
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 | required | description |
---|---|---|---|
containerName | string | ❌ | Container name: required for volumes, optional for env vars |
divisor | int or string | ❌ | Specifies the output format of the exposed resources, defaults to "1" |
resource | string | ✅ | Required: resource to select |
↩ ParentPostgresCluster.spec.backups.pgbackrest.configuration[index].secret
secret information about the secret data to project
name | type | required | description |
---|---|---|---|
items | []object | ❌ | items 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 '..'. |
name | string | ❌ | Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names |
optional | boolean | ❌ | optional field specify whether the Secret or its key must be defined |
↩ ParentPostgresCluster.spec.backups.pgbackrest.configuration[index].secret.items[index]
items 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 '..'.
name | type | required | description |
---|---|---|---|
key | string | ✅ | key is the key to project. |
mode | integer | ❌ | mode is 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. |
path | string | ✅ | path is 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 '..'. |
↩ ParentPostgresCluster.spec.backups.pgbackrest.configuration[index].serviceAccountToken
serviceAccountToken is information about the serviceAccountToken data to project
name | type | required | description |
---|---|---|---|
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. |
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. |
path | string | ✅ | path is the path relative to the mount point of the file to project the token into. |
↩ ParentPostgresCluster.spec.backups.pgbackrest.jobs
Jobs field allows configuration for all backup jobs
name | type | required | description |
---|---|---|---|
affinity | object | ❌ | Scheduling constraints of pgBackRest backup Job pods. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node |
priorityClassName | string | ❌ | Priority class name for the pgBackRest backup Job pods. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/ |
resources | object | ❌ | Resource limits for backup jobs. Includes manual, scheduled and replica create backups |
tolerations | []object | ❌ | Tolerations of pgBackRest backup Job pods. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration |
ttlSecondsAfterFinished | integer | ❌ | Limit the lifetime of a Job that has finished. More info: https://kubernetes.io/docs/concepts/workloads/controllers/job |
↩ ParentPostgresCluster.spec.backups.pgbackrest.jobs.affinity
Scheduling constraints of pgBackRest backup Job pods. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node
name | type | required | description |
---|---|---|---|
nodeAffinity | object | ❌ | Describes node affinity scheduling rules for the pod. |
podAffinity | object | ❌ | Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)). |
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)). |
↩ ParentPostgresCluster.spec.backups.pgbackrest.jobs.affinity.nodeAffinity
Describes node affinity scheduling rules for the pod.
name | type | required | description |
---|---|---|---|
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. |
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. |