How OpenEverest works

OpenEverest is a cloud-native database platform that simplifies database provisioning and management on Kubernetes. It provides a unified interface for managing databases, including PostgreSQL, MySQL, and MongoDB.
User Flow
OpenEverest allows users to deploy and manage databases on Kubernetes. When a user creates a database, the web UI collects configuration, submits a request, and OpenEverest handles the rest. This section shows the high-level user-facing flow before we look under the hood.
High-level database creation flow:
- User fills the form in the web UI to request a new database.
- The request is sent to the OpenEverest API Server.
- OpenEverest API Server delegates lifecycle tasks to the OpenEverest Operator.
- OpenEverest Operator creates Kubernetes custom resources; underlying database operators reconcile and create pods, storage, backups, etc.
- User sees the created database and status in the web UI.

Components of OpenEverest
OpenEverest consists of several key components that work together to provide a powerful experience for users. Read on to learn about each component and how they interact.
OpenEverest UI
The OpenEverest UI is a web-based interface that provides a user-friendly way to manage database deployments. It communicates with the OpenEverest API Server to display information about databases and perform management tasks. Provisioning a new database is as simple as filling out a form in the UI. Scaling a database, configuring backups, and setting up monitoring can all be done with a few clicks.

OpenEverest API Server
The OpenEverest API Server is the central component that exposes a RESTful API for managing database deployments and Kubernetes clusters. It handles requests from the UI and interacts with the OpenEverest Operator.

OpenEverest CLI
The OpenEverest CLI is used to perform administrative tasks such as user account management, RBAC, and namespace management. It also provisions and upgrades OpenEverest.
$ everestctl
CLI for managing Percona Everest
Usage:
everestctl [command]
Available Commands:
accounts Manage Everest accounts
completion Generate the autocompletion script for the specified shell
help Help about any command
install Install Percona Everest using Helm
namespaces Manage Everest database namespaces
settings Configure Everest settings
uninstall Uninstall Percona Everest
upgrade Upgrade Percona Everest using Helm
version Print Everest components version info
Flags:
-h, --help help for everestctl
--json Set output type to JSON
-k, --kubeconfig string Path to a kubeconfig. If not set, will use KUBECONFIG env var (default "~/.kube/config")
-v, --verbose Enable Verbose mode
Use "everestctl [command] --help" for more information about a command.
OpenEverest Operator
The OpenEverest Operator streamlines deployments by introducing a generic interface that works across different database technologies. Users define their requirements using the DatabaseCluster, DatabaseClusterBackup, and DatabaseClusterRestore resources, regardless of whether they are deploying MySQL, MongoDB, or PostgreSQL.
Behind the scenes, OpenEverest translates these generic requests into the specific formats required by the individual Kubernetes database operators: percona-xtradb-cluster-operator, percona-server-mongodb-operator, and percona-postgresql-operator. This pattern allows users to master one set of CRDs while the operator manages the complexity of the specific engines. An example of the OpenEverest Operator flow for PostgreSQL is shown below.

OpenEverest Helm Charts
OpenEverest uses Helm charts to simplify the deployment of its components on Kubernetes. Helm is a package manager for Kubernetes that allows users to define, install, and upgrade complex Kubernetes applications.
How it all works together
OpenEverest’s components are designed to work together to provide a unified database management experience on Kubernetes:
- User interaction: Users interact with OpenEverest through the web-based UI, while CLI is used for administrative tasks.
- API Server: UI communicates with the OpenEverest API Server, which acts as the central hub for database management operations.
- OpenEverest Operator: The API Server delegates database lifecycle operations (such as provisioning, scaling, and backups) to the OpenEverest Operator.
- Database Operators: The OpenEverest Operator, in turn, manages specific database operators (e.g., for PostgreSQL, MongoDB, MySQL) using Kubernetes custom resources.
- Helm charts: Helm charts are used to deploy and upgrade OpenEverest components themselves, making installation and maintenance straightforward.
This integration allows users to manage complex database environments with simple, consistent workflows, abstracting away the underlying Kubernetes and operator complexity.
Conclusion
OpenEverest is a powerful platform that simplifies database management on Kubernetes. Its components work together to provide a seamless experience for users, allowing them to easily provision, scale, and manage databases. Try OpenEverest out today and see how it can transform your database management experience!