User Guide¶
This guide covers all Custom Resource Definitions (CRDs) provided by DB Provision Operator.
Resource Hierarchy¶
graph TD
DI[DatabaseInstance] --> DB[Database]
DI --> DU[DatabaseUser]
DI --> DR[DatabaseRole]
DB --> DBB[DatabaseBackup]
DB --> DBS[DatabaseBackupSchedule]
DBB --> DBR[DatabaseRestore]
DU --> DG[DatabaseGrant]
DR --> DG
CRD Overview¶
| CRD | Description | Depends On |
|---|---|---|
| DatabaseInstance | Connection to a database server | - |
| Database | Logical database | DatabaseInstance |
| DatabaseUser | Database user with credentials | DatabaseInstance |
| DatabaseRole | Group role for permissions | DatabaseInstance |
| DatabaseGrant | Permission assignments | DatabaseUser, DatabaseRole |
| DatabaseBackup | One-time backup | Database |
| DatabaseBackupSchedule | Scheduled backups | Database |
| DatabaseRestore | Restore from backup | DatabaseBackup |
| ClusterDatabaseInstance | Cluster-scoped database server connection | - |
| ClusterDatabaseRole | Cluster-scoped permission group | ClusterDatabaseInstance |
| ClusterDatabaseGrant | Cluster-scoped permission grants | ClusterDatabaseRole or DatabaseUser |
Common Patterns¶
Resource Naming¶
All resources support a name field in the spec that defines the actual database object name (e.g., database name, username). If not specified, the Kubernetes resource name is used.
apiVersion: dbops.dbprovision.io/v1alpha1
kind: Database
metadata:
name: my-k8s-resource-name # Kubernetes resource name
spec:
name: actual_database_name # Database name (optional, defaults to metadata.name)
Instance References¶
Child resources reference their parent DatabaseInstance:
Deletion Policies¶
Resources that create external database objects support deletion policies:
| Policy | Behavior |
|---|---|
Retain |
Keep the database object when CR is deleted |
Delete |
Delete the database object when CR is deleted |
Snapshot |
Create a backup before deletion (backup-capable resources) |
Deletion Protection¶
Enable deletion protection to prevent accidental deletion:
DatabaseUser and DatabaseRole
DatabaseUser and DatabaseRole use annotations instead of spec fields:
Skip Reconcile¶
Temporarily pause reconciliation:
Status Phases¶
All resources report their status through a phase field:
| Phase | Description |
|---|---|
Pending |
Waiting for dependencies (e.g., instance not ready) |
Creating |
Resource is being created |
Ready |
Resource is successfully created and healthy |
Updating |
Resource is being updated |
Deleting |
Resource is being deleted |
Failed |
An error occurred |
Conditions¶
Resources also expose detailed conditions:
status:
conditions:
- type: Ready
status: "True"
reason: ReconcileSuccess
message: "Database created successfully"
lastTransitionTime: "2024-01-01T00:00:00Z"
Advanced Features¶
- Drift Detection - Detect and correct configuration drift
- Deletion Protection - Prevent accidental resource deletion
Next Steps¶
- DatabaseInstance - Start by connecting to your database server
- Database - Create databases
- DatabaseUser - Manage users
- Examples - Ready-to-use configurations