PostgresCluster - v1
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 |
|---|---|---|---|
| authentication | object | ❌ | Authentication settings for the PostgreSQL server |
| backups | object | ❌ | PostgreSQL backup configuration |
| config | object | ❌ | General configuration of the PostgreSQL server |
| 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. |
| instrumentation | object | ❌ | Configuration for the OpenTelemetry collector container used to collect logs and metrics. |
| 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. |
| replicaService | object | ❌ | Specification of the service that exposes PostgreSQL replica instances |
| 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. -- DEPRECATED |
| 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.authentication
Authentication settings for the PostgreSQL server
| name | type | required | description |
|---|---|---|---|
| rules | []object | ❌ | Postgres compares every new connection to these rules in the order they are defined. The first rule that matches determines if and how the connection must then authenticate. Connections that match no rules are disconnected. When this is omitted or empty, Postgres accepts encrypted connections to any database from users that have a password. To refuse all network connections, set this to one rule that matches "host" connections to the "reject" method. More info: https://www.postgresql.org/docs/current/auth-pg-hba-conf.html |
↩ ParentPostgresCluster.spec.authentication.rules[index]
Postgres compares every new connection to these rules in the order they are defined. The first rule that matches determines if and how the connection must then authenticate. Connections that match no rules are disconnected. When this is omitted or empty, Postgres accepts encrypted connections to any database from users that have a password. To refuse all network connections, set this to one rule that matches "host" connections to the "reject" method. More info: https://www.postgresql.org/docs/current/auth-pg-hba-conf.html
| name | type | required | description |
|---|---|---|---|
| connection | string | ❌ | The connection transport this rule matches. Typical values are: 1. "host" for network connections that may or may not be encrypted. 2. "hostssl" for network connections encrypted using TLS. 3. "hostgssenc" for network connections encrypted using GSSAPI. |
| databases | []string | ❌ | Which databases this rule matches. When omitted or empty, this rule matches all databases. |
| hba | string | ❌ | One line of the "pg_hba.conf" file. Changes to this value will be automatically reloaded without validation. |
| method | string | ❌ | The authentication method to use when a connection matches this rule. The special value "reject" refuses connections that match this rule. More info: https://www.postgresql.org/docs/current/auth-methods.html |
| options | map[string]: int or string | ❌ | Additional settings for this rule or its authentication method. |
| users | []string | ❌ | Which user names this rule matches. When omitted or empty, this rule matches all users. |
↩ ParentPostgresCluster.spec.backups
PostgreSQL backup configuration
| name | type | required | description |
|---|---|---|---|
| pgbackrest | object | ❌ | pgBackRest archive configuration |
| snapshots | object | ❌ | VolumeSnapshot 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 |
| log | object | ❌ | Logging configuration for pgbackrest processes running in postgres instance pods. |
| 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 |
|---|---|---|---|
| clusterTrustBundle | object | ❌ | ClusterTrustBundle allows a pod to access the .spec.trustBundle field of ClusterTrustBundle objects in an auto-updating file. Alpha, gated by the ClusterTrustBundleProjection feature gate. ClusterTrustBundle objects can either be selected by name, or by the combination of signer name and a label selector. Kubelet performs aggressive normalization of the PEM contents written into the pod filesystem. Esoteric PEM features such as inter-block comments and block headers are stripped. Certificates are deduplicated. The ordering of certificates within the file is arbitrary, and Kubelet may change the order over time. |
| configMap | object | ❌ | configMap information about the configMap data to project |
| downwardAPI | object | ❌ | downwardAPI information about the downwardAPI data to project |
| podCertificate | object | ❌ | Projects an auto-rotating credential bundle (private key and certificate chain) that the pod can use either as a TLS client or server. Kubelet generates a private key and uses it to send a PodCertificateRequest to the named signer. Once the signer approves the request and issues a certificate chain, Kubelet writes the key and certificate chain to the pod filesystem. The pod does not start until certificates have been issued for each podCertificate projected volume source in its spec. Kubelet will begin trying to rotate the certificate at the time indicated by the signer using the PodCertificateRequest.Status.BeginRefreshAt timestamp. Kubelet can write a single file, indicated by the credentialBundlePath field, or separate files, indicated by the keyPath and certificateChainPath fields. The credential bundle is a single file in PEM format. The first PEM entry is the private key (in PKCS#8 format), and the remaining PEM entries are the certificate chain issued by the signer (typically, signers will return their certificate chain in leaf-to-root order). Prefer using the credential bundle format, since your application code can read it atomically. If you use keyPath and certificateChainPath, your application must make two separate file reads. If these coincide with a certificate rotation, it is possible that the private key and leaf certificate you read may not correspond to each other. Your application will need to check for this condition, and re-read until they are consistent. The named signer controls chooses the format of the certificate it issues; consult the signer implementation's documentation to learn how to use the certificates it issues. |
| 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].clusterTrustBundle
ClusterTrustBundle allows a pod to access the .spec.trustBundle field of ClusterTrustBundle objects in an auto-updating file. Alpha, gated by the ClusterTrustBundleProjection feature gate. ClusterTrustBundle objects can either be selected by name, or by the combination of signer name and a label selector. Kubelet performs aggressive normalization of the PEM contents written into the pod filesystem. Esoteric PEM features such as inter-block comments and block headers are stripped. Certificates are deduplicated. The ordering of certificates within the file is arbitrary, and Kubelet may change the order over time.
| name | type | required | description |
|---|---|---|---|
| labelSelector | object | ❌ | Select all ClusterTrustBundles that match this label selector. Only has effect if signerName is set. Mutually-exclusive with name. If unset, interpreted as "match nothing". If set but empty, interpreted as "match everything". |
| name | string | ❌ | Select a single ClusterTrustBundle by object name. Mutually-exclusive with signerName and labelSelector. |
| optional | boolean | ❌ | If true, don't block pod startup if the referenced ClusterTrustBundle(s) aren't available. If using name, then the named ClusterTrustBundle is allowed not to exist. If using signerName, then the combination of signerName and labelSelector is allowed to match zero ClusterTrustBundles. |
| path | string | ✅ | Relative path from the volume root to write the bundle. |
| signerName | string | ❌ | Select all ClusterTrustBundles that match this signer name. Mutually-exclusive with name. The contents of all selected ClusterTrustBundles will be unified and deduplicated. |
↩ ParentPostgresCluster.spec.backups.pgbackrest.configuration[index].clusterTrustBundle.labelSelector
Select all ClusterTrustBundles that match this label selector. Only has effect if signerName is set. Mutually-exclusive with name. If unset, interpreted as "match nothing". If set but empty, interpreted as "match everything".
| name | type | required | description |
|---|---|---|---|
| matchExpressions | []object | ❌ | matchExpressions is a list of label selector requirements. The requirements are ANDed. |
| 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. |
↩ ParentPostgresCluster.spec.backups.pgbackrest.configuration[index].clusterTrustBundle.labelSelector.matchExpressions[index]
matchExpressions is a list of label selector requirements. The requirements are ANDed.
| name | type | required | description |
|---|---|---|---|
| key | string | ✅ | key is the label key that the selector applies to. |
| operator | string | ✅ | operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. |
| 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. |
↩ 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. This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. 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, namespace and uid 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, namespace and uid 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].podCertificate
Projects an auto-rotating credential bundle (private key and certificate chain) that the pod can use either as a TLS client or server. Kubelet generates a private key and uses it to send a PodCertificateRequest to the named signer. Once the signer approves the request and issues a certificate chain, Kubelet writes the key and certificate chain to the pod filesystem. The pod does not start until certificates have been issued for each podCertificate projected volume source in its spec. Kubelet will begin trying to rotate the certificate at the time indicated by the signer using the PodCertificateRequest.Status.BeginRefreshAt timestamp. Kubelet can write a single file, indicated by the credentialBundlePath field, or separate files, indicated by the keyPath and certificateChainPath fields. The credential bundle is a single file in PEM format. The first PEM entry is the private key (in PKCS#8 format), and the remaining PEM entries are the certificate chain issued by the signer (typically, signers will return their certificate chain in leaf-to-root order). Prefer using the credential bundle format, since your application code can read it atomically. If you use keyPath and certificateChainPath, your application must make two separate file reads. If these coincide with a certificate rotation, it is possible that the private key and leaf certificate you read may not correspond to each other. Your application will need to check for this condition, and re-read until they are consistent. The named signer controls chooses the format of the certificate it issues; consult the signer implementation's documentation to learn how to use the certificates it issues.
| name | type | required | description |
|---|---|---|---|
| certificateChainPath | string | ❌ | Write the certificate chain at this path in the projected volume. Most applications should use credentialBundlePath. When using keyPath and certificateChainPath, your application needs to check that the key and leaf certificate are consistent, because it is possible to read the files mid-rotation. |
| credentialBundlePath | string | ❌ | Write the credential bundle at this path in the projected volume. The credential bundle is a single file that contains multiple PEM blocks. The first PEM block is a PRIVATE KEY block, containing a PKCS#8 private key. The remaining blocks are CERTIFICATE blocks, containing the issued certificate chain from the signer (leaf and any intermediates). Using credentialBundlePath lets your Pod's application code make a single atomic read that retrieves a consistent key and certificate chain. If you project them to separate files, your application code will need to additionally check that the leaf certificate was issued to the key. |
| keyPath | string | ❌ | Write the key at this path in the projected volume. Most applications should use credentialBundlePath. When using keyPath and certificateChainPath, your application needs to check that the key and leaf certificate are consistent, because it is possible to read the files mid-rotation. |
| keyType | string | ✅ | The type of keypair Kubelet will generate for the pod. Valid values are "RSA3072", "RSA4096", "ECDSAP256", "ECDSAP384", "ECDSAP521", and "ED25519". |
| maxExpirationSeconds | integer | ❌ | maxExpirationSeconds is the maximum lifetime permitted for the certificate. Kubelet copies this value verbatim into the PodCertificateRequests it generates for this projection. If omitted, kube-apiserver will set it to 86400(24 hours). kube-apiserver will reject values shorter than 3600 (1 hour). The maximum allowable value is 7862400 (91 days). The signer implementation is then free to issue a certificate with any lifetime shorter than MaxExpirationSeconds, but no shorter than 3600 seconds (1 hour). This constraint is enforced by kube-apiserver. kubernetes.io signers will never issue certificates with a lifetime longer than 24 hours. |
| signerName | string | ✅ | Kubelet's generated CSRs will be addressed to this signer. |
↩ 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. This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. 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 |
| log | object | ❌ | Logging configuration for pgbackrest processes running in Backup Job Pods. |
| 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 |
| volumes | object | ❌ | Volumes to add to Backup Job Pods |
↩ 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. |
↩ ParentPostgresCluster.spec.backups.pgbackrest.jobs.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[index]
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.
| name | type | required | description |
|---|---|---|---|
| preference | object | ✅ | A node selector term, associated with the corresponding weight. |
| weight | integer | ✅ | Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. |
↩ ParentPostgresCluster.spec.backups.pgbackrest.jobs.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[index].preference
A node selector term, associated with the corresponding weight.
| name | type | required | description |
|---|---|---|---|
| matchExpressions | []object | ❌ | A list of node selector requirements by node's labels. |
| matchFields | []object | ❌ | A list of node selector requirements by node's fields. |
↩ ParentPostgresCluster.spec.backups.pgbackrest.jobs.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[index].preference.matchExpressions[index]
A list of node selector requirements by node's labels.
| name | type | required | description |
|---|---|---|---|
| key | string | ✅ | The label key that the selector applies to. |
| operator | string | ✅ | Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. |
| 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. |
↩ ParentPostgresCluster.spec.backups.pgbackrest.jobs.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[index].preference.matchFields[index]
A list of node selector requirements by node's fields.
| name | type | required | description |
|---|---|---|---|
| key | string | ✅ | The label key that the selector applies to. |
| operator | string | ✅ | Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. |
| 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. |
↩ ParentPostgresCluster.spec.backups.pgbackrest.jobs.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution
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 | required | description |
|---|---|---|---|
| nodeSelectorTerms | []object | ✅ | Required. A list of node selector terms. The terms are ORed. |
↩ ParentPostgresCluster.spec.backups.pgbackrest.jobs.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[index]
Required. A list of node selector terms. The terms are ORed.
| name | type | required | description |
|---|---|---|---|
| matchExpressions | []object | ❌ | A list of node selector requirements by node's labels. |
| matchFields | []object | ❌ | A list of node selector requirements by node's fields. |
↩ ParentPostgresCluster.spec.backups.pgbackrest.jobs.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[index].matchExpressions[index]
A list of node selector requirements by node's labels.
| name | type | required | description |
|---|---|---|---|
| key | string | ✅ | The label key that the selector applies to. |
| operator | string | ✅ | Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. |
| 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. |
↩ ParentPostgresCluster.spec.backups.pgbackrest.jobs.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms[index].matchFields[index]
A list of node selector requirements by node's fields.
| name | type | required | description |
|---|---|---|---|
| key | string | ✅ | The label key that the selector applies to. |
| operator | string | ✅ | Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. |
| 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. |
↩ ParentPostgresCluster.spec.backups.pgbackrest.jobs.affinity.podAffinity
Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).
| 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 has pods which matches the corresponding podAffinityTerm; 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 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. |
↩ ParentPostgresCluster.spec.backups.pgbackrest.jobs.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[index]
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.
| name | type | required | description |
|---|---|---|---|
| podAffinityTerm | object | ✅ | Required. A pod affinity term, associated with the corresponding weight. |
| weight | integer | ✅ | weight associated with matching the corresponding podAffinityTerm, in the range 1-100. |
↩ ParentPostgresCluster.spec.backups.pgbackrest.jobs.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[index].podAffinityTerm
Required. A pod affinity term, associated with the corresponding weight.
| name | type | required | description |
|---|---|---|---|
| labelSelector | object | ❌ | A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. |
| matchLabelKeys | []string | ❌ | MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with labelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both matchLabelKeys and labelSelector. Also, matchLabelKeys cannot be set when labelSelector isn't set. |
| mismatchLabelKeys | []string | ❌ | MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with labelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. Also, mismatchLabelKeys cannot be set when labelSelector isn't set. |
| namespaceSelector | object | ❌ | A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. |
| namespaces | []string | ❌ | namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". |
| 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. |
↩ ParentPostgresCluster.spec.backups.pgbackrest.jobs.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[index].podAffinityTerm.labelSelector
A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods.
| name | type | required | description |
|---|---|---|---|
| matchExpressions | []object | ❌ | matchExpressions is a list of label selector requirements. The requirements are ANDed. |
| 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. |
↩ ParentPostgresCluster.spec.backups.pgbackrest.jobs.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[index].podAffinityTerm.labelSelector.matchExpressions[index]
matchExpressions is a list of label selector requirements. The requirements are ANDed.
| name | type | required | description |
|---|---|---|---|
| key | string | ✅ | key is the label key that the selector applies to. |
| operator | string | ✅ | operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. |
| 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. |
↩ ParentPostgresCluster.spec.backups.pgbackrest.jobs.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[index].podAffinityTerm.namespaceSelector
A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
| name | type | required | description |
|---|---|---|---|
| matchExpressions | []object | ❌ | matchExpressions is a list of label selector requirements. The requirements are ANDed. |
| 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. |
↩ ParentPostgresCluster.spec.backups.pgbackrest.jobs.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution[index].podAffinityTerm.namespaceSelector.matchExpressions[index]
matchExpressions is a list of label selector requirements. The requirements are ANDed.
| name | type | required | description |
|---|---|---|---|
| key | string | ✅ | key is the label key that the selector applies to. |
| operator | string | ✅ | operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. |
| 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. |
↩ ParentPostgresCluster.spec.backups.pgbackrest.jobs.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[index]
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.
| name | type | required | description |
|---|---|---|---|
| labelSelector | object | ❌ | A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. |
| matchLabelKeys | []string | ❌ | MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with labelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both matchLabelKeys and labelSelector. Also, matchLabelKeys cannot be set when labelSelector isn't set. |
| mismatchLabelKeys | []string | ❌ | MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with labelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. Also, mismatchLabelKeys cannot be set when labelSelector isn't set. |
| namespaceSelector | object | ❌ | A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. |
| namespaces | []string | ❌ | namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". |
| 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. |
↩ ParentPostgresCluster.spec.backups.pgbackrest.jobs.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[index].labelSelector
A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods.
| name | type | required | description |
|---|---|---|---|
| matchExpressions | []object | ❌ | matchExpressions is a list of label selector requirements. The requirements are ANDed. |
| 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. |
↩ ParentPostgresCluster.spec.backups.pgbackrest.jobs.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[index].labelSelector.matchExpressions[index]
matchExpressions is a list of label selector requirements. The requirements are ANDed.
| name | type | required | description |
|---|---|---|---|
| key | string | ✅ | key is the label key that the selector applies to. |
| operator | string | ✅ | operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. |
| 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. |
↩ ParentPostgresCluster.spec.backups.pgbackrest.jobs.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[index].namespaceSelector
A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
| name | type | required | description |
|---|---|---|---|
| matchExpressions | []object | ❌ | matchExpressions is a list of label selector requirements. The requirements are ANDed. |
| 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. |
↩ ParentPostgresCluster.spec.backups.pgbackrest.jobs.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution[index].namespaceSelector.matchExpressions[index]
matchExpressions is a list of label selector requirements. The requirements are ANDed.
| name | type | required | description |
|---|---|---|---|
| key | string | ✅ | key is the label key that the selector applies to. |
| operator | string | ✅ | operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. |
| 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. |
↩ ParentPostgresCluster.spec.backups.pgbackrest.jobs.affinity.podAntiAffinity
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 | required | description |
|---|---|---|---|
| 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 subtracting "weight" from the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. |
| 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. |
↩ ParentPostgresCluster.spec.backups.pgbackrest.jobs.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[index]
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 subtracting "weight" from the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.
| name | type | required | description |
|---|---|---|---|
| podAffinityTerm | object | ✅ | Required. A pod affinity term, associated with the corresponding weight. |
| weight | integer | ✅ | weight associated with matching the corresponding podAffinityTerm, in the range 1-100. |
↩ ParentPostgresCluster.spec.backups.pgbackrest.jobs.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[index].podAffinityTerm
Required. A pod affinity term, associated with the corresponding weight.
| name | type | required | description |
|---|---|---|---|
| labelSelector | object | ❌ | A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. |
| matchLabelKeys | []string | ❌ | MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with labelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both matchLabelKeys and labelSelector. Also, matchLabelKeys cannot be set when labelSelector isn't set. |
| mismatchLabelKeys | []string | ❌ | MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with labelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. Also, mismatchLabelKeys cannot be set when labelSelector isn't set. |
| namespaceSelector | object | ❌ | A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. |
| namespaces | []string | ❌ | namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". |
| 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. |
↩ ParentPostgresCluster.spec.backups.pgbackrest.jobs.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[index].podAffinityTerm.labelSelector
A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods.
| name | type | required | description |
|---|---|---|---|
| matchExpressions | []object | ❌ | matchExpressions is a list of label selector requirements. The requirements are ANDed. |
| 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. |
↩ ParentPostgresCluster.spec.backups.pgbackrest.jobs.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[index].podAffinityTerm.labelSelector.matchExpressions[index]
matchExpressions is a list of label selector requirements. The requirements are ANDed.
| name | type | required | description |
|---|---|---|---|
| key | string | ✅ | key is the label key that the selector applies to. |
| operator | string | ✅ | operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. |
| 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. |
↩ ParentPostgresCluster.spec.backups.pgbackrest.jobs.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[index].podAffinityTerm.namespaceSelector
A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
| name | type | required | description |
|---|---|---|---|
| matchExpressions | []object | ❌ | matchExpressions is a list of label selector requirements. The requirements are ANDed. |
| 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. |
↩ ParentPostgresCluster.spec.backups.pgbackrest.jobs.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution[index].podAffinityTerm.namespaceSelector.matchExpressions[index]
matchExpressions is a list of label selector requirements. The requirements are ANDed.
| name | type | required | description |
|---|---|---|---|
| key | string | ✅ | key is the label key that the selector applies to. |
| operator | string | ✅ | operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. |
| 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. |
↩ ParentPostgresCluster.spec.backups.pgbackrest.jobs.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[index]
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.
| name | type | required | description |
|---|---|---|---|
| labelSelector | object | ❌ | A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. |
| matchLabelKeys | []string | ❌ | MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with labelSelector as key in (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both matchLabelKeys and labelSelector. Also, matchLabelKeys cannot be set when labelSelector isn't set. |
| mismatchLabelKeys | []string | ❌ | MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with labelSelector as key notin (value) to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. Also, mismatchLabelKeys cannot be set when labelSelector isn't set. |
| namespaceSelector | object | ❌ | A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. |
| namespaces | []string | ❌ | namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". |
| 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. |
↩ ParentPostgresCluster.spec.backups.pgbackrest.jobs.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[index].labelSelector
A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods.
| name | type | required | description |
|---|---|---|---|
| matchExpressions | []object | ❌ | matchExpressions is a list of label selector requirements. The requirements are ANDed. |
| 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. |
↩ ParentPostgresCluster.spec.backups.pgbackrest.jobs.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[index].labelSelector.matchExpressions[index]
matchExpressions is a list of label selector requirements. The requirements are ANDed.
| name | type | required | description |
|---|---|---|---|
| key | string | ✅ | key is the label key that the selector applies to. |
| operator | string | ✅ | operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. |
| 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. |
↩ ParentPostgresCluster.spec.backups.pgbackrest.jobs.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution[index].namespaceSelector
A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces.
| name | type | required | description |
|---|---|---|---|
| matchExpressions | []object | ❌ | matchExpressions is a list of label selector requirements. The requirements are ANDed. |
| matchLabels | map[string]: string |