387 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			YAML
		
	
	
	
			
		
		
	
	
			387 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			YAML
		
	
	
	
apiVersion: apiextensions.k8s.io/v1beta1
 | 
						|
kind: CustomResourceDefinition
 | 
						|
metadata:
 | 
						|
  name: postgresqls.acid.zalan.do
 | 
						|
spec:
 | 
						|
  group: acid.zalan.do
 | 
						|
  names:
 | 
						|
    kind: postgresql
 | 
						|
    listKind: postgresqlList
 | 
						|
    plural: postgresqls
 | 
						|
    singular: postgresql
 | 
						|
    shortNames:
 | 
						|
    - pg
 | 
						|
  scope: Namespaced
 | 
						|
  subresources:
 | 
						|
    status: {}
 | 
						|
  version: v1
 | 
						|
  validation:
 | 
						|
    openAPIV3Schema:
 | 
						|
      type: object
 | 
						|
      required:
 | 
						|
        - kind
 | 
						|
        - apiVersion
 | 
						|
        - spec
 | 
						|
      properties:
 | 
						|
        kind:
 | 
						|
          type: string
 | 
						|
          enum:
 | 
						|
            - postgresql
 | 
						|
        apiVersion:
 | 
						|
          type: string
 | 
						|
          enum:
 | 
						|
            - acid.zalan.do/v1
 | 
						|
        spec:
 | 
						|
          type: object
 | 
						|
          required:
 | 
						|
            - numberOfInstances
 | 
						|
            - teamId
 | 
						|
            - postgresql
 | 
						|
          properties:
 | 
						|
            allowedSourceRanges:
 | 
						|
              type: array
 | 
						|
              nullable: true
 | 
						|
              items:
 | 
						|
                type: string
 | 
						|
                pattern: '^(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\/(\d|[1-2]\d|3[0-2])$'
 | 
						|
            clone:
 | 
						|
              type: object
 | 
						|
              required:
 | 
						|
                - cluster
 | 
						|
              properties:
 | 
						|
                cluster:
 | 
						|
                  type: string
 | 
						|
                s3_endpoint:
 | 
						|
                  type: string
 | 
						|
                s3_access_key_id:
 | 
						|
                  type: string
 | 
						|
                s3_secret_access_key:
 | 
						|
                  type: string
 | 
						|
                s3_force_path_style:
 | 
						|
                  type: string
 | 
						|
                s3_wal_path:
 | 
						|
                  type: string
 | 
						|
                timestamp:
 | 
						|
                  type: string
 | 
						|
                  pattern: '^([0-9]+)-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])[Tt]([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]|60)(\.[0-9]+)?(([Zz])|([+-]([01][0-9]|2[0-3]):[0-5][0-9]))$'
 | 
						|
                  # The regexp matches the date-time format (RFC 3339 Section 5.6) that specifies a timezone as an offset relative to UTC
 | 
						|
                  # Example: 1996-12-19T16:39:57-08:00
 | 
						|
                  # Note: this field requires a timezone
 | 
						|
                uid:
 | 
						|
                  format: uuid
 | 
						|
                  type: string
 | 
						|
            connectionPool:
 | 
						|
              type: object
 | 
						|
              properties:
 | 
						|
                dockerImage:
 | 
						|
                  type: string
 | 
						|
                maxDBConnections:
 | 
						|
                  type: integer
 | 
						|
                mode:
 | 
						|
                  type: string
 | 
						|
                  enum:
 | 
						|
                    - "session"
 | 
						|
                    - "transaction"
 | 
						|
                numberOfInstances:
 | 
						|
                  type: integer
 | 
						|
                  minimum: 1
 | 
						|
                resources:
 | 
						|
                  type: object
 | 
						|
                  required:
 | 
						|
                    - requests
 | 
						|
                    - limits
 | 
						|
                  properties:
 | 
						|
                    limits:
 | 
						|
                      type: object
 | 
						|
                      required:
 | 
						|
                        - cpu
 | 
						|
                        - memory
 | 
						|
                      properties:
 | 
						|
                        cpu:
 | 
						|
                          type: string
 | 
						|
                          pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | 
						|
                        memory:
 | 
						|
                          type: string
 | 
						|
                          pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | 
						|
                    requests:
 | 
						|
                      type: object
 | 
						|
                      required:
 | 
						|
                        - cpu
 | 
						|
                        - memory
 | 
						|
                      properties:
 | 
						|
                        cpu:
 | 
						|
                          type: string
 | 
						|
                          pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | 
						|
                        memory:
 | 
						|
                          type: string
 | 
						|
                          pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | 
						|
                schema:
 | 
						|
                  type: string
 | 
						|
                user:
 | 
						|
                  type: string
 | 
						|
            databases:
 | 
						|
              type: object
 | 
						|
              additionalProperties:
 | 
						|
                type: string
 | 
						|
              # Note: usernames specified here as database owners must be declared in the users key of the spec key.
 | 
						|
            dockerImage:
 | 
						|
              type: string
 | 
						|
            enableConnectionPool:
 | 
						|
              type: boolean
 | 
						|
            enableLogicalBackup:
 | 
						|
              type: boolean
 | 
						|
            enableMasterLoadBalancer:
 | 
						|
              type: boolean
 | 
						|
            enableReplicaLoadBalancer:
 | 
						|
              type: boolean
 | 
						|
            enableShmVolume:
 | 
						|
              type: boolean
 | 
						|
            init_containers:  # deprecated
 | 
						|
              type: array
 | 
						|
              nullable: true
 | 
						|
              items:
 | 
						|
                type: object
 | 
						|
                additionalProperties: true
 | 
						|
            initContainers:
 | 
						|
              type: array
 | 
						|
              nullable: true
 | 
						|
              items:
 | 
						|
                type: object
 | 
						|
                additionalProperties: true
 | 
						|
            logicalBackupSchedule:
 | 
						|
              type: string
 | 
						|
              pattern: '^(\d+|\*)(/\d+)?(\s+(\d+|\*)(/\d+)?){4}$'
 | 
						|
            maintenanceWindows:
 | 
						|
              type: array
 | 
						|
              items:
 | 
						|
                type: string
 | 
						|
                pattern: '^\ *((Mon|Tue|Wed|Thu|Fri|Sat|Sun):(2[0-3]|[01]?\d):([0-5]?\d)|(2[0-3]|[01]?\d):([0-5]?\d))-((Mon|Tue|Wed|Thu|Fri|Sat|Sun):(2[0-3]|[01]?\d):([0-5]?\d)|(2[0-3]|[01]?\d):([0-5]?\d))\ *$'
 | 
						|
            numberOfInstances:
 | 
						|
              type: integer
 | 
						|
              minimum: 0
 | 
						|
            patroni:
 | 
						|
              type: object
 | 
						|
              properties:
 | 
						|
                initdb:
 | 
						|
                  type: object
 | 
						|
                  additionalProperties:
 | 
						|
                    type: string
 | 
						|
                pg_hba:
 | 
						|
                  type: array
 | 
						|
                  items:
 | 
						|
                    type: string
 | 
						|
                slots:
 | 
						|
                  type: object
 | 
						|
                  additionalProperties:
 | 
						|
                    type: object
 | 
						|
                    additionalProperties:
 | 
						|
                      type: string
 | 
						|
                ttl:
 | 
						|
                  type: integer
 | 
						|
                loop_wait:
 | 
						|
                  type: integer
 | 
						|
                retry_timeout:
 | 
						|
                  type: integer
 | 
						|
                maximum_lag_on_failover:
 | 
						|
                  type: integer
 | 
						|
            podAnnotations:
 | 
						|
              type: object
 | 
						|
              additionalProperties:
 | 
						|
                type: string
 | 
						|
            pod_priority_class_name:  # deprecated
 | 
						|
              type: string
 | 
						|
            podPriorityClassName:
 | 
						|
              type: string
 | 
						|
            postgresql:
 | 
						|
              type: object
 | 
						|
              required:
 | 
						|
                - version
 | 
						|
              properties:
 | 
						|
                version:
 | 
						|
                  type: string
 | 
						|
                  enum:
 | 
						|
                    - "9.3"
 | 
						|
                    - "9.4"
 | 
						|
                    - "9.5"
 | 
						|
                    - "9.6"
 | 
						|
                    - "10"
 | 
						|
                    - "11"
 | 
						|
                    - "12"
 | 
						|
                parameters:
 | 
						|
                  type: object
 | 
						|
                  additionalProperties:
 | 
						|
                    type: string
 | 
						|
            replicaLoadBalancer:  # deprecated
 | 
						|
              type: boolean
 | 
						|
            resources:
 | 
						|
              type: object
 | 
						|
              required:
 | 
						|
                - requests
 | 
						|
                - limits
 | 
						|
              properties:
 | 
						|
                limits:
 | 
						|
                  type: object
 | 
						|
                  required:
 | 
						|
                    - cpu
 | 
						|
                    - memory
 | 
						|
                  properties:
 | 
						|
                    cpu:
 | 
						|
                      type: string
 | 
						|
                      # Decimal natural followed by m, or decimal natural followed by
 | 
						|
                      # dot followed by up to three decimal digits.
 | 
						|
                      #
 | 
						|
                      # This is because the Kubernetes CPU resource has millis as the
 | 
						|
                      # maximum precision.  The actual values are checked in code
 | 
						|
                      # because the regular expression would be huge and horrible and
 | 
						|
                      # not very helpful in validation error messages; this one checks
 | 
						|
                      # only the format of the given number.
 | 
						|
                      #
 | 
						|
                      # https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#meaning-of-cpu
 | 
						|
                      pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | 
						|
                      # Note: the value specified here must not be zero or be lower
 | 
						|
                      # than the corresponding request.
 | 
						|
                    memory:
 | 
						|
                      type: string
 | 
						|
                      # You can express memory as a plain integer or as a fixed-point
 | 
						|
                      # integer using one of these suffixes: E, P, T, G, M, k. You can
 | 
						|
                      # also use the power-of-two equivalents: Ei, Pi, Ti, Gi, Mi, Ki
 | 
						|
                      #
 | 
						|
                      # https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#meaning-of-memory
 | 
						|
                      pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | 
						|
                      # Note: the value specified here must not be zero or be lower
 | 
						|
                      # than the corresponding request.
 | 
						|
                requests:
 | 
						|
                  type: object
 | 
						|
                  required:
 | 
						|
                    - cpu
 | 
						|
                    - memory
 | 
						|
                  properties:
 | 
						|
                    cpu:
 | 
						|
                      type: string
 | 
						|
                      # Decimal natural followed by m, or decimal natural followed by
 | 
						|
                      # dot followed by up to three decimal digits.
 | 
						|
                      #
 | 
						|
                      # This is because the Kubernetes CPU resource has millis as the
 | 
						|
                      # maximum precision.  The actual values are checked in code
 | 
						|
                      # because the regular expression would be huge and horrible and
 | 
						|
                      # not very helpful in validation error messages; this one checks
 | 
						|
                      # only the format of the given number.
 | 
						|
                      #
 | 
						|
                      # https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#meaning-of-cpu
 | 
						|
                      pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
 | 
						|
                      # Note: the value specified here must not be zero or be higher
 | 
						|
                      # than the corresponding limit.
 | 
						|
                    memory:
 | 
						|
                      type: string
 | 
						|
                      # You can express memory as a plain integer or as a fixed-point
 | 
						|
                      # integer using one of these suffixes: E, P, T, G, M, k. You can
 | 
						|
                      # also use the power-of-two equivalents: Ei, Pi, Ti, Gi, Mi, Ki
 | 
						|
                      #
 | 
						|
                      # https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#meaning-of-memory
 | 
						|
                      pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | 
						|
                      # Note: the value specified here must not be zero or be higher
 | 
						|
                      # than the corresponding limit.
 | 
						|
            serviceAnnotations:
 | 
						|
              type: object
 | 
						|
              additionalProperties:
 | 
						|
                type: string
 | 
						|
            sidecars:
 | 
						|
              type: array
 | 
						|
              nullable: true
 | 
						|
              items:
 | 
						|
                type: object
 | 
						|
                additionalProperties: true
 | 
						|
            spiloFSGroup:
 | 
						|
              type: integer
 | 
						|
            standby:
 | 
						|
              type: object
 | 
						|
              required:
 | 
						|
                - s3_wal_path
 | 
						|
              properties:
 | 
						|
                s3_wal_path:
 | 
						|
                  type: string
 | 
						|
            teamId:
 | 
						|
              type: string
 | 
						|
            tolerations:
 | 
						|
              type: array
 | 
						|
              items:
 | 
						|
                type: object
 | 
						|
                required:
 | 
						|
                  - key
 | 
						|
                  - operator
 | 
						|
                  - effect
 | 
						|
                properties:
 | 
						|
                  key:
 | 
						|
                    type: string
 | 
						|
                  operator:
 | 
						|
                    type: string
 | 
						|
                    enum:
 | 
						|
                      - Equal
 | 
						|
                      - Exists
 | 
						|
                  value:
 | 
						|
                    type: string
 | 
						|
                  effect:
 | 
						|
                    type: string
 | 
						|
                    enum:
 | 
						|
                      - NoExecute
 | 
						|
                      - NoSchedule
 | 
						|
                      - PreferNoSchedule
 | 
						|
                  tolerationSeconds:
 | 
						|
                    type: integer
 | 
						|
            useLoadBalancer:  # deprecated
 | 
						|
              type: boolean
 | 
						|
            users:
 | 
						|
              type: object
 | 
						|
              additionalProperties:
 | 
						|
                type: array
 | 
						|
                nullable: true
 | 
						|
                description: "Role flags specified here must not contradict each other"
 | 
						|
                items:
 | 
						|
                  type: string
 | 
						|
                  enum:
 | 
						|
                  - bypassrls
 | 
						|
                  - BYPASSRLS
 | 
						|
                  - nobypassrls
 | 
						|
                  - NOBYPASSRLS
 | 
						|
                  - createdb
 | 
						|
                  - CREATEDB
 | 
						|
                  - nocreatedb
 | 
						|
                  - NOCREATEDB
 | 
						|
                  - createrole
 | 
						|
                  - CREATEROLE
 | 
						|
                  - nocreaterole
 | 
						|
                  - NOCREATEROLE
 | 
						|
                  - inherit
 | 
						|
                  - INHERIT
 | 
						|
                  - noinherit
 | 
						|
                  - NOINHERIT
 | 
						|
                  - login
 | 
						|
                  - LOGIN
 | 
						|
                  - nologin
 | 
						|
                  - NOLOGIN
 | 
						|
                  - replication
 | 
						|
                  - REPLICATION
 | 
						|
                  - noreplication
 | 
						|
                  - NOREPLICATION
 | 
						|
                  - superuser
 | 
						|
                  - SUPERUSER
 | 
						|
                  - nosuperuser
 | 
						|
                  - NOSUPERUSER
 | 
						|
            volume:
 | 
						|
              type: object
 | 
						|
              required:
 | 
						|
                - size
 | 
						|
              properties:
 | 
						|
                size:
 | 
						|
                  type: string
 | 
						|
                  pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
 | 
						|
                  # Note: the value specified here must not be zero.
 | 
						|
                storageClass:
 | 
						|
                  type: string
 | 
						|
                subPath:
 | 
						|
                  type: string
 | 
						|
        status:
 | 
						|
          type: object
 | 
						|
          additionalProperties:
 | 
						|
            type: string
 |