Hybrid Cloud

Frappe Operator

Kubernetes-native Frappe

Frappe Operator turns Frappe and ERPNext into first-class Kubernetes citizens. Declare a FrappeBench and a FrappeSite, and the operator provisions the database, workers, scheduler, NGINX and certificates — then keeps them running through upgrades, failures and traffic spikes.

Language
Go
License
Elastic License 2.0
Kubernetes
1.19+
Install
OLM · Helm · kubectl
Arch
amd64 · arm64
QUICKSTART
OperatorHub (OLM)
# Install via Operator Lifecycle Managerkubectl create -f https://operatorhub.io/install/frappe-operator.yaml # Watch the controller come upkubectl get pods -n operators -w
Helm
# Add the chart repositoryhelm repo add frappe-operator https://vyogotech.github.io/frappe-operator/helm-repo helm install frappe-operator frappe-operator/frappe-operator \  --namespace frappe-operator-system \  --create-namespace
First site
# 1. Shared MariaDB instancekubectl apply -f https://raw.githubusercontent.com/vyogotech/frappe-operator/release/examples/mariadb-shared-instance.yaml # 2. A bench and a sitekubectl apply -f https://raw.githubusercontent.com/vyogotech/frappe-operator/release/examples/basic-bench.yamlkubectl apply -f https://raw.githubusercontent.com/vyogotech/frappe-operator/release/examples/basic-site.yaml # 3. Watch it reconcilekubectl get frappebench,frappesite -w # 4. Grab the admin passwordkubectl get secret basic-site-admin -o jsonpath='{.data.password}' | base64 -d

What Frappe Operator gives you

Two resources, whole platform

A FrappeBench describes the shared infrastructure — image, apps, NGINX, workers, scheduler. A FrappeSite describes one tenant. The operator reconciles everything else.

Multi-tenancy that holds up

Run hundreds of sites on shared benches with per-site database isolation and auto-generated credentials, or give a customer their own dedicated bench.

Provider-agnostic autoscaling

KEDA or plain HPA scales background workers against real queue depth, so long-running jobs get capacity without over-provisioning idle clusters.

Site-specific apps

Install a different app set per site with graceful degradation — one site's missing app never takes down the bench it shares.

Zero-downtime updates

Bump the image, annotate the site, and the operator re-runs initialisation against the new build while the old pods keep serving.

Enterprise cluster ready

Fully compatible with OpenShift restricted-v2 SCCs, with automated backups and secure-by-default credential handling.

Under the hood

A Go controller-runtime operator built around two CRDs in the vyogo.tech/v1 API group. It owns database provisioning, secret generation, certificate issuing and bench-init jobs, so a site upgrade is an annotation rather than a runbook.

Read the source

Frequently asked questions

How is this different from running ERPNext with Docker Compose?

Compose gives you one host and a manual restart policy. The operator gives you a control loop: it watches desired state, reschedules failed pods, scales workers against queue depth, rotates credentials, and re-runs site initialisation when the image changes — across as many nodes as your cluster has.

What license is Frappe Operator under?

Releases from v4.2.0 onward are under the Elastic License 2.0, a source-available license. It is free to use, self-host, modify and redistribute — including in production for your own organisation or your own dedicated customer instances. Offering it to third parties as a hosted or managed Frappe/ERPNext service requires a commercial license. Releases up to v4.1.x remain Apache 2.0.

Does it work on OpenShift?

Yes. The operator and the workloads it creates run under OpenShift's restricted-v2 security context constraints, and it can be installed through OperatorHub via the Operator Lifecycle Manager.

Can one bench serve multiple customers?

Yes. A single FrappeBench can back hundreds of FrappeSite resources, each with its own database and credentials. You can also give a customer a dedicated bench when isolation requirements demand it.

Running Frappe Operator in production?

We build and maintain these tools, and we help teams adopt them. Tell us what you are trying to ship and we will tell you honestly whether this is the right piece.

Talk to the team