## ## @section Common parameters ## ## @typedef {struct} Resources - Explicit CPU and memory configuration for each PostgreSQL replica. ## @field {quantity} [cpu] - CPU available to each replica. ## @field {quantity} [memory] - Memory (RAM) available to each replica. ## @enum {string} ResourcesPreset - Default sizing preset. ## @value nano ## @value micro ## @value small ## @value medium ## @value large ## @value xlarge ## @value 2xlarge ## @param {int} replicas - Number of Postgres replicas. replicas: 2 ## @param {Resources} [resources] - Explicit CPU and memory configuration for each PostgreSQL replica. When omitted, the preset defined in `resourcesPreset` is applied. resources: {} ## @param {ResourcesPreset} resourcesPreset="micro" - Default sizing preset used when `resources` is omitted. resourcesPreset: "micro" ## @param {quantity} size - Persistent Volume Claim size available for application data. size: 10Gi ## @param {string} storageClass - StorageClass used to store the data. storageClass: "" ## @param {bool} external - Enable external access from outside the cluster. external: false ## ## @enum {string} Version ## @value v18 ## @value v17 ## @value v16 ## @value v15 ## @value v14 ## @value v13 ## @param {Version} version - PostgreSQL major version to deploy version: v18 ## @section Application-specific parameters ## ## @typedef {struct} PostgreSQLParameters - PostgreSQL server parameters. ## @field {int} [max_connections] - Maximum number of concurrent connections to the database server. ## @typedef {struct} PostgreSQL - PostgreSQL server configuration. ## @field {PostgreSQLParameters} [parameters] - PostgreSQL server parameters. ## @param {PostgreSQL} postgresql - PostgreSQL server configuration. postgresql: parameters: max_connections: 100 ## ## @section Quorum-based synchronous replication ## ## @typedef {struct} Quorum - Quorum configuration for synchronous replication. ## @field {int} minSyncReplicas - Minimum number of synchronous replicas required for commit. ## @field {int} maxSyncReplicas - Maximum number of synchronous replicas allowed (must be less than total replicas). ## @param {Quorum} quorum - Quorum configuration for synchronous replication. quorum: minSyncReplicas: 0 maxSyncReplicas: 0 ## ## @section Users configuration ## ## @typedef {struct} User - User configuration. ## @field {string} [password] - Password for the user. ## @field {bool} [replication] - Whether the user has replication privileges. ## @param {map[string]User} users - Users configuration map. users: {} ## Example: ## users: ## user1: ## password: strongpassword ## user2: ## password: hackme ## airflow: ## password: qwerty123 ## debezium: ## replication: true ## ## @section Databases configuration ## ## @typedef {struct} DatabaseRoles - Role assignments for a database. ## @field {[]string} [admin] - List of users with admin privileges. ## @field {[]string} [readonly] - List of users with read-only privileges. ## @typedef {struct} Database - Database configuration. ## @field {DatabaseRoles} [roles] - Roles assigned to users. ## @field {[]string} [extensions] - List of enabled PostgreSQL extensions. ## @param {map[string]Database} databases - Databases configuration map. databases: {} ## Example: ## databases: ## myapp: ## roles: ## admin: ## - user1 ## - debezium ## readonly: ## - user2 ## airflow: ## roles: ## admin: ## - airflow ## extensions: ## - hstore ## ## @section Backup parameters ## ## @typedef {struct} Backup - Backup configuration. ## @field {bool} enabled - Enable regular backups. ## @field {string} [schedule] - Cron schedule for automated backups. ## @field {string} [retentionPolicy] - Retention policy (e.g. "30d"). ## @field {string} [destinationPath] - Destination path for backups (e.g. s3://bucket/path/). ## @field {string} [endpointURL] - S3 endpoint URL for uploads. ## @field {string} [s3AccessKey] - Access key for S3 authentication. ## @field {string} [s3SecretKey] - Secret key for S3 authentication. ## @param {Backup} backup - Backup configuration. backup: enabled: false retentionPolicy: 30d destinationPath: "s3://bucket/path/to/folder/" endpointURL: "http://minio-gateway-service:9000" schedule: "0 2 * * * *" s3AccessKey: "" s3SecretKey: "" ## ## @section Bootstrap (recovery) parameters ## ## @typedef {struct} Bootstrap - Bootstrap configuration for restoring a database cluster from a backup. ## @field {bool} enabled - Whether to restore from a backup. ## @field {string} [recoveryTime] - Timestamp (RFC3339) for point-in-time recovery; empty means latest. ## @field {string} oldName - Previous cluster name before deletion. ## @field {string} [serverName] - Barman server name (S3 path prefix) used by the original cluster when writing backups. Set this only when the original cluster had an explicit barmanObjectStore.serverName that differed from its Kubernetes resource name. ## @param {Bootstrap} bootstrap - Bootstrap configuration. bootstrap: enabled: false # example: 2020-11-26 15:22:00.00000+00 recoveryTime: "" oldName: "" serverName: ""