## ## @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 ## ## @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. ## @param {Bootstrap} bootstrap - Bootstrap configuration. bootstrap: enabled: false # example: 2020-11-26 15:22:00.00000+00 recoveryTime: "" oldName: ""