481 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			YAML
		
	
	
	
			
		
		
	
	
			481 lines
		
	
	
		
			16 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
 | |
|   additionalPrinterColumns:
 | |
|   - name: Team
 | |
|     type: string
 | |
|     description: Team responsible for Postgres CLuster
 | |
|     JSONPath: .spec.teamId
 | |
|   - name: Version
 | |
|     type: string
 | |
|     description: PostgreSQL version
 | |
|     JSONPath: .spec.postgresql.version
 | |
|   - name: Pods
 | |
|     type: integer
 | |
|     description: Number of Pods per Postgres cluster
 | |
|     JSONPath: .spec.numberOfInstances
 | |
|   - name: Volume
 | |
|     type: string
 | |
|     description: Size of the bound volume
 | |
|     JSONPath: .spec.volume.size
 | |
|   - name: CPU-Request
 | |
|     type: string
 | |
|     description: Requested CPU for Postgres containers
 | |
|     JSONPath: .spec.resources.requests.cpu
 | |
|   - name: Memory-Request
 | |
|     type: string
 | |
|     description: Requested memory for Postgres containers
 | |
|     JSONPath: .spec.resources.requests.memory
 | |
|   - name: Age
 | |
|     type: date
 | |
|     JSONPath: .metadata.creationTimestamp
 | |
|   - name: Status
 | |
|     type: string
 | |
|     description: Current sync status of postgresql resource
 | |
|     JSONPath: .status.PostgresClusterStatus
 | |
|   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
 | |
|             - volume
 | |
|           properties:
 | |
|             additionalVolumes:
 | |
|               type: array
 | |
|               items:
 | |
|                 type: object
 | |
|                 required:
 | |
|                   - name
 | |
|                   - mountPath
 | |
|                   - volumeSource
 | |
|                 properties:
 | |
|                   name:
 | |
|                     type: string
 | |
|                   mountPath:
 | |
|                     type: string
 | |
|                   targetContainers:
 | |
|                     type: array
 | |
|                     nullable: true
 | |
|                     items:
 | |
|                       type: string
 | |
|                   volumeSource:
 | |
|                     type: object
 | |
|                   subPath:
 | |
|                     type: string
 | |
|             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: boolean
 | |
|                 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
 | |
|             connectionPooler:
 | |
|               type: object
 | |
|               properties:
 | |
|                 dockerImage:
 | |
|                   type: string
 | |
|                 maxDBConnections:
 | |
|                   type: integer
 | |
|                 mode:
 | |
|                   type: string
 | |
|                   enum:
 | |
|                     - "session"
 | |
|                     - "transaction"
 | |
|                 numberOfInstances:
 | |
|                   type: integer
 | |
|                   minimum: 2
 | |
|                 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
 | |
|             enableConnectionPooler:
 | |
|               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
 | |
|                 synchronous_mode:
 | |
|                   type: boolean
 | |
|                 synchronous_mode_strict:
 | |
|                   type: boolean
 | |
|             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
 | |
|             preparedDatabases:
 | |
|               type: object
 | |
|               additionalProperties:
 | |
|                 type: object
 | |
|                 properties:
 | |
|                   defaultUsers:
 | |
|                     type: boolean
 | |
|                   extensions:
 | |
|                     type: object
 | |
|                     additionalProperties:
 | |
|                       type: string
 | |
|                   schemas:
 | |
|                     type: object
 | |
|                     additionalProperties:
 | |
|                       type: object
 | |
|                       properties:
 | |
|                         defaultUsers:
 | |
|                           type: boolean
 | |
|                         defaultRoles:
 | |
|                           type: boolean
 | |
|             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
 | |
|             tls:
 | |
|               type: object
 | |
|               required:
 | |
|                 - secretName
 | |
|               properties:
 | |
|                 secretName:
 | |
|                   type: string
 | |
|                 certificateFile:
 | |
|                   type: string
 | |
|                 privateKeyFile:
 | |
|                   type: string
 | |
|                 caFile:
 | |
|                   type: string
 | |
|                 caSecretName:
 | |
|                   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
 |