683 lines
24 KiB
YAML
683 lines
24 KiB
YAML
apiVersion: apiextensions.k8s.io/v1
|
|
kind: CustomResourceDefinition
|
|
metadata:
|
|
name: postgresqls.acid.zalan.do
|
|
labels:
|
|
app.kubernetes.io/name: postgres-operator
|
|
spec:
|
|
group: acid.zalan.do
|
|
names:
|
|
kind: postgresql
|
|
listKind: postgresqlList
|
|
plural: postgresqls
|
|
singular: postgresql
|
|
shortNames:
|
|
- pg
|
|
categories:
|
|
- all
|
|
scope: Namespaced
|
|
versions:
|
|
- name: v1
|
|
served: true
|
|
storage: true
|
|
subresources:
|
|
status: {}
|
|
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
|
|
schema:
|
|
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:
|
|
isSubPathExpr:
|
|
type: boolean
|
|
name:
|
|
type: string
|
|
mountPath:
|
|
type: string
|
|
subPath:
|
|
type: string
|
|
targetContainers:
|
|
type: array
|
|
nullable: true
|
|
items:
|
|
type: string
|
|
volumeSource:
|
|
type: object
|
|
x-kubernetes-preserve-unknown-fields: true
|
|
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]+)?(([+-]([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: 1
|
|
resources:
|
|
type: object
|
|
properties:
|
|
limits:
|
|
type: object
|
|
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
|
|
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
|
|
enableReplicaConnectionPooler:
|
|
type: boolean
|
|
enableLogicalBackup:
|
|
type: boolean
|
|
enableMasterLoadBalancer:
|
|
type: boolean
|
|
enableMasterPoolerLoadBalancer:
|
|
type: boolean
|
|
enableReplicaLoadBalancer:
|
|
type: boolean
|
|
enableReplicaPoolerLoadBalancer:
|
|
type: boolean
|
|
enableShmVolume:
|
|
type: boolean
|
|
env:
|
|
type: array
|
|
nullable: true
|
|
items:
|
|
type: object
|
|
x-kubernetes-preserve-unknown-fields: true
|
|
init_containers:
|
|
type: array
|
|
description: deprecated
|
|
nullable: true
|
|
items:
|
|
type: object
|
|
x-kubernetes-preserve-unknown-fields: true
|
|
initContainers:
|
|
type: array
|
|
nullable: true
|
|
items:
|
|
type: object
|
|
x-kubernetes-preserve-unknown-fields: true
|
|
logicalBackupRetention:
|
|
type: string
|
|
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))-((2[0-3]|[01]?\d):([0-5]?\d)|(2[0-3]|[01]?\d):([0-5]?\d))\ *$'
|
|
masterServiceAnnotations:
|
|
type: object
|
|
additionalProperties:
|
|
type: string
|
|
nodeAffinity:
|
|
type: object
|
|
properties:
|
|
preferredDuringSchedulingIgnoredDuringExecution:
|
|
type: array
|
|
items:
|
|
type: object
|
|
required:
|
|
- preference
|
|
- weight
|
|
properties:
|
|
preference:
|
|
type: object
|
|
properties:
|
|
matchExpressions:
|
|
type: array
|
|
items:
|
|
type: object
|
|
required:
|
|
- key
|
|
- operator
|
|
properties:
|
|
key:
|
|
type: string
|
|
operator:
|
|
type: string
|
|
values:
|
|
type: array
|
|
items:
|
|
type: string
|
|
matchFields:
|
|
type: array
|
|
items:
|
|
type: object
|
|
required:
|
|
- key
|
|
- operator
|
|
properties:
|
|
key:
|
|
type: string
|
|
operator:
|
|
type: string
|
|
values:
|
|
type: array
|
|
items:
|
|
type: string
|
|
weight:
|
|
format: int32
|
|
type: integer
|
|
requiredDuringSchedulingIgnoredDuringExecution:
|
|
type: object
|
|
required:
|
|
- nodeSelectorTerms
|
|
properties:
|
|
nodeSelectorTerms:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
matchExpressions:
|
|
type: array
|
|
items:
|
|
type: object
|
|
required:
|
|
- key
|
|
- operator
|
|
properties:
|
|
key:
|
|
type: string
|
|
operator:
|
|
type: string
|
|
values:
|
|
type: array
|
|
items:
|
|
type: string
|
|
matchFields:
|
|
type: array
|
|
items:
|
|
type: object
|
|
required:
|
|
- key
|
|
- operator
|
|
properties:
|
|
key:
|
|
type: string
|
|
operator:
|
|
type: string
|
|
values:
|
|
type: array
|
|
items:
|
|
type: string
|
|
numberOfInstances:
|
|
type: integer
|
|
minimum: 0
|
|
patroni:
|
|
type: object
|
|
properties:
|
|
failsafe_mode:
|
|
type: boolean
|
|
initdb:
|
|
type: object
|
|
additionalProperties:
|
|
type: string
|
|
loop_wait:
|
|
type: integer
|
|
maximum_lag_on_failover:
|
|
type: integer
|
|
pg_hba:
|
|
type: array
|
|
items:
|
|
type: string
|
|
retry_timeout:
|
|
type: integer
|
|
slots:
|
|
type: object
|
|
additionalProperties:
|
|
type: object
|
|
additionalProperties:
|
|
type: string
|
|
synchronous_mode:
|
|
type: boolean
|
|
synchronous_mode_strict:
|
|
type: boolean
|
|
synchronous_node_count:
|
|
type: integer
|
|
ttl:
|
|
type: integer
|
|
podAnnotations:
|
|
type: object
|
|
additionalProperties:
|
|
type: string
|
|
pod_priority_class_name:
|
|
type: string
|
|
description: deprecated
|
|
podPriorityClassName:
|
|
type: string
|
|
postgresql:
|
|
type: object
|
|
required:
|
|
- version
|
|
properties:
|
|
version:
|
|
type: string
|
|
enum:
|
|
- "12"
|
|
- "13"
|
|
- "14"
|
|
- "15"
|
|
- "16"
|
|
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
|
|
secretNamespace:
|
|
type: string
|
|
replicaLoadBalancer:
|
|
type: boolean
|
|
description: deprecated
|
|
replicaServiceAnnotations:
|
|
type: object
|
|
additionalProperties:
|
|
type: string
|
|
resources:
|
|
type: object
|
|
properties:
|
|
limits:
|
|
type: object
|
|
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 higher
|
|
# than the corresponding limit.
|
|
hugepages-2Mi:
|
|
type: string
|
|
pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
|
|
hugepages-1Gi:
|
|
type: string
|
|
pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
|
|
requests:
|
|
type: object
|
|
properties:
|
|
cpu:
|
|
type: string
|
|
pattern: '^(\d+m|\d+(\.\d{1,3})?)$'
|
|
memory:
|
|
type: string
|
|
pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
|
|
hugepages-2Mi:
|
|
type: string
|
|
pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
|
|
hugepages-1Gi:
|
|
type: string
|
|
pattern: '^(\d+(e\d+)?|\d+(\.\d+)?(e\d+)?[EPTGMK]i?)$'
|
|
schedulerName:
|
|
type: string
|
|
serviceAnnotations:
|
|
type: object
|
|
additionalProperties:
|
|
type: string
|
|
sidecars:
|
|
type: array
|
|
nullable: true
|
|
items:
|
|
type: object
|
|
x-kubernetes-preserve-unknown-fields: true
|
|
spiloRunAsUser:
|
|
type: integer
|
|
spiloRunAsGroup:
|
|
type: integer
|
|
spiloFSGroup:
|
|
type: integer
|
|
standby:
|
|
type: object
|
|
properties:
|
|
s3_wal_path:
|
|
type: string
|
|
gs_wal_path:
|
|
type: string
|
|
standby_host:
|
|
type: string
|
|
standby_port:
|
|
type: string
|
|
oneOf:
|
|
- required:
|
|
- s3_wal_path
|
|
- required:
|
|
- gs_wal_path
|
|
- required:
|
|
- standby_host
|
|
streams:
|
|
type: array
|
|
items:
|
|
type: object
|
|
required:
|
|
- applicationId
|
|
- database
|
|
- tables
|
|
properties:
|
|
applicationId:
|
|
type: string
|
|
batchSize:
|
|
type: integer
|
|
database:
|
|
type: string
|
|
enableRecovery:
|
|
type: boolean
|
|
filter:
|
|
type: object
|
|
additionalProperties:
|
|
type: string
|
|
tables:
|
|
type: object
|
|
additionalProperties:
|
|
type: object
|
|
required:
|
|
- eventType
|
|
properties:
|
|
eventType:
|
|
type: string
|
|
idColumn:
|
|
type: string
|
|
payloadColumn:
|
|
type: string
|
|
recoveryEventType:
|
|
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
|
|
properties:
|
|
key:
|
|
type: string
|
|
operator:
|
|
type: string
|
|
enum:
|
|
- Equal
|
|
- Exists
|
|
value:
|
|
type: string
|
|
effect:
|
|
type: string
|
|
enum:
|
|
- NoExecute
|
|
- NoSchedule
|
|
- PreferNoSchedule
|
|
tolerationSeconds:
|
|
type: integer
|
|
useLoadBalancer:
|
|
type: boolean
|
|
description: deprecated
|
|
users:
|
|
type: object
|
|
additionalProperties:
|
|
type: array
|
|
nullable: true
|
|
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
|
|
usersIgnoringSecretRotation:
|
|
type: array
|
|
nullable: true
|
|
items:
|
|
type: string
|
|
usersWithInPlaceSecretRotation:
|
|
type: array
|
|
nullable: true
|
|
items:
|
|
type: string
|
|
usersWithSecretRotation:
|
|
type: array
|
|
nullable: true
|
|
items:
|
|
type: string
|
|
volume:
|
|
type: object
|
|
required:
|
|
- size
|
|
properties:
|
|
isSubPathExpr:
|
|
type: boolean
|
|
iops:
|
|
type: integer
|
|
selector:
|
|
type: object
|
|
properties:
|
|
matchExpressions:
|
|
type: array
|
|
items:
|
|
type: object
|
|
required:
|
|
- key
|
|
- operator
|
|
properties:
|
|
key:
|
|
type: string
|
|
operator:
|
|
type: string
|
|
enum:
|
|
- DoesNotExist
|
|
- Exists
|
|
- In
|
|
- NotIn
|
|
values:
|
|
type: array
|
|
items:
|
|
type: string
|
|
matchLabels:
|
|
type: object
|
|
x-kubernetes-preserve-unknown-fields: true
|
|
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
|
|
throughput:
|
|
type: integer
|
|
status:
|
|
type: object
|
|
additionalProperties:
|
|
type: string
|