Custom Resource Definition (CRD)
What is CRD
CRD (Custom Resource Definition) is an extension mechanism in Kubernetes that allows users to define their own resource types. The PostgreSQL Operator provides multiple CRDs to manage PostgreSQL clusters and related operations.
Main CRD Types
1. PostgreSQL Cluster (postgresql)
The core CRD for managing PostgreSQL clusters, containing cluster configuration, resource allocation, backup settings etc.
apiVersion: acid.zalan.do/v1
kind: postgresql
metadata:
name: pg-cluster
spec:
teamId: ACID
postgresql:
version: "14"
parameters: # PostgreSQL configuration parameters
shared_buffers: "1GB"
work_mem: "64MB"
numberOfInstances: 3
resources:
requests:
cpu: "1"
memory: 2Gi
volume:
size: 50Gi
storageClass: standard
backup:
schedule: "0 0 * * *" # Daily backup
retainDay: 7 # Retain for 7 days
storage:
bucket: "my-backups"
name: "backup-storage"
namespace: "default"
2. PostgreSQL Backup (postgresbackup)
Manages backup operations for PostgreSQL clusters.
apiVersion: middleware.alauda.io/v1
kind: PostgresBackup
metadata:
name: pg-backup
spec:
cluster: pg-cluster # Cluster to backup
executeNode: node-1 # Node to execute backup
status:
state: Succeeded # Backup state
backupName: backup-20230324
startTime: "2023-03-24T00:00:00Z"
finishTime: "2023-03-24T00:30:00Z"
3. PostgreSQL Restore (postgresrestore)
Manages restore operations for PostgreSQL clusters.
apiVersion: middleware.alauda.io/v1
kind: PostgresRestore
metadata:
name: pg-restore
spec:
backupCluster:
name: pg-cluster
storage:
bucket: "my-backups"
name: "backup-storage"
namespace: "default"
targetCluster: pg-new-cluster
timestamp: "2023-03-24T00:00:00Z" # Restore to specific point in time
status:
state: InProgress
error: "" # Error message
Key Fields
CRD Type | Field | Description |
---|
postgresql | teamId | Team identifier |
| postgresql.version | PostgreSQL version |
| numberOfInstances | Number of cluster nodes |
| resources | Resource requests and limits |
| volume | Storage configuration |
| backup | Backup configuration |
postgresbackup | cluster | Cluster to backup |
| executeNode | Node to execute backup |
| status.state | Backup state |
postgresrestore | backupCluster | Source backup cluster info |
| targetCluster | Target restore cluster |
| timestamp | Point-in-time to restore |
Use Cases
- Create and manage PostgreSQL clusters
- Configure automated backups and restores
- Monitor cluster state and operation progress
- Perform point-in-time recovery
- Manage cluster resource allocation
Best Practices
- Configure regular backups for production environments
- Set reasonable resource limits and storage sizes
- Use naming conventions for CRD resources
- Monitor key status fields (state, error)
- Test backup and restore procedures
- Use version control for CRD configurations
Learn More