Frappe Operator v2.4.0 - External Database Support & Robustness ๐
Release Date: January 13, 2026
Overview
This release introduces support for External Database Connections and significantly improves the Operational Robustness of site deployments. Users can now easily connect Frappe sites to externally managed databases (like AWS RDS, Google Cloud SQL, or Azure Database for MariaDB) while the operator handles the complex initialization and runtime configuration.
๐ Major Features
External Database Support
You can now use databases managed outside of your Kubernetes cluster. This is essential for enterprise deployments requiring high availability, automated backups, and managed database services.
- External Provider: A new
externaldatabase provider that bypasses on-cluster database provisioning. - Secret Integration: Securely consume database credentials from existing Kubernetes Secrets.
- Flexible Connection: Configure
host,port, anddatabasenames directly or source them from Secrets. - Auto-Detection: The operator automatically selects the
externalprovider if aconnectionSecretRefis provided but no provider is specified.
Shared Database Architecture (Bench-level Defaults)
Simplified management of multiple sites on a shared external database server.
- Define a default
DBConfigat theFrappeBenchlevel. - Individual
FrappeSiteobjects automatically merge their configuration with bench defaults. - Allows for a โShared Host, Unique Databaseโ pattern across multiple sites.
Operational Robustness
Weโve re-engineered the initialization flow to eliminate race conditions and improve compatibility.
- Sequential Initialization:
FrappeBenchnow waits for its mandatoryinitjob (building assets, internal config) to succeed before marked asReady.FrappeSitedeployments are now delayed until the referencedFrappeBenchisReady, preventing storage race conditions and โfile not foundโ errors.
- Dynamic CLI Compatibility:
- The site initialization job now automatically detects the features of the installed
benchCLI. - Fixes compatibility issues with
frappe/erpnext:version-15images where the--db-userflag was causing crashes in olderbenchversions.
- The site initialization job now automatically detects the features of the installed
๐ฆ Changes
API Changes
- Added
DBConfigfield toFrappeBenchspec. - Un-deprecated
Host,Port, andConnectionSecretRefinDatabaseConfig. - Added
externalas a valid value forProvider.
Controller Enhancements
- Implemented
ExternalProviderlogic for credential extraction and connectivity mapping. - Added readiness state tracking in
FrappeBenchstatus. - Added dependency checking in
FrappeSitereconciler.
๐ ๏ธ Usage Example
1. Create a Secret with External DB Credentials
apiVersion: v1
kind: Secret
metadata:
name: rds-creds
type: Opaque
stringData:
username: frappe_root
password: secure_password
database: site1_db # Optional
2. Define FrappeSite with External DB
apiVersion: vyogo.tech/v1alpha1
kind: FrappeSite
metadata:
name: site1
spec:
benchRef:
name: dev-bench
siteName: site1.example.com
dbConfig:
provider: external
host: rds-instance.abcdef.us-east-1.rds.amazonaws.com
port: "3306"
connectionSecretRef:
name: rds-creds
๐งช Testing
Tested and verified on:
- โ Kind clusters using Podman.
- โ Frappe v15 images (verified CLI compatibility).
- โ Frappe v16 images (verified sequential init).
- โ External MariaDB connection handling.
๐ Upgrade Path
Upgrading from v2.0.0 is seamless. Existing FrappeBench and FrappeSite resources will continue to work as intended. New features can be adopted by updating your manifests.
Full Changelog: https://github.com/vyogotech/frappe-operator/commits/v2.4.0