252 lines
7.3 KiB
YAML
252 lines
7.3 KiB
YAML
apiVersion: "acid.zalan.do/v1"
|
|
kind: postgresql
|
|
metadata:
|
|
name: acid-test-cluster
|
|
# labels:
|
|
# application: test-app
|
|
# environment: demo
|
|
# annotations:
|
|
# "acid.zalan.do/controller": "second-operator"
|
|
# "delete-date": "2020-08-31" # can only be deleted on that day if "delete-date "key is configured
|
|
# "delete-clustername": "acid-test-cluster" # can only be deleted when name matches if "delete-clustername" key is configured
|
|
spec:
|
|
dockerImage: ghcr.io/zalando/spilo-16:3.3-p1
|
|
teamId: "acid"
|
|
numberOfInstances: 2
|
|
users: # Application/Robot users
|
|
zalando:
|
|
- superuser
|
|
- createdb
|
|
foo_user: []
|
|
# flyway: []
|
|
# usersIgnoringSecretRotation:
|
|
# - bar_user
|
|
# usersWithSecretRotation:
|
|
# - foo_user
|
|
# usersWithInPlaceSecretRotation:
|
|
# - flyway
|
|
# - bar_owner_user
|
|
enableMasterLoadBalancer: false
|
|
enableReplicaLoadBalancer: false
|
|
enableConnectionPooler: false # enable/disable connection pooler deployment
|
|
enableReplicaConnectionPooler: false # set to enable connectionPooler for replica service
|
|
enableMasterPoolerLoadBalancer: false
|
|
enableReplicaPoolerLoadBalancer: false
|
|
allowedSourceRanges: # load balancers' source ranges for both master and replica services
|
|
- 127.0.0.1/32
|
|
databases:
|
|
foo: zalando
|
|
preparedDatabases:
|
|
bar:
|
|
defaultUsers: true
|
|
extensions:
|
|
pg_partman: public
|
|
pgcrypto: public
|
|
schemas:
|
|
data: {}
|
|
history:
|
|
defaultRoles: true
|
|
defaultUsers: false
|
|
postgresql:
|
|
version: "16"
|
|
parameters: # Expert section
|
|
shared_buffers: "32MB"
|
|
max_connections: "10"
|
|
log_statement: "all"
|
|
# env:
|
|
# - name: wal_s3_bucket
|
|
# value: my-custom-bucket
|
|
|
|
volume:
|
|
size: 1Gi
|
|
# storageClass: my-sc
|
|
# iops: 1000 # for EBS gp3
|
|
# throughput: 250 # in MB/s for EBS gp3
|
|
# selector:
|
|
# matchExpressions:
|
|
# - { key: flavour, operator: In, values: [ "banana", "chocolate" ] }
|
|
# matchLabels:
|
|
# environment: dev
|
|
# service: postgres
|
|
# subPath: $(NODE_NAME)/$(POD_NAME)
|
|
# isSubPathExpr: true
|
|
additionalVolumes:
|
|
- name: empty
|
|
mountPath: /opt/empty
|
|
targetContainers:
|
|
- all
|
|
volumeSource:
|
|
emptyDir: {}
|
|
# - name: data
|
|
# mountPath: /home/postgres/pgdata/partitions
|
|
# targetContainers:
|
|
# - postgres
|
|
# volumeSource:
|
|
# PersistentVolumeClaim:
|
|
# claimName: pvc-postgresql-data-partitions
|
|
# readyOnly: false
|
|
# - name: data
|
|
# mountPath: /home/postgres/pgdata/partitions
|
|
# subPath: $(NODE_NAME)/$(POD_NAME)
|
|
# isSubPathExpr: true
|
|
# targetContainers:
|
|
# - postgres
|
|
# volumeSource:
|
|
# PersistentVolumeClaim:
|
|
# claimName: pvc-postgresql-data-partitions
|
|
# readyOnly: false
|
|
# - name: conf
|
|
# mountPath: /etc/telegraf
|
|
# subPath: telegraf.conf
|
|
# targetContainers:
|
|
# - telegraf-sidecar
|
|
# volumeSource:
|
|
# configMap:
|
|
# name: my-config-map
|
|
|
|
enableShmVolume: true
|
|
# spiloRunAsUser: 101
|
|
# spiloRunAsGroup: 103
|
|
# spiloFSGroup: 103
|
|
# podAnnotations:
|
|
# annotation.key: value
|
|
# serviceAnnotations:
|
|
# annotation.key: value
|
|
# podPriorityClassName: "spilo-pod-priority"
|
|
# tolerations:
|
|
# - key: postgres
|
|
# operator: Exists
|
|
# effect: NoSchedule
|
|
resources:
|
|
requests:
|
|
cpu: 10m
|
|
memory: 100Mi
|
|
# hugepages-2Mi: 128Mi
|
|
# hugepages-1Gi: 1Gi
|
|
limits:
|
|
cpu: 500m
|
|
memory: 500Mi
|
|
# hugepages-2Mi: 128Mi
|
|
# hugepages-1Gi: 1Gi
|
|
patroni:
|
|
failsafe_mode: false
|
|
initdb:
|
|
encoding: "UTF8"
|
|
locale: "en_US.UTF-8"
|
|
data-checksums: "true"
|
|
# pg_hba:
|
|
# - hostssl all all 0.0.0.0/0 md5
|
|
# - host all all 0.0.0.0/0 md5
|
|
# slots:
|
|
# permanent_physical_1:
|
|
# type: physical
|
|
# permanent_logical_1:
|
|
# type: logical
|
|
# database: foo
|
|
# plugin: pgoutput
|
|
ttl: 30
|
|
loop_wait: 10
|
|
retry_timeout: 10
|
|
synchronous_mode: false
|
|
synchronous_mode_strict: false
|
|
synchronous_node_count: 1
|
|
maximum_lag_on_failover: 33554432
|
|
|
|
# restore a Postgres DB with point-in-time-recovery
|
|
# with a non-empty timestamp, clone from an S3 bucket using the latest backup before the timestamp
|
|
# with an empty/absent timestamp, clone from an existing alive cluster using pg_basebackup
|
|
# clone:
|
|
# uid: "efd12e58-5786-11e8-b5a7-06148230260c"
|
|
# cluster: "acid-minimal-cluster"
|
|
# timestamp: "2017-12-19T12:40:33+01:00" # timezone required (offset relative to UTC, see RFC 3339 section 5.6)
|
|
# s3_wal_path: "s3://custom/path/to/bucket"
|
|
|
|
# run periodic backups with k8s cron jobs
|
|
# enableLogicalBackup: true
|
|
# logicalBackupRetention: "3 months"
|
|
# logicalBackupSchedule: "30 00 * * *"
|
|
|
|
# maintenanceWindows:
|
|
# - 01:00-06:00 #UTC
|
|
# - Sat:00:00-04:00
|
|
|
|
# overwrite custom properties for connection pooler deployments
|
|
# connectionPooler:
|
|
# numberOfInstances: 2
|
|
# mode: "transaction"
|
|
# schema: "pooler"
|
|
# user: "pooler"
|
|
# maxDBConnections: 60
|
|
# resources:
|
|
# requests:
|
|
# cpu: 300m
|
|
# memory: 100Mi
|
|
# limits:
|
|
# cpu: "1"
|
|
# memory: 100Mi
|
|
|
|
initContainers:
|
|
- name: date
|
|
image: busybox
|
|
command: [ "/bin/date" ]
|
|
# sidecars:
|
|
# - name: "telegraf-sidecar"
|
|
# image: "telegraf:latest"
|
|
# ports:
|
|
# - name: metrics
|
|
# containerPort: 8094
|
|
# protocol: TCP
|
|
# resources:
|
|
# limits:
|
|
# cpu: 500m
|
|
# memory: 500Mi
|
|
# requests:
|
|
# cpu: 100m
|
|
# memory: 100Mi
|
|
# env:
|
|
# - name: "USEFUL_VAR"
|
|
# value: "perhaps-true"
|
|
|
|
# Custom TLS certificate. Disabled unless tls.secretName has a value.
|
|
tls:
|
|
secretName: "" # should correspond to a Kubernetes Secret resource to load
|
|
certificateFile: "tls.crt"
|
|
privateKeyFile: "tls.key"
|
|
caFile: "" # optionally configure Postgres with a CA certificate
|
|
caSecretName: "" # optionally the ca.crt can come from this secret instead.
|
|
# file names can be also defined with absolute path, and will no longer be relative
|
|
# to the "/tls/" path where the secret is being mounted by default, and "/tlsca/"
|
|
# where the caSecret is mounted by default.
|
|
# When TLS is enabled, also set spiloFSGroup parameter above to the relevant value.
|
|
# if unknown, set it to 103 which is the usual value in the default spilo images.
|
|
# In Openshift, there is no need to set spiloFSGroup/spilo_fsgroup.
|
|
|
|
# Add node affinity support by allowing postgres pods to schedule only on nodes that
|
|
# have label: "postgres-operator:enabled" set.
|
|
# nodeAffinity:
|
|
# requiredDuringSchedulingIgnoredDuringExecution:
|
|
# nodeSelectorTerms:
|
|
# - matchExpressions:
|
|
# - key: postgres-operator
|
|
# operator: In
|
|
# values:
|
|
# - enabled
|
|
|
|
# Enables change data capture streams for defined database tables
|
|
# streams:
|
|
# - applicationId: test-app
|
|
# database: foo
|
|
# tables:
|
|
# data.state_pending_outbox:
|
|
# eventType: test-app.status-pending
|
|
# data.state_approved_outbox:
|
|
# eventType: test-app.status-approved
|
|
# data.orders_outbox:
|
|
# eventType: test-app.order-completed
|
|
# idColumn: o_id
|
|
# payloadColumn: o_payload
|
|
# # Optional. Filter ignores events before a certain txnId and lsn. Can be used to skip bad events
|
|
# filter:
|
|
# data.orders_outbox: "[?(@.source.txId > 500 && @.source.lsn > 123456)]"
|
|
# batchSize: 1000
|