postgres-operator/manifests/postgresql.crd.yaml

997 lines
46 KiB
YAML

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.3
name: postgresqls.acid.zalan.do
spec:
group: acid.zalan.do
names:
categories:
- all
kind: postgresql
listKind: postgresqlList
plural: postgresqls
shortNames:
- pg
singular: postgresql
scope: Namespaced
versions:
- additionalPrinterColumns:
- description: Team responsible for Postgres cluster
jsonPath: .spec.teamId
name: Team
type: string
- description: PostgreSQL version
jsonPath: .spec.postgresql.version
name: Version
type: string
- description: Number of Pods per Postgres cluster
jsonPath: .spec.numberOfInstances
name: Pods
type: integer
- description: Size of the bound volume
jsonPath: .spec.volume.size
name: Volume
type: string
- description: Requested CPU for Postgres containers
jsonPath: .spec.resources.requests.cpu
name: CPU-Request
type: string
- description: Requested memory for Postgres containers
jsonPath: .spec.resources.requests.memory
name: Memory-Request
type: string
- description: Age of the PostgreSQL cluster
jsonPath: .metadata.creationTimestamp
name: Age
type: date
- description: Current sync status of postgresql resource
jsonPath: .status.PostgresClusterStatus
name: Status
type: string
name: v1
schema:
openAPIV3Schema:
description: Postgresql defines PostgreSQL Custom Resource Definition Object.
properties:
apiVersion:
description: |-
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
type: string
kind:
description: |-
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
type: string
metadata:
type: object
spec:
description: PostgresSpec defines the specification for the PostgreSQL
TPR.
properties:
additionalVolumes:
items:
description: AdditionalVolume specs additional optional volumes
for statefulset
properties:
isSubPathExpr:
type: boolean
mountPath:
type: string
name:
type: string
subPath:
type: string
targetContainers:
items:
type: string
nullable: true
type: array
volumeSource:
type: object
x-kubernetes-preserve-unknown-fields: true
required:
- mountPath
- name
- volumeSource
type: object
type: array
allowedSourceRanges:
description: load balancers' source ranges are the same for master
and replica services
items:
pattern: ^(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\/(\d|[1-2]\d|3[0-2])$
type: string
nullable: true
type: array
clone:
description: CloneDescription describes which cluster the new should
clone and up to which point in time
properties:
cluster:
type: string
s3_access_key_id:
type: string
s3_endpoint:
type: string
s3_force_path_style:
type: boolean
s3_secret_access_key:
type: string
s3_wal_path:
type: string
timestamp:
description: |-
The regexp matches the date-time format (RFC 3339 Section 5.6) that specifies a timezone as an offset relative to UTC
Example: 1996-12-19T16:39:57-08:00
Note: this field requires a timezone
pattern: ^([0-9]+)-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])[Tt]([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]|60)(\.[0-9]+)?(([+-]([01][0-9]|2[0-3]):[0-5][0-9]))$
type: string
uid:
format: uuid
type: string
required:
- cluster
type: object
connectionPooler:
description: |-
ConnectionPooler Options for connection pooler
pgbouncer-large (with higher resources) or odyssey-small (with smaller
resources)
Type string `json:"type,omitempty"`
makes sense to expose. E.g. pool size (min/max boundaries), max client
connections etc.
properties:
dockerImage:
type: string
maxDBConnections:
format: int32
type: integer
mode:
enum:
- session
- transaction
type: string
numberOfInstances:
format: int32
minimum: 1
type: integer
resources:
description: Resources describes requests and limits for the cluster
resouces.
properties:
limits:
description: ResourceDescription describes CPU and memory
resources defined for a cluster.
properties:
cpu:
description: |-
Decimal natural followed by m, or decimal natural followed by
dot followed by up to three decimal digits.
This is because the Kubernetes CPU resource has millis as the
maximum precision. The actual values are checked in code
because the regular expression would be huge and horrible and
not very helpful in validation error messages; this one checks
only the format of the given number.
https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#meaning-of-cpu
Note: the value specified here must not be zero or be lower
than the corresponding request.
pattern: ^(\d+m|\d+(\.\d{1,3})?)$
type: string
hugepages-1Gi:
pattern: ^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$
type: string
hugepages-2Mi:
pattern: ^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$
type: string
memory:
description: |-
You can express memory as a plain integer or as a fixed-point
integer using one of these suffixes: E, P, T, G, M, k. You can
also use the power-of-two equivalents: Ei, Pi, Ti, Gi, Mi, Ki
https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#meaning-of-memory
Note: the value specified here must not be zero or be higher
than the corresponding limit.
pattern: ^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$
type: string
type: object
requests:
description: ResourceDescription describes CPU and memory
resources defined for a cluster.
properties:
cpu:
description: |-
Decimal natural followed by m, or decimal natural followed by
dot followed by up to three decimal digits.
This is because the Kubernetes CPU resource has millis as the
maximum precision. The actual values are checked in code
because the regular expression would be huge and horrible and
not very helpful in validation error messages; this one checks
only the format of the given number.
https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#meaning-of-cpu
Note: the value specified here must not be zero or be lower
than the corresponding request.
pattern: ^(\d+m|\d+(\.\d{1,3})?)$
type: string
hugepages-1Gi:
pattern: ^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$
type: string
hugepages-2Mi:
pattern: ^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$
type: string
memory:
description: |-
You can express memory as a plain integer or as a fixed-point
integer using one of these suffixes: E, P, T, G, M, k. You can
also use the power-of-two equivalents: Ei, Pi, Ti, Gi, Mi, Ki
https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#meaning-of-memory
Note: the value specified here must not be zero or be higher
than the corresponding limit.
pattern: ^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$
type: string
type: object
type: object
schema:
type: string
user:
type: string
type: object
databases:
additionalProperties:
type: string
description: |-
Note: usernames specified here as database owners must be declared
in the users key of the spec key.
type: object
dockerImage:
type: string
enableConnectionPooler:
type: boolean
enableLogicalBackup:
type: boolean
enableMasterLoadBalancer:
description: |-
vars that enable load balancers are pointers because it is important to know if any of them is omitted from the Postgres manifest
in that case the var evaluates to nil and the value is taken from the operator config
type: boolean
enableMasterPoolerLoadBalancer:
type: boolean
enableReplicaConnectionPooler:
type: boolean
enableReplicaLoadBalancer:
type: boolean
enableReplicaPoolerLoadBalancer:
type: boolean
enableShmVolume:
type: boolean
env:
nullable: true
type: array
init_containers:
description: deprecated json tags
type: object
x-kubernetes-preserve-unknown-fields: true
initContainers:
nullable: true
type: array
logicalBackupRetention:
type: string
logicalBackupSchedule:
pattern: ^(\d+|\*)(/\d+)?(\s+(\d+|\*)(/\d+)?){4}$
type: string
maintenanceWindows:
items:
pattern: '^\ *((Mon|Tue|Wed|Thu|Fri|Sat|Sun):(2[0-3]|[01]?\d):([0-5]?\d)|(2[0-3]|[01]?\d):([0-5]?\d))-((2[0-3]|[01]?\d):([0-5]?\d)|(2[0-3]|[01]?\d):([0-5]?\d))\ *$'
type: string
type: array
masterServiceAnnotations:
additionalProperties:
type: string
description: MasterServiceAnnotations takes precedence over ServiceAnnotations
for master role if not empty
type: object
nodeAffinity:
description: Node affinity is a group of node affinity scheduling
rules.
properties:
preferredDuringSchedulingIgnoredDuringExecution:
description: |-
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.
items:
description: |-
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).
properties:
preference:
description: A node selector term, associated with the corresponding
weight.
properties:
matchExpressions:
description: A list of node selector requirements by
node's labels.
items:
description: |-
A node selector requirement is a selector that contains values, a key, and an operator
that relates the key and values.
properties:
key:
description: The label key that the selector applies
to.
type: string
operator:
description: |-
Represents a key's relationship to a set of values.
Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
type: string
values:
description: |-
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.
items:
type: string
type: array
x-kubernetes-list-type: atomic
required:
- key
- operator
type: object
type: array
x-kubernetes-list-type: atomic
matchFields:
description: A list of node selector requirements by
node's fields.
items:
description: |-
A node selector requirement is a selector that contains values, a key, and an operator
that relates the key and values.
properties:
key:
description: The label key that the selector applies
to.
type: string
operator:
description: |-
Represents a key's relationship to a set of values.
Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
type: string
values:
description: |-
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.
items:
type: string
type: array
x-kubernetes-list-type: atomic
required:
- key
- operator
type: object
type: array
x-kubernetes-list-type: atomic
type: object
x-kubernetes-map-type: atomic
weight:
description: Weight associated with matching the corresponding
nodeSelectorTerm, in the range 1-100.
format: int32
type: integer
required:
- preference
- weight
type: object
type: array
x-kubernetes-list-type: atomic
requiredDuringSchedulingIgnoredDuringExecution:
description: |-
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.
properties:
nodeSelectorTerms:
description: Required. A list of node selector terms. The
terms are ORed.
items:
description: |-
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.
properties:
matchExpressions:
description: A list of node selector requirements by
node's labels.
items:
description: |-
A node selector requirement is a selector that contains values, a key, and an operator
that relates the key and values.
properties:
key:
description: The label key that the selector applies
to.
type: string
operator:
description: |-
Represents a key's relationship to a set of values.
Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
type: string
values:
description: |-
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.
items:
type: string
type: array
x-kubernetes-list-type: atomic
required:
- key
- operator
type: object
type: array
x-kubernetes-list-type: atomic
matchFields:
description: A list of node selector requirements by
node's fields.
items:
description: |-
A node selector requirement is a selector that contains values, a key, and an operator
that relates the key and values.
properties:
key:
description: The label key that the selector applies
to.
type: string
operator:
description: |-
Represents a key's relationship to a set of values.
Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
type: string
values:
description: |-
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.
items:
type: string
type: array
x-kubernetes-list-type: atomic
required:
- key
- operator
type: object
type: array
x-kubernetes-list-type: atomic
type: object
x-kubernetes-map-type: atomic
type: array
x-kubernetes-list-type: atomic
required:
- nodeSelectorTerms
type: object
x-kubernetes-map-type: atomic
type: object
numberOfInstances:
format: int32
minimum: 0
type: integer
patroni:
description: Patroni contains Patroni-specific configuration
properties:
failsafe_mode:
type: boolean
initdb:
additionalProperties:
type: string
type: object
loop_wait:
format: int32
type: integer
maximum_lag_on_failover:
format: int64
type: integer
pg_hba:
items:
type: string
type: array
retry_timeout:
format: int32
type: integer
slots:
additionalProperties:
additionalProperties:
type: string
type: object
type: object
synchronous_mode:
type: boolean
synchronous_mode_strict:
type: boolean
synchronous_node_count:
format: int32
type: integer
ttl:
format: int32
type: integer
type: object
pod_priority_class_name:
description: deprecated
type: string
podAnnotations:
additionalProperties:
type: string
type: object
podPriorityClassName:
type: string
postgresql:
description: PostgresqlParam describes PostgreSQL version and pairs
of configuration parameter name - values.
properties:
parameters:
additionalProperties:
type: string
type: object
version:
enum:
- 13
- 14
- 15
- 16
- 17
type: string
required:
- version
type: object
preparedDatabases:
additionalProperties:
description: PreparedDatabase describes elements to be bootstrapped
properties:
defaultUsers:
type: boolean
extensions:
additionalProperties:
type: string
type: object
schemas:
additionalProperties:
description: PreparedSchema describes elements to be bootstrapped
per schema
properties:
defaultRoles:
type: boolean
defaultUsers:
type: boolean
type: object
type: object
secretNamespace:
type: string
type: object
type: object
replicaLoadBalancer:
description: deprecated
type: boolean
replicaServiceAnnotations:
additionalProperties:
type: string
description: ReplicaServiceAnnotations takes precedence over ServiceAnnotations
for replica role if not empty
type: object
resources:
description: Resources describes requests and limits for the cluster
resouces.
properties:
limits:
description: ResourceDescription describes CPU and memory resources
defined for a cluster.
properties:
cpu:
description: |-
Decimal natural followed by m, or decimal natural followed by
dot followed by up to three decimal digits.
This is because the Kubernetes CPU resource has millis as the
maximum precision. The actual values are checked in code
because the regular expression would be huge and horrible and
not very helpful in validation error messages; this one checks
only the format of the given number.
https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#meaning-of-cpu
Note: the value specified here must not be zero or be lower
than the corresponding request.
pattern: ^(\d+m|\d+(\.\d{1,3})?)$
type: string
hugepages-1Gi:
pattern: ^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$
type: string
hugepages-2Mi:
pattern: ^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$
type: string
memory:
description: |-
You can express memory as a plain integer or as a fixed-point
integer using one of these suffixes: E, P, T, G, M, k. You can
also use the power-of-two equivalents: Ei, Pi, Ti, Gi, Mi, Ki
https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#meaning-of-memory
Note: the value specified here must not be zero or be higher
than the corresponding limit.
pattern: ^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$
type: string
type: object
requests:
description: ResourceDescription describes CPU and memory resources
defined for a cluster.
properties:
cpu:
description: |-
Decimal natural followed by m, or decimal natural followed by
dot followed by up to three decimal digits.
This is because the Kubernetes CPU resource has millis as the
maximum precision. The actual values are checked in code
because the regular expression would be huge and horrible and
not very helpful in validation error messages; this one checks
only the format of the given number.
https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#meaning-of-cpu
Note: the value specified here must not be zero or be lower
than the corresponding request.
pattern: ^(\d+m|\d+(\.\d{1,3})?)$
type: string
hugepages-1Gi:
pattern: ^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$
type: string
hugepages-2Mi:
pattern: ^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$
type: string
memory:
description: |-
You can express memory as a plain integer or as a fixed-point
integer using one of these suffixes: E, P, T, G, M, k. You can
also use the power-of-two equivalents: Ei, Pi, Ti, Gi, Mi, Ki
https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#meaning-of-memory
Note: the value specified here must not be zero or be higher
than the corresponding limit.
pattern: ^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$
type: string
type: object
type: object
schedulerName:
type: string
serviceAnnotations:
additionalProperties:
type: string
type: object
sidecars:
nullable: true
type: array
spiloFSGroup:
format: int64
type: integer
spiloRunAsGroup:
format: int64
type: integer
spiloRunAsUser:
format: int64
type: integer
standby:
oneOf:
- required:
- s3_wal_path
- required:
- gs_wal_path
- required:
- standby_host
description: StandbyDescription contains remote primary config or
s3/gs wal path
properties:
gs_wal_path:
type: string
s3_wal_path:
type: string
standby_host:
type: string
standby_port:
type: string
type: object
streams:
items:
description: Stream defines properties for creating FabricEventStream
resources
properties:
applicationId:
type: string
batchSize:
format: int32
type: integer
cpu:
pattern: ^(\d+m|\d+(\.\d{1,3})?)$
type: string
database:
type: string
enableRecovery:
type: boolean
filter:
additionalProperties:
type: string
type: object
memory:
pattern: ^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$
type: string
tables:
additionalProperties:
description: StreamTable defines properties of outbox tables
for FabricEventStreams
properties:
eventType:
type: string
idColumn:
type: string
ignoreRecovery:
type: boolean
payloadColumn:
type: string
recoveryEventType:
type: string
required:
- eventType
type: object
type: object
required:
- applicationId
- database
- tables
type: object
type: array
teamId:
type: string
tls:
description: TLSDescription specs TLS properties
properties:
caFile:
type: string
caSecretName:
type: string
certificateFile:
type: string
privateKeyFile:
type: string
secretName:
type: string
required:
- secretName
type: object
tolerations:
items:
description: |-
The pod this Toleration is attached to tolerates any taint that matches
the triple <key,value,effect> using the matching operator <operator>.
properties:
effect:
description: |-
Effect indicates the taint effect to match. Empty means match all taint effects.
When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
type: string
key:
description: |-
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.
type: string
operator:
description: |-
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.
type: string
tolerationSeconds:
description: |-
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.
format: int64
type: integer
value:
description: |-
Value is the taint value the toleration matches to.
If the operator is Exists, the value should be empty, otherwise just a regular string.
type: string
type: object
type: array
useLoadBalancer:
description: |-
deprecated load balancer settings maintained for backward compatibility
see "Load balancers" operator docs
type: boolean
users:
additionalProperties:
description: UserFlags defines flags (such as superuser, nologin)
that could be assigned to individual users
items:
enum:
- bypassrls
- BYPASSRLS
- nobypassrls
- NOBYPASSRLS
- createdb
- CREATEDB
- nocreatedb
- NOCREATEDB
- createrole
- CREATEROLE
- nocreaterole
- NOCREATEROLE
- inherit
- INHERIT
- noinherit
- NOINHERIT
- login
- LOGIN
- nologin
- NOLOGIN
- replication
- REPLICATION
- noreplication
- NOREPLICATION
- superuser
- SUPERUSER
- nosuperuser
- NOSUPERUSER
type: string
type: array
type: object
usersIgnoringSecretRotation:
items:
type: string
nullable: true
type: array
usersWithInPlaceSecretRotation:
items:
type: string
nullable: true
type: array
usersWithSecretRotation:
items:
type: string
nullable: true
type: array
volume:
description: Volume describes a single volume in the manifest.
properties:
iops:
format: int64
type: integer
isSubPathExpr:
type: boolean
selector:
description: |-
A label selector is a label query over a set of resources. The result of matchLabels and
matchExpressions are ANDed. An empty label selector matches all objects. A null
label selector matches no objects.
properties:
matchExpressions:
description: matchExpressions is a list of label selector
requirements. The requirements are ANDed.
items:
description: |-
A label selector requirement is a selector that contains values, a key, and an operator that
relates the key and values.
properties:
key:
description: key is the label key that the selector
applies to.
type: string
operator:
description: |-
operator represents a key's relationship to a set of values.
Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
description: |-
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.
items:
type: string
type: array
x-kubernetes-list-type: atomic
required:
- key
- operator
type: object
type: array
x-kubernetes-list-type: atomic
matchLabels:
additionalProperties:
type: string
description: |-
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.
type: object
type: object
x-kubernetes-map-type: atomic
size:
pattern: ^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$
type: string
storageClass:
type: string
subPath:
type: string
throughput:
format: int64
type: integer
type:
type: string
required:
- size
type: object
required:
- numberOfInstances
- postgresql
- teamId
- volume
type: object
status:
description: PostgresStatus contains status of the PostgreSQL cluster
(running, creation failed etc.)
properties:
PostgresClusterStatus:
type: string
required:
- PostgresClusterStatus
type: object
required:
- metadata
- spec
type: object
served: true
storage: true
subresources:
status: {}