---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.17.2
    helm.sh/resource-policy: keep
  name: clusters.postgresql.cnpg.io
spec:
  group: postgresql.cnpg.io
  names:
    kind: Cluster
    listKind: ClusterList
    plural: clusters
    singular: cluster
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
        - jsonPath: .status.instances
          name: Instances
          type: integer
        - jsonPath: .status.readyInstances
          name: Ready
          type: integer
        - jsonPath: .status.phase
          name: Status
          type: string
        - jsonPath: .status.currentPrimary
          name: Primary
          type: string
      name: v1
      schema:
        openAPIV3Schema:
          properties:
            apiVersion:
              type: string
            kind:
              type: string
            metadata:
              type: object
            spec:
              properties:
                affinity:
                  properties:
                    additionalPodAffinity:
                      properties:
                        preferredDuringSchedulingIgnoredDuringExecution:
                          items:
                            properties:
                              podAffinityTerm:
                                properties:
                                  labelSelector:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              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
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  matchLabelKeys:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  mismatchLabelKeys:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  namespaceSelector:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              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
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  namespaces:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  topologyKey:
                                    type: string
                                required:
                                  - topologyKey
                                type: object
                              weight:
                                format: int32
                                type: integer
                            required:
                              - podAffinityTerm
                              - weight
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                        requiredDuringSchedulingIgnoredDuringExecution:
                          items:
                            properties:
                              labelSelector:
                                properties:
                                  matchExpressions:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          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
                                    type: object
                                type: object
                                x-kubernetes-map-type: atomic
                              matchLabelKeys:
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              mismatchLabelKeys:
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              namespaceSelector:
                                properties:
                                  matchExpressions:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          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
                                    type: object
                                type: object
                                x-kubernetes-map-type: atomic
                              namespaces:
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              topologyKey:
                                type: string
                            required:
                              - topologyKey
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                      type: object
                    additionalPodAntiAffinity:
                      properties:
                        preferredDuringSchedulingIgnoredDuringExecution:
                          items:
                            properties:
                              podAffinityTerm:
                                properties:
                                  labelSelector:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              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
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  matchLabelKeys:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  mismatchLabelKeys:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  namespaceSelector:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              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
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  namespaces:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  topologyKey:
                                    type: string
                                required:
                                  - topologyKey
                                type: object
                              weight:
                                format: int32
                                type: integer
                            required:
                              - podAffinityTerm
                              - weight
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                        requiredDuringSchedulingIgnoredDuringExecution:
                          items:
                            properties:
                              labelSelector:
                                properties:
                                  matchExpressions:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          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
                                    type: object
                                type: object
                                x-kubernetes-map-type: atomic
                              matchLabelKeys:
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              mismatchLabelKeys:
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              namespaceSelector:
                                properties:
                                  matchExpressions:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          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
                                    type: object
                                type: object
                                x-kubernetes-map-type: atomic
                              namespaces:
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              topologyKey:
                                type: string
                            required:
                              - topologyKey
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                      type: object
                    enablePodAntiAffinity:
                      type: boolean
                    nodeAffinity:
                      properties:
                        preferredDuringSchedulingIgnoredDuringExecution:
                          items:
                            properties:
                              preference:
                                properties:
                                  matchExpressions:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                        - key
                                        - operator
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  matchFields:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          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:
                                format: int32
                                type: integer
                            required:
                              - preference
                              - weight
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                        requiredDuringSchedulingIgnoredDuringExecution:
                          properties:
                            nodeSelectorTerms:
                              items:
                                properties:
                                  matchExpressions:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                        - key
                                        - operator
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  matchFields:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          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
                    nodeSelector:
                      additionalProperties:
                        type: string
                      type: object
                    podAntiAffinityType:
                      type: string
                    tolerations:
                      items:
                        properties:
                          effect:
                            type: string
                          key:
                            type: string
                          operator:
                            type: string
                          tolerationSeconds:
                            format: int64
                            type: integer
                          value:
                            type: string
                        type: object
                      type: array
                    topologyKey:
                      type: string
                  type: object
                backup:
                  properties:
                    barmanObjectStore:
                      properties:
                        azureCredentials:
                          properties:
                            connectionString:
                              properties:
                                key:
                                  type: string
                                name:
                                  type: string
                              required:
                                - key
                                - name
                              type: object
                            inheritFromAzureAD:
                              type: boolean
                            storageAccount:
                              properties:
                                key:
                                  type: string
                                name:
                                  type: string
                              required:
                                - key
                                - name
                              type: object
                            storageKey:
                              properties:
                                key:
                                  type: string
                                name:
                                  type: string
                              required:
                                - key
                                - name
                              type: object
                            storageSasToken:
                              properties:
                                key:
                                  type: string
                                name:
                                  type: string
                              required:
                                - key
                                - name
                              type: object
                          type: object
                        data:
                          properties:
                            additionalCommandArgs:
                              items:
                                type: string
                              type: array
                            compression:
                              enum:
                                - gzip
                                - bzip2
                                - snappy
                              type: string
                            encryption:
                              enum:
                                - AES256
                                - aws:kms
                              type: string
                            immediateCheckpoint:
                              type: boolean
                            jobs:
                              format: int32
                              minimum: 1
                              type: integer
                          type: object
                        destinationPath:
                          minLength: 1
                          type: string
                        endpointCA:
                          properties:
                            key:
                              type: string
                            name:
                              type: string
                          required:
                            - key
                            - name
                          type: object
                        endpointURL:
                          type: string
                        googleCredentials:
                          properties:
                            applicationCredentials:
                              properties:
                                key:
                                  type: string
                                name:
                                  type: string
                              required:
                                - key
                                - name
                              type: object
                            gkeEnvironment:
                              type: boolean
                          type: object
                        historyTags:
                          additionalProperties:
                            type: string
                          type: object
                        s3Credentials:
                          properties:
                            accessKeyId:
                              properties:
                                key:
                                  type: string
                                name:
                                  type: string
                              required:
                                - key
                                - name
                              type: object
                            inheritFromIAMRole:
                              type: boolean
                            region:
                              properties:
                                key:
                                  type: string
                                name:
                                  type: string
                              required:
                                - key
                                - name
                              type: object
                            secretAccessKey:
                              properties:
                                key:
                                  type: string
                                name:
                                  type: string
                              required:
                                - key
                                - name
                              type: object
                            sessionToken:
                              properties:
                                key:
                                  type: string
                                name:
                                  type: string
                              required:
                                - key
                                - name
                              type: object
                          type: object
                        serverName:
                          type: string
                        tags:
                          additionalProperties:
                            type: string
                          type: object
                        wal:
                          properties:
                            archiveAdditionalCommandArgs:
                              items:
                                type: string
                              type: array
                            compression:
                              enum:
                                - gzip
                                - bzip2
                                - snappy
                              type: string
                            encryption:
                              enum:
                                - AES256
                                - aws:kms
                              type: string
                            maxParallel:
                              minimum: 1
                              type: integer
                            restoreAdditionalCommandArgs:
                              items:
                                type: string
                              type: array
                          type: object
                      required:
                        - destinationPath
                      type: object
                    retentionPolicy:
                      pattern: ^[1-9][0-9]*[dwm]$
                      type: string
                    target:
                      default: prefer-standby
                      enum:
                        - primary
                        - prefer-standby
                      type: string
                    volumeSnapshot:
                      properties:
                        annotations:
                          additionalProperties:
                            type: string
                          type: object
                        className:
                          type: string
                        labels:
                          additionalProperties:
                            type: string
                          type: object
                        online:
                          default: true
                          type: boolean
                        onlineConfiguration:
                          default:
                            immediateCheckpoint: false
                            waitForArchive: true
                          properties:
                            immediateCheckpoint:
                              type: boolean
                            waitForArchive:
                              default: true
                              type: boolean
                          type: object
                        snapshotOwnerReference:
                          default: none
                          enum:
                            - none
                            - cluster
                            - backup
                          type: string
                        tablespaceClassName:
                          additionalProperties:
                            type: string
                          type: object
                        walClassName:
                          type: string
                      type: object
                  type: object
                bootstrap:
                  properties:
                    initdb:
                      properties:
                        builtinLocale:
                          type: string
                        dataChecksums:
                          type: boolean
                        database:
                          type: string
                        encoding:
                          type: string
                        icuLocale:
                          type: string
                        icuRules:
                          type: string
                        import:
                          properties:
                            databases:
                              items:
                                type: string
                              type: array
                            pgDumpExtraOptions:
                              items:
                                type: string
                              type: array
                            pgRestoreExtraOptions:
                              items:
                                type: string
                              type: array
                            postImportApplicationSQL:
                              items:
                                type: string
                              type: array
                            roles:
                              items:
                                type: string
                              type: array
                            schemaOnly:
                              type: boolean
                            source:
                              properties:
                                externalCluster:
                                  type: string
                              required:
                                - externalCluster
                              type: object
                            type:
                              enum:
                                - microservice
                                - monolith
                              type: string
                          required:
                            - databases
                            - source
                            - type
                          type: object
                        locale:
                          type: string
                        localeCType:
                          type: string
                        localeCollate:
                          type: string
                        localeProvider:
                          type: string
                        options:
                          items:
                            type: string
                          type: array
                        owner:
                          type: string
                        postInitApplicationSQL:
                          items:
                            type: string
                          type: array
                        postInitApplicationSQLRefs:
                          properties:
                            configMapRefs:
                              items:
                                properties:
                                  key:
                                    type: string
                                  name:
                                    type: string
                                required:
                                  - key
                                  - name
                                type: object
                              type: array
                            secretRefs:
                              items:
                                properties:
                                  key:
                                    type: string
                                  name:
                                    type: string
                                required:
                                  - key
                                  - name
                                type: object
                              type: array
                          type: object
                        postInitSQL:
                          items:
                            type: string
                          type: array
                        postInitSQLRefs:
                          properties:
                            configMapRefs:
                              items:
                                properties:
                                  key:
                                    type: string
                                  name:
                                    type: string
                                required:
                                  - key
                                  - name
                                type: object
                              type: array
                            secretRefs:
                              items:
                                properties:
                                  key:
                                    type: string
                                  name:
                                    type: string
                                required:
                                  - key
                                  - name
                                type: object
                              type: array
                          type: object
                        postInitTemplateSQL:
                          items:
                            type: string
                          type: array
                        postInitTemplateSQLRefs:
                          properties:
                            configMapRefs:
                              items:
                                properties:
                                  key:
                                    type: string
                                  name:
                                    type: string
                                required:
                                  - key
                                  - name
                                type: object
                              type: array
                            secretRefs:
                              items:
                                properties:
                                  key:
                                    type: string
                                  name:
                                    type: string
                                required:
                                  - key
                                  - name
                                type: object
                              type: array
                          type: object
                        secret:
                          properties:
                            name:
                              type: string
                          required:
                            - name
                          type: object
                        walSegmentSize:
                          maximum: 1024
                          minimum: 1
                          type: integer
                      type: object
                      x-kubernetes-validations:
                        - message: builtinLocale is only available when localeProvider is set to `builtin`
                          rule: '!has(self.builtinLocale) || self.localeProvider == ''builtin'''
                        - message: icuLocale is only available when localeProvider is set to `icu`
                          rule: '!has(self.icuLocale) || self.localeProvider == ''icu'''
                        - message: icuRules is only available when localeProvider is set to `icu`
                          rule: '!has(self.icuRules) || self.localeProvider == ''icu'''
                    pg_basebackup:
                      properties:
                        database:
                          type: string
                        owner:
                          type: string
                        secret:
                          properties:
                            name:
                              type: string
                          required:
                            - name
                          type: object
                        source:
                          minLength: 1
                          type: string
                      required:
                        - source
                      type: object
                    recovery:
                      properties:
                        backup:
                          properties:
                            endpointCA:
                              properties:
                                key:
                                  type: string
                                name:
                                  type: string
                              required:
                                - key
                                - name
                              type: object
                            name:
                              type: string
                          required:
                            - name
                          type: object
                        database:
                          type: string
                        owner:
                          type: string
                        recoveryTarget:
                          properties:
                            backupID:
                              type: string
                            exclusive:
                              type: boolean
                            targetImmediate:
                              type: boolean
                            targetLSN:
                              type: string
                            targetName:
                              type: string
                            targetTLI:
                              type: string
                            targetTime:
                              type: string
                            targetXID:
                              type: string
                          type: object
                        secret:
                          properties:
                            name:
                              type: string
                          required:
                            - name
                          type: object
                        source:
                          type: string
                        volumeSnapshots:
                          properties:
                            storage:
                              properties:
                                apiGroup:
                                  type: string
                                kind:
                                  type: string
                                name:
                                  type: string
                              required:
                                - kind
                                - name
                              type: object
                              x-kubernetes-map-type: atomic
                            tablespaceStorage:
                              additionalProperties:
                                properties:
                                  apiGroup:
                                    type: string
                                  kind:
                                    type: string
                                  name:
                                    type: string
                                required:
                                  - kind
                                  - name
                                type: object
                                x-kubernetes-map-type: atomic
                              type: object
                            walStorage:
                              properties:
                                apiGroup:
                                  type: string
                                kind:
                                  type: string
                                name:
                                  type: string
                              required:
                                - kind
                                - name
                              type: object
                              x-kubernetes-map-type: atomic
                          required:
                            - storage
                          type: object
                      type: object
                  type: object
                certificates:
                  properties:
                    clientCASecret:
                      type: string
                    replicationTLSSecret:
                      type: string
                    serverAltDNSNames:
                      items:
                        type: string
                      type: array
                    serverCASecret:
                      type: string
                    serverTLSSecret:
                      type: string
                  type: object
                enablePDB:
                  default: true
                  type: boolean
                enableSuperuserAccess:
                  default: false
                  type: boolean
                env:
                  items:
                    properties:
                      name:
                        type: string
                      value:
                        type: string
                      valueFrom:
                        properties:
                          configMapKeyRef:
                            properties:
                              key:
                                type: string
                              name:
                                default: ""
                                type: string
                              optional:
                                type: boolean
                            required:
                              - key
                            type: object
                            x-kubernetes-map-type: atomic
                          fieldRef:
                            properties:
                              apiVersion:
                                type: string
                              fieldPath:
                                type: string
                            required:
                              - fieldPath
                            type: object
                            x-kubernetes-map-type: atomic
                          resourceFieldRef:
                            properties:
                              containerName:
                                type: string
                              divisor:
                                anyOf:
                                  - type: integer
                                  - type: string
                                pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                x-kubernetes-int-or-string: true
                              resource:
                                type: string
                            required:
                              - resource
                            type: object
                            x-kubernetes-map-type: atomic
                          secretKeyRef:
                            properties:
                              key:
                                type: string
                              name:
                                default: ""
                                type: string
                              optional:
                                type: boolean
                            required:
                              - key
                            type: object
                            x-kubernetes-map-type: atomic
                        type: object
                    required:
                      - name
                    type: object
                  type: array
                envFrom:
                  items:
                    properties:
                      configMapRef:
                        properties:
                          name:
                            default: ""
                            type: string
                          optional:
                            type: boolean
                        type: object
                        x-kubernetes-map-type: atomic
                      prefix:
                        type: string
                      secretRef:
                        properties:
                          name:
                            default: ""
                            type: string
                          optional:
                            type: boolean
                        type: object
                        x-kubernetes-map-type: atomic
                    type: object
                  type: array
                ephemeralVolumeSource:
                  properties:
                    volumeClaimTemplate:
                      properties:
                        metadata:
                          type: object
                        spec:
                          properties:
                            accessModes:
                              items:
                                type: string
                              type: array
                              x-kubernetes-list-type: atomic
                            dataSource:
                              properties:
                                apiGroup:
                                  type: string
                                kind:
                                  type: string
                                name:
                                  type: string
                              required:
                                - kind
                                - name
                              type: object
                              x-kubernetes-map-type: atomic
                            dataSourceRef:
                              properties:
                                apiGroup:
                                  type: string
                                kind:
                                  type: string
                                name:
                                  type: string
                                namespace:
                                  type: string
                              required:
                                - kind
                                - name
                              type: object
                            resources:
                              properties:
                                limits:
                                  additionalProperties:
                                    anyOf:
                                      - type: integer
                                      - type: string
                                    pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                    x-kubernetes-int-or-string: true
                                  type: object
                                requests:
                                  additionalProperties:
                                    anyOf:
                                      - type: integer
                                      - type: string
                                    pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                    x-kubernetes-int-or-string: true
                                  type: object
                              type: object
                            selector:
                              properties:
                                matchExpressions:
                                  items:
                                    properties:
                                      key:
                                        type: string
                                      operator:
                                        type: string
                                      values:
                                        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
                                  type: object
                              type: object
                              x-kubernetes-map-type: atomic
                            storageClassName:
                              type: string
                            volumeAttributesClassName:
                              type: string
                            volumeMode:
                              type: string
                            volumeName:
                              type: string
                          type: object
                      required:
                        - spec
                      type: object
                  type: object
                ephemeralVolumesSizeLimit:
                  properties:
                    shm:
                      anyOf:
                        - type: integer
                        - type: string
                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                      x-kubernetes-int-or-string: true
                    temporaryData:
                      anyOf:
                        - type: integer
                        - type: string
                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                      x-kubernetes-int-or-string: true
                  type: object
                externalClusters:
                  items:
                    properties:
                      barmanObjectStore:
                        properties:
                          azureCredentials:
                            properties:
                              connectionString:
                                properties:
                                  key:
                                    type: string
                                  name:
                                    type: string
                                required:
                                  - key
                                  - name
                                type: object
                              inheritFromAzureAD:
                                type: boolean
                              storageAccount:
                                properties:
                                  key:
                                    type: string
                                  name:
                                    type: string
                                required:
                                  - key
                                  - name
                                type: object
                              storageKey:
                                properties:
                                  key:
                                    type: string
                                  name:
                                    type: string
                                required:
                                  - key
                                  - name
                                type: object
                              storageSasToken:
                                properties:
                                  key:
                                    type: string
                                  name:
                                    type: string
                                required:
                                  - key
                                  - name
                                type: object
                            type: object
                          data:
                            properties:
                              additionalCommandArgs:
                                items:
                                  type: string
                                type: array
                              compression:
                                enum:
                                  - gzip
                                  - bzip2
                                  - snappy
                                type: string
                              encryption:
                                enum:
                                  - AES256
                                  - aws:kms
                                type: string
                              immediateCheckpoint:
                                type: boolean
                              jobs:
                                format: int32
                                minimum: 1
                                type: integer
                            type: object
                          destinationPath:
                            minLength: 1
                            type: string
                          endpointCA:
                            properties:
                              key:
                                type: string
                              name:
                                type: string
                            required:
                              - key
                              - name
                            type: object
                          endpointURL:
                            type: string
                          googleCredentials:
                            properties:
                              applicationCredentials:
                                properties:
                                  key:
                                    type: string
                                  name:
                                    type: string
                                required:
                                  - key
                                  - name
                                type: object
                              gkeEnvironment:
                                type: boolean
                            type: object
                          historyTags:
                            additionalProperties:
                              type: string
                            type: object
                          s3Credentials:
                            properties:
                              accessKeyId:
                                properties:
                                  key:
                                    type: string
                                  name:
                                    type: string
                                required:
                                  - key
                                  - name
                                type: object
                              inheritFromIAMRole:
                                type: boolean
                              region:
                                properties:
                                  key:
                                    type: string
                                  name:
                                    type: string
                                required:
                                  - key
                                  - name
                                type: object
                              secretAccessKey:
                                properties:
                                  key:
                                    type: string
                                  name:
                                    type: string
                                required:
                                  - key
                                  - name
                                type: object
                              sessionToken:
                                properties:
                                  key:
                                    type: string
                                  name:
                                    type: string
                                required:
                                  - key
                                  - name
                                type: object
                            type: object
                          serverName:
                            type: string
                          tags:
                            additionalProperties:
                              type: string
                            type: object
                          wal:
                            properties:
                              archiveAdditionalCommandArgs:
                                items:
                                  type: string
                                type: array
                              compression:
                                enum:
                                  - gzip
                                  - bzip2
                                  - snappy
                                type: string
                              encryption:
                                enum:
                                  - AES256
                                  - aws:kms
                                type: string
                              maxParallel:
                                minimum: 1
                                type: integer
                              restoreAdditionalCommandArgs:
                                items:
                                  type: string
                                type: array
                            type: object
                        required:
                          - destinationPath
                        type: object
                      connectionParameters:
                        additionalProperties:
                          type: string
                        type: object
                      name:
                        type: string
                      password:
                        properties:
                          key:
                            type: string
                          name:
                            default: ""
                            type: string
                          optional:
                            type: boolean
                        required:
                          - key
                        type: object
                        x-kubernetes-map-type: atomic
                      plugin:
                        properties:
                          enabled:
                            default: true
                            type: boolean
                          isWALArchiver:
                            default: false
                            type: boolean
                          name:
                            type: string
                          parameters:
                            additionalProperties:
                              type: string
                            type: object
                        required:
                          - name
                        type: object
                      sslCert:
                        properties:
                          key:
                            type: string
                          name:
                            default: ""
                            type: string
                          optional:
                            type: boolean
                        required:
                          - key
                        type: object
                        x-kubernetes-map-type: atomic
                      sslKey:
                        properties:
                          key:
                            type: string
                          name:
                            default: ""
                            type: string
                          optional:
                            type: boolean
                        required:
                          - key
                        type: object
                        x-kubernetes-map-type: atomic
                      sslRootCert:
                        properties:
                          key:
                            type: string
                          name:
                            default: ""
                            type: string
                          optional:
                            type: boolean
                        required:
                          - key
                        type: object
                        x-kubernetes-map-type: atomic
                    required:
                      - name
                    type: object
                  type: array
                failoverDelay:
                  default: 0
                  format: int32
                  type: integer
                imageCatalogRef:
                  properties:
                    apiGroup:
                      type: string
                    kind:
                      type: string
                    major:
                      type: integer
                      x-kubernetes-validations:
                        - message: Major is immutable
                          rule: self == oldSelf
                    name:
                      type: string
                  required:
                    - kind
                    - major
                    - name
                  type: object
                  x-kubernetes-map-type: atomic
                  x-kubernetes-validations:
                    - message: Only image catalogs are supported
                      rule: self.kind == 'ImageCatalog' || self.kind == 'ClusterImageCatalog'
                    - message: Only image catalogs are supported
                      rule: self.apiGroup == 'postgresql.cnpg.io'
                imageName:
                  type: string
                imagePullPolicy:
                  type: string
                imagePullSecrets:
                  items:
                    properties:
                      name:
                        type: string
                    required:
                      - name
                    type: object
                  type: array
                inheritedMetadata:
                  properties:
                    annotations:
                      additionalProperties:
                        type: string
                      type: object
                    labels:
                      additionalProperties:
                        type: string
                      type: object
                  type: object
                instances:
                  default: 1
                  minimum: 1
                  type: integer
                livenessProbeTimeout:
                  format: int32
                  type: integer
                logLevel:
                  default: info
                  enum:
                    - error
                    - warning
                    - info
                    - debug
                    - trace
                  type: string
                managed:
                  properties:
                    roles:
                      items:
                        properties:
                          bypassrls:
                            type: boolean
                          comment:
                            type: string
                          connectionLimit:
                            default: -1
                            format: int64
                            type: integer
                          createdb:
                            type: boolean
                          createrole:
                            type: boolean
                          disablePassword:
                            type: boolean
                          ensure:
                            default: present
                            enum:
                              - present
                              - absent
                            type: string
                          inRoles:
                            items:
                              type: string
                            type: array
                          inherit:
                            default: true
                            type: boolean
                          login:
                            type: boolean
                          name:
                            type: string
                          passwordSecret:
                            properties:
                              name:
                                type: string
                            required:
                              - name
                            type: object
                          replication:
                            type: boolean
                          superuser:
                            type: boolean
                          validUntil:
                            format: date-time
                            type: string
                        required:
                          - name
                        type: object
                      type: array
                    services:
                      properties:
                        additional:
                          items:
                            properties:
                              selectorType:
                                enum:
                                  - rw
                                  - r
                                  - ro
                                type: string
                              serviceTemplate:
                                properties:
                                  metadata:
                                    properties:
                                      annotations:
                                        additionalProperties:
                                          type: string
                                        type: object
                                      labels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                      name:
                                        type: string
                                    type: object
                                  spec:
                                    properties:
                                      allocateLoadBalancerNodePorts:
                                        type: boolean
                                      clusterIP:
                                        type: string
                                      clusterIPs:
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      externalIPs:
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      externalName:
                                        type: string
                                      externalTrafficPolicy:
                                        type: string
                                      healthCheckNodePort:
                                        format: int32
                                        type: integer
                                      internalTrafficPolicy:
                                        type: string
                                      ipFamilies:
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      ipFamilyPolicy:
                                        type: string
                                      loadBalancerClass:
                                        type: string
                                      loadBalancerIP:
                                        type: string
                                      loadBalancerSourceRanges:
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      ports:
                                        items:
                                          properties:
                                            appProtocol:
                                              type: string
                                            name:
                                              type: string
                                            nodePort:
                                              format: int32
                                              type: integer
                                            port:
                                              format: int32
                                              type: integer
                                            protocol:
                                              default: TCP
                                              type: string
                                            targetPort:
                                              anyOf:
                                                - type: integer
                                                - type: string
                                              x-kubernetes-int-or-string: true
                                          required:
                                            - port
                                          type: object
                                        type: array
                                        x-kubernetes-list-map-keys:
                                          - port
                                          - protocol
                                        x-kubernetes-list-type: map
                                      publishNotReadyAddresses:
                                        type: boolean
                                      selector:
                                        additionalProperties:
                                          type: string
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      sessionAffinity:
                                        type: string
                                      sessionAffinityConfig:
                                        properties:
                                          clientIP:
                                            properties:
                                              timeoutSeconds:
                                                format: int32
                                                type: integer
                                            type: object
                                        type: object
                                      trafficDistribution:
                                        type: string
                                      type:
                                        type: string
                                    type: object
                                type: object
                              updateStrategy:
                                default: patch
                                enum:
                                  - patch
                                  - replace
                                type: string
                            required:
                              - selectorType
                              - serviceTemplate
                            type: object
                          type: array
                        disabledDefaultServices:
                          items:
                            enum:
                              - rw
                              - r
                              - ro
                            type: string
                          type: array
                      type: object
                  type: object
                maxSyncReplicas:
                  default: 0
                  minimum: 0
                  type: integer
                minSyncReplicas:
                  default: 0
                  minimum: 0
                  type: integer
                monitoring:
                  properties:
                    customQueriesConfigMap:
                      items:
                        properties:
                          key:
                            type: string
                          name:
                            type: string
                        required:
                          - key
                          - name
                        type: object
                      type: array
                    customQueriesSecret:
                      items:
                        properties:
                          key:
                            type: string
                          name:
                            type: string
                        required:
                          - key
                          - name
                        type: object
                      type: array
                    disableDefaultQueries:
                      default: false
                      type: boolean
                    enablePodMonitor:
                      default: false
                      type: boolean
                    podMonitorMetricRelabelings:
                      items:
                        properties:
                          action:
                            default: replace
                            enum:
                              - replace
                              - Replace
                              - keep
                              - Keep
                              - drop
                              - Drop
                              - hashmod
                              - HashMod
                              - labelmap
                              - LabelMap
                              - labeldrop
                              - LabelDrop
                              - labelkeep
                              - LabelKeep
                              - lowercase
                              - Lowercase
                              - uppercase
                              - Uppercase
                              - keepequal
                              - KeepEqual
                              - dropequal
                              - DropEqual
                            type: string
                          modulus:
                            format: int64
                            type: integer
                          regex:
                            type: string
                          replacement:
                            type: string
                          separator:
                            type: string
                          sourceLabels:
                            items:
                              pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$
                              type: string
                            type: array
                          targetLabel:
                            type: string
                        type: object
                      type: array
                    podMonitorRelabelings:
                      items:
                        properties:
                          action:
                            default: replace
                            enum:
                              - replace
                              - Replace
                              - keep
                              - Keep
                              - drop
                              - Drop
                              - hashmod
                              - HashMod
                              - labelmap
                              - LabelMap
                              - labeldrop
                              - LabelDrop
                              - labelkeep
                              - LabelKeep
                              - lowercase
                              - Lowercase
                              - uppercase
                              - Uppercase
                              - keepequal
                              - KeepEqual
                              - dropequal
                              - DropEqual
                            type: string
                          modulus:
                            format: int64
                            type: integer
                          regex:
                            type: string
                          replacement:
                            type: string
                          separator:
                            type: string
                          sourceLabels:
                            items:
                              pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$
                              type: string
                            type: array
                          targetLabel:
                            type: string
                        type: object
                      type: array
                    tls:
                      properties:
                        enabled:
                          default: false
                          type: boolean
                      type: object
                  type: object
                nodeMaintenanceWindow:
                  properties:
                    inProgress:
                      default: false
                      type: boolean
                    reusePVC:
                      default: true
                      type: boolean
                  type: object
                plugins:
                  items:
                    properties:
                      enabled:
                        default: true
                        type: boolean
                      isWALArchiver:
                        default: false
                        type: boolean
                      name:
                        type: string
                      parameters:
                        additionalProperties:
                          type: string
                        type: object
                    required:
                      - name
                    type: object
                  type: array
                postgresGID:
                  default: 26
                  format: int64
                  type: integer
                postgresUID:
                  default: 26
                  format: int64
                  type: integer
                postgresql:
                  properties:
                    enableAlterSystem:
                      type: boolean
                    ldap:
                      properties:
                        bindAsAuth:
                          properties:
                            prefix:
                              type: string
                            suffix:
                              type: string
                          type: object
                        bindSearchAuth:
                          properties:
                            baseDN:
                              type: string
                            bindDN:
                              type: string
                            bindPassword:
                              properties:
                                key:
                                  type: string
                                name:
                                  default: ""
                                  type: string
                                optional:
                                  type: boolean
                              required:
                                - key
                              type: object
                              x-kubernetes-map-type: atomic
                            searchAttribute:
                              type: string
                            searchFilter:
                              type: string
                          type: object
                        port:
                          type: integer
                        scheme:
                          enum:
                            - ldap
                            - ldaps
                          type: string
                        server:
                          type: string
                        tls:
                          type: boolean
                      type: object
                    parameters:
                      additionalProperties:
                        type: string
                      type: object
                    pg_hba:
                      items:
                        type: string
                      type: array
                    pg_ident:
                      items:
                        type: string
                      type: array
                    promotionTimeout:
                      format: int32
                      type: integer
                    shared_preload_libraries:
                      items:
                        type: string
                      type: array
                    syncReplicaElectionConstraint:
                      properties:
                        enabled:
                          type: boolean
                        nodeLabelsAntiAffinity:
                          items:
                            type: string
                          type: array
                      required:
                        - enabled
                      type: object
                    synchronous:
                      properties:
                        dataDurability:
                          default: required
                          enum:
                            - required
                            - preferred
                          type: string
                        maxStandbyNamesFromCluster:
                          type: integer
                        method:
                          enum:
                            - any
                            - first
                          type: string
                        number:
                          type: integer
                          x-kubernetes-validations:
                            - message: The number of synchronous replicas should be greater than zero
                              rule: self > 0
                        standbyNamesPost:
                          items:
                            type: string
                          type: array
                        standbyNamesPre:
                          items:
                            type: string
                          type: array
                      required:
                        - method
                        - number
                      type: object
                      x-kubernetes-validations:
                        - message: dataDurability set to 'preferred' requires empty 'standbyNamesPre' and empty 'standbyNamesPost'
                          rule: self.dataDurability!='preferred' || ((!has(self.standbyNamesPre) || self.standbyNamesPre.size()==0) && (!has(self.standbyNamesPost) || self.standbyNamesPost.size()==0))
                  type: object
                primaryUpdateMethod:
                  default: restart
                  enum:
                    - switchover
                    - restart
                  type: string
                primaryUpdateStrategy:
                  default: unsupervised
                  enum:
                    - unsupervised
                    - supervised
                  type: string
                priorityClassName:
                  type: string
                probes:
                  properties:
                    liveness:
                      properties:
                        failureThreshold:
                          format: int32
                          type: integer
                        initialDelaySeconds:
                          format: int32
                          type: integer
                        periodSeconds:
                          format: int32
                          type: integer
                        successThreshold:
                          format: int32
                          type: integer
                        terminationGracePeriodSeconds:
                          format: int64
                          type: integer
                        timeoutSeconds:
                          format: int32
                          type: integer
                      type: object
                    readiness:
                      properties:
                        failureThreshold:
                          format: int32
                          type: integer
                        initialDelaySeconds:
                          format: int32
                          type: integer
                        periodSeconds:
                          format: int32
                          type: integer
                        successThreshold:
                          format: int32
                          type: integer
                        terminationGracePeriodSeconds:
                          format: int64
                          type: integer
                        timeoutSeconds:
                          format: int32
                          type: integer
                      type: object
                    startup:
                      properties:
                        failureThreshold:
                          format: int32
                          type: integer
                        initialDelaySeconds:
                          format: int32
                          type: integer
                        periodSeconds:
                          format: int32
                          type: integer
                        successThreshold:
                          format: int32
                          type: integer
                        terminationGracePeriodSeconds:
                          format: int64
                          type: integer
                        timeoutSeconds:
                          format: int32
                          type: integer
                      type: object
                  type: object
                projectedVolumeTemplate:
                  properties:
                    defaultMode:
                      format: int32
                      type: integer
                    sources:
                      items:
                        properties:
                          clusterTrustBundle:
                            properties:
                              labelSelector:
                                properties:
                                  matchExpressions:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          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
                                    type: object
                                type: object
                                x-kubernetes-map-type: atomic
                              name:
                                type: string
                              optional:
                                type: boolean
                              path:
                                type: string
                              signerName:
                                type: string
                            required:
                              - path
                            type: object
                          configMap:
                            properties:
                              items:
                                items:
                                  properties:
                                    key:
                                      type: string
                                    mode:
                                      format: int32
                                      type: integer
                                    path:
                                      type: string
                                  required:
                                    - key
                                    - path
                                  type: object
                                type: array
                                x-kubernetes-list-type: atomic
                              name:
                                default: ""
                                type: string
                              optional:
                                type: boolean
                            type: object
                            x-kubernetes-map-type: atomic
                          downwardAPI:
                            properties:
                              items:
                                items:
                                  properties:
                                    fieldRef:
                                      properties:
                                        apiVersion:
                                          type: string
                                        fieldPath:
                                          type: string
                                      required:
                                        - fieldPath
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    mode:
                                      format: int32
                                      type: integer
                                    path:
                                      type: string
                                    resourceFieldRef:
                                      properties:
                                        containerName:
                                          type: string
                                        divisor:
                                          anyOf:
                                            - type: integer
                                            - type: string
                                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                          x-kubernetes-int-or-string: true
                                        resource:
                                          type: string
                                      required:
                                        - resource
                                      type: object
                                      x-kubernetes-map-type: atomic
                                  required:
                                    - path
                                  type: object
                                type: array
                                x-kubernetes-list-type: atomic
                            type: object
                          secret:
                            properties:
                              items:
                                items:
                                  properties:
                                    key:
                                      type: string
                                    mode:
                                      format: int32
                                      type: integer
                                    path:
                                      type: string
                                  required:
                                    - key
                                    - path
                                  type: object
                                type: array
                                x-kubernetes-list-type: atomic
                              name:
                                default: ""
                                type: string
                              optional:
                                type: boolean
                            type: object
                            x-kubernetes-map-type: atomic
                          serviceAccountToken:
                            properties:
                              audience:
                                type: string
                              expirationSeconds:
                                format: int64
                                type: integer
                              path:
                                type: string
                            required:
                              - path
                            type: object
                        type: object
                      type: array
                      x-kubernetes-list-type: atomic
                  type: object
                replica:
                  properties:
                    enabled:
                      type: boolean
                    minApplyDelay:
                      type: string
                    primary:
                      type: string
                    promotionToken:
                      type: string
                    self:
                      type: string
                    source:
                      minLength: 1
                      type: string
                  required:
                    - source
                  type: object
                replicationSlots:
                  default:
                    highAvailability:
                      enabled: true
                  properties:
                    highAvailability:
                      default:
                        enabled: true
                      properties:
                        enabled:
                          default: true
                          type: boolean
                        slotPrefix:
                          default: _cnpg_
                          pattern: ^[0-9a-z_]*$
                          type: string
                      type: object
                    synchronizeReplicas:
                      properties:
                        enabled:
                          default: true
                          type: boolean
                        excludePatterns:
                          items:
                            type: string
                          type: array
                      required:
                        - enabled
                      type: object
                    updateInterval:
                      default: 30
                      minimum: 1
                      type: integer
                  type: object
                resources:
                  properties:
                    claims:
                      items:
                        properties:
                          name:
                            type: string
                          request:
                            type: string
                        required:
                          - name
                        type: object
                      type: array
                      x-kubernetes-list-map-keys:
                        - name
                      x-kubernetes-list-type: map
                    limits:
                      additionalProperties:
                        anyOf:
                          - type: integer
                          - type: string
                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                        x-kubernetes-int-or-string: true
                      type: object
                    requests:
                      additionalProperties:
                        anyOf:
                          - type: integer
                          - type: string
                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                        x-kubernetes-int-or-string: true
                      type: object
                  type: object
                schedulerName:
                  type: string
                seccompProfile:
                  properties:
                    localhostProfile:
                      type: string
                    type:
                      type: string
                  required:
                    - type
                  type: object
                serviceAccountTemplate:
                  properties:
                    metadata:
                      properties:
                        annotations:
                          additionalProperties:
                            type: string
                          type: object
                        labels:
                          additionalProperties:
                            type: string
                          type: object
                        name:
                          type: string
                      type: object
                  required:
                    - metadata
                  type: object
                smartShutdownTimeout:
                  default: 180
                  format: int32
                  type: integer
                startDelay:
                  default: 3600
                  format: int32
                  type: integer
                stopDelay:
                  default: 1800
                  format: int32
                  type: integer
                storage:
                  properties:
                    pvcTemplate:
                      properties:
                        accessModes:
                          items:
                            type: string
                          type: array
                          x-kubernetes-list-type: atomic
                        dataSource:
                          properties:
                            apiGroup:
                              type: string
                            kind:
                              type: string
                            name:
                              type: string
                          required:
                            - kind
                            - name
                          type: object
                          x-kubernetes-map-type: atomic
                        dataSourceRef:
                          properties:
                            apiGroup:
                              type: string
                            kind:
                              type: string
                            name:
                              type: string
                            namespace:
                              type: string
                          required:
                            - kind
                            - name
                          type: object
                        resources:
                          properties:
                            limits:
                              additionalProperties:
                                anyOf:
                                  - type: integer
                                  - type: string
                                pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                x-kubernetes-int-or-string: true
                              type: object
                            requests:
                              additionalProperties:
                                anyOf:
                                  - type: integer
                                  - type: string
                                pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                x-kubernetes-int-or-string: true
                              type: object
                          type: object
                        selector:
                          properties:
                            matchExpressions:
                              items:
                                properties:
                                  key:
                                    type: string
                                  operator:
                                    type: string
                                  values:
                                    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
                              type: object
                          type: object
                          x-kubernetes-map-type: atomic
                        storageClassName:
                          type: string
                        volumeAttributesClassName:
                          type: string
                        volumeMode:
                          type: string
                        volumeName:
                          type: string
                      type: object
                    resizeInUseVolumes:
                      default: true
                      type: boolean
                    size:
                      type: string
                    storageClass:
                      type: string
                  type: object
                superuserSecret:
                  properties:
                    name:
                      type: string
                  required:
                    - name
                  type: object
                switchoverDelay:
                  default: 3600
                  format: int32
                  type: integer
                tablespaces:
                  items:
                    properties:
                      name:
                        type: string
                      owner:
                        properties:
                          name:
                            type: string
                        type: object
                      storage:
                        properties:
                          pvcTemplate:
                            properties:
                              accessModes:
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              dataSource:
                                properties:
                                  apiGroup:
                                    type: string
                                  kind:
                                    type: string
                                  name:
                                    type: string
                                required:
                                  - kind
                                  - name
                                type: object
                                x-kubernetes-map-type: atomic
                              dataSourceRef:
                                properties:
                                  apiGroup:
                                    type: string
                                  kind:
                                    type: string
                                  name:
                                    type: string
                                  namespace:
                                    type: string
                                required:
                                  - kind
                                  - name
                                type: object
                              resources:
                                properties:
                                  limits:
                                    additionalProperties:
                                      anyOf:
                                        - type: integer
                                        - type: string
                                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                      x-kubernetes-int-or-string: true
                                    type: object
                                  requests:
                                    additionalProperties:
                                      anyOf:
                                        - type: integer
                                        - type: string
                                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                      x-kubernetes-int-or-string: true
                                    type: object
                                type: object
                              selector:
                                properties:
                                  matchExpressions:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          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
                                    type: object
                                type: object
                                x-kubernetes-map-type: atomic
                              storageClassName:
                                type: string
                              volumeAttributesClassName:
                                type: string
                              volumeMode:
                                type: string
                              volumeName:
                                type: string
                            type: object
                          resizeInUseVolumes:
                            default: true
                            type: boolean
                          size:
                            type: string
                          storageClass:
                            type: string
                        type: object
                      temporary:
                        default: false
                        type: boolean
                    required:
                      - name
                      - storage
                    type: object
                  type: array
                topologySpreadConstraints:
                  items:
                    properties:
                      labelSelector:
                        properties:
                          matchExpressions:
                            items:
                              properties:
                                key:
                                  type: string
                                operator:
                                  type: string
                                values:
                                  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
                            type: object
                        type: object
                        x-kubernetes-map-type: atomic
                      matchLabelKeys:
                        items:
                          type: string
                        type: array
                        x-kubernetes-list-type: atomic
                      maxSkew:
                        format: int32
                        type: integer
                      minDomains:
                        format: int32
                        type: integer
                      nodeAffinityPolicy:
                        type: string
                      nodeTaintsPolicy:
                        type: string
                      topologyKey:
                        type: string
                      whenUnsatisfiable:
                        type: string
                    required:
                      - maxSkew
                      - topologyKey
                      - whenUnsatisfiable
                    type: object
                  type: array
                walStorage:
                  properties:
                    pvcTemplate:
                      properties:
                        accessModes:
                          items:
                            type: string
                          type: array
                          x-kubernetes-list-type: atomic
                        dataSource:
                          properties:
                            apiGroup:
                              type: string
                            kind:
                              type: string
                            name:
                              type: string
                          required:
                            - kind
                            - name
                          type: object
                          x-kubernetes-map-type: atomic
                        dataSourceRef:
                          properties:
                            apiGroup:
                              type: string
                            kind:
                              type: string
                            name:
                              type: string
                            namespace:
                              type: string
                          required:
                            - kind
                            - name
                          type: object
                        resources:
                          properties:
                            limits:
                              additionalProperties:
                                anyOf:
                                  - type: integer
                                  - type: string
                                pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                x-kubernetes-int-or-string: true
                              type: object
                            requests:
                              additionalProperties:
                                anyOf:
                                  - type: integer
                                  - type: string
                                pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                x-kubernetes-int-or-string: true
                              type: object
                          type: object
                        selector:
                          properties:
                            matchExpressions:
                              items:
                                properties:
                                  key:
                                    type: string
                                  operator:
                                    type: string
                                  values:
                                    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
                              type: object
                          type: object
                          x-kubernetes-map-type: atomic
                        storageClassName:
                          type: string
                        volumeAttributesClassName:
                          type: string
                        volumeMode:
                          type: string
                        volumeName:
                          type: string
                      type: object
                    resizeInUseVolumes:
                      default: true
                      type: boolean
                    size:
                      type: string
                    storageClass:
                      type: string
                  type: object
              required:
                - instances
              type: object
              x-kubernetes-validations:
                - message: imageName and imageCatalogRef are mutually exclusive
                  rule: '!(has(self.imageCatalogRef) && has(self.imageName))'
            status:
              properties:
                availableArchitectures:
                  items:
                    properties:
                      goArch:
                        type: string
                      hash:
                        type: string
                    required:
                      - goArch
                      - hash
                    type: object
                  type: array
                azurePVCUpdateEnabled:
                  type: boolean
                certificates:
                  properties:
                    clientCASecret:
                      type: string
                    expirations:
                      additionalProperties:
                        type: string
                      type: object
                    replicationTLSSecret:
                      type: string
                    serverAltDNSNames:
                      items:
                        type: string
                      type: array
                    serverCASecret:
                      type: string
                    serverTLSSecret:
                      type: string
                  type: object
                cloudNativePGCommitHash:
                  type: string
                cloudNativePGOperatorHash:
                  type: string
                conditions:
                  items:
                    properties:
                      lastTransitionTime:
                        format: date-time
                        type: string
                      message:
                        maxLength: 32768
                        type: string
                      observedGeneration:
                        format: int64
                        minimum: 0
                        type: integer
                      reason:
                        maxLength: 1024
                        minLength: 1
                        pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
                        type: string
                      status:
                        enum:
                          - "True"
                          - "False"
                          - Unknown
                        type: string
                      type:
                        maxLength: 316
                        pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
                        type: string
                    required:
                      - lastTransitionTime
                      - message
                      - reason
                      - status
                      - type
                    type: object
                  type: array
                configMapResourceVersion:
                  properties:
                    metrics:
                      additionalProperties:
                        type: string
                      type: object
                  type: object
                currentPrimary:
                  type: string
                currentPrimaryFailingSinceTimestamp:
                  type: string
                currentPrimaryTimestamp:
                  type: string
                danglingPVC:
                  items:
                    type: string
                  type: array
                demotionToken:
                  type: string
                firstRecoverabilityPoint:
                  type: string
                firstRecoverabilityPointByMethod:
                  additionalProperties:
                    format: date-time
                    type: string
                  type: object
                healthyPVC:
                  items:
                    type: string
                  type: array
                image:
                  type: string
                initializingPVC:
                  items:
                    type: string
                  type: array
                instanceNames:
                  items:
                    type: string
                  type: array
                instances:
                  type: integer
                instancesReportedState:
                  additionalProperties:
                    properties:
                      isPrimary:
                        type: boolean
                      timeLineID:
                        type: integer
                    required:
                      - isPrimary
                    type: object
                  type: object
                instancesStatus:
                  additionalProperties:
                    items:
                      type: string
                    type: array
                  type: object
                jobCount:
                  format: int32
                  type: integer
                lastFailedBackup:
                  type: string
                lastPromotionToken:
                  type: string
                lastSuccessfulBackup:
                  type: string
                lastSuccessfulBackupByMethod:
                  additionalProperties:
                    format: date-time
                    type: string
                  type: object
                latestGeneratedNode:
                  type: integer
                managedRolesStatus:
                  properties:
                    byStatus:
                      additionalProperties:
                        items:
                          type: string
                        type: array
                      type: object
                    cannotReconcile:
                      additionalProperties:
                        items:
                          type: string
                        type: array
                      type: object
                    passwordStatus:
                      additionalProperties:
                        properties:
                          resourceVersion:
                            type: string
                          transactionID:
                            format: int64
                            type: integer
                        type: object
                      type: object
                  type: object
                onlineUpdateEnabled:
                  type: boolean
                phase:
                  type: string
                phaseReason:
                  type: string
                pluginStatus:
                  items:
                    properties:
                      backupCapabilities:
                        items:
                          type: string
                        type: array
                      capabilities:
                        items:
                          type: string
                        type: array
                      name:
                        type: string
                      operatorCapabilities:
                        items:
                          type: string
                        type: array
                      restoreJobHookCapabilities:
                        items:
                          type: string
                        type: array
                      status:
                        type: string
                      version:
                        type: string
                      walCapabilities:
                        items:
                          type: string
                        type: array
                    required:
                      - name
                      - version
                    type: object
                  type: array
                poolerIntegrations:
                  properties:
                    pgBouncerIntegration:
                      properties:
                        secrets:
                          items:
                            type: string
                          type: array
                      type: object
                  type: object
                pvcCount:
                  format: int32
                  type: integer
                readService:
                  type: string
                readyInstances:
                  type: integer
                resizingPVC:
                  items:
                    type: string
                  type: array
                secretsResourceVersion:
                  properties:
                    applicationSecretVersion:
                      type: string
                    barmanEndpointCA:
                      type: string
                    caSecretVersion:
                      type: string
                    clientCaSecretVersion:
                      type: string
                    externalClusterSecretVersion:
                      additionalProperties:
                        type: string
                      type: object
                    managedRoleSecretVersion:
                      additionalProperties:
                        type: string
                      type: object
                    metrics:
                      additionalProperties:
                        type: string
                      type: object
                    replicationSecretVersion:
                      type: string
                    serverCaSecretVersion:
                      type: string
                    serverSecretVersion:
                      type: string
                    superuserSecretVersion:
                      type: string
                  type: object
                switchReplicaClusterStatus:
                  properties:
                    inProgress:
                      type: boolean
                  type: object
                tablespacesStatus:
                  items:
                    properties:
                      error:
                        type: string
                      name:
                        type: string
                      owner:
                        type: string
                      state:
                        type: string
                    required:
                      - name
                      - state
                    type: object
                  type: array
                targetPrimary:
                  type: string
                targetPrimaryTimestamp:
                  type: string
                timelineID:
                  type: integer
                topology:
                  properties:
                    instances:
                      additionalProperties:
                        additionalProperties:
                          type: string
                        type: object
                      type: object
                    nodesUsed:
                      format: int32
                      type: integer
                    successfullyExtracted:
                      type: boolean
                  type: object
                unusablePVC:
                  items:
                    type: string
                  type: array
                writeService:
                  type: string
              type: object
          required:
            - metadata
            - spec
          type: object
      served: true
      storage: true
      subresources:
        scale:
          specReplicasPath: .spec.instances
          statusReplicasPath: .status.instances
        status: {}
