How OpenEverest works

By Chi Fujii Chi Fujii
How OpenEverest works
Image source: https://unsplash.com/photos/a-piece-of-a-puzzle-with-a-missing-piece-cWMhxNmQVq0

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:

  1. User fills the form in the web UI to request a new database.
  2. The request is sent to the OpenEverest API Server.
  3. OpenEverest API Server delegates lifecycle tasks to the OpenEverest Operator.
  4. OpenEverest Operator creates Kubernetes custom resources; underlying database operators reconcile and create pods, storage, backups, etc.
  5. User sees the created database and status in the web UI.

User flow diagram

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 UI

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 API Server

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 Operator

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:

  1. User interaction: Users interact with OpenEverest through the web-based UI, while CLI is used for administrative tasks.
  2. API Server: UI communicates with the OpenEverest API Server, which acts as the central hub for database management operations.
  3. OpenEverest Operator: The API Server delegates database lifecycle operations (such as provisioning, scaling, and backups) to the OpenEverest Operator.
  4. Database Operators: The OpenEverest Operator, in turn, manages specific database operators (e.g., for PostgreSQL, MongoDB, MySQL) using Kubernetes custom resources.
  5. 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!