Skip to content

Another Boring Tech Blog

Menu
  • Start
  • About Me
Menu

Introduction to the New Percona Everest Beta

Posted on February 28, 2024 by Vinicius Grippa

In the rapidly evolving world of technology, database management remains a crucial, albeit challenging, aspect for many organizations. Percona, a leading provider of open-source database solutions, comes with its latest product, which is now in its beta phase: Percona Everest. This post aims to shed light on what Percona Everest is, how it works, and its potential impact on database management.

What is this tool? What is Percona Everest?

Percona has long been recognized for contributing to the open-source community, offering enhanced versions of MySQL, MongoDB, and Postgres. Solutions, including Percona Xtrabackup, Percona Monitoring and Management(PMM), and Percona Toolkit, have aided database administrators (DBAs) by providing alternatives to proprietary solutions, thereby preventing vendor lock-in.

The newest addition to Percona’s suite of tools, Percona Everest, aims to redefine the use and management of databases. Built on the foundation of Percona Operators, Everest simplifies the database lifecycle, encompassing provisioning, configuration, and management, with an overarching goal of saving time and resources traditionally dedicated to database management or Database as a Service (DBaaS) offerings.

Getting Started with Percona Everest

The initial step towards using Percona Everest involves setting up a Kubernetes cluster, a process supported on both Google Kubernetes Engine (GKE) and Amazon Elastic Kubernetes Service (EKS). For illustration, this post details the process of using GKE and the Everest client running on a MacOS Sonoma with Apple silicon, beginning with the use of the gcloud CLI and proceeding to the Kubernetes cluster creation.

The first step is to create the Kubernetes cluster in GKE:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ gcloud container clusters create \
>   --machine-type n1-standard-4 \
>   --num-nodes 3 \
>   --zone us-central1-b \
>   --cluster-version latest vinnie1-k8s
Default change: VPC-native is the default mode during cluster creation for versions greater than 1.21.0-gke.1500. To create advanced routes based clusters, please pass the `--no-enable-ip-alias` flag
Default change: During creation of nodepools or autoscaling configuration changes for cluster versions greater than 1.24.1-gke.800 a default location policy is applied. For Spot and PVM it defaults to ANY, and for all other VM kinds a BALANCED policy is used. To change the default values use the `--location-policy` flag.
Note: Your Pod address range (`--cluster-ipv4-cidr`) can accommodate at most 1008 node(s).
Creating cluster vinnie1-k8s in us-central1-b... Cluster is being health-checked (master is healthy)...done.
Created [https://container.googleapis.com/v1/projects/support-211414/zones/us-central1-b/clusters/vinnie1-k8s].
To inspect the contents of your cluster, go to: https://console.cloud.google.com/kubernetes/workload_/gcloud/us-central1-b/vinnie1-k8s?project=support-211414
kubeconfig entry generated for vinnie1-k8s.
NAME         LOCATION       MASTER_VERSION      MASTER_IP       MACHINE_TYPE   NODE_VERSION        NUM_NODES  STATUS
vinnie1-k8s  us-central1-b  1.29.0-gke.1381000  34.136.183.215  n1-standard-4  1.29.0-gke.1381000  3          RUNNING

Using Percona Everest

With the installation complete, the focus shifts to installing the Everest client. It is simple as we need only to download the binary (and the documentation already provides the commands):

1
2
3
4
5
6
7
$ curl -sSL -o everestctl-darwin-arm64 https://github.com/percona/percona-everest-cli/releases/latest/download/everestctl-darwin-arm64
$ sudo install -m 555 everestctl-darwin-arm64 /usr/local/bin/everestctl
 
$ everestctl version
ProjectName: everestctl
Version: 0.8.0
FullCommit: 2fe2cb9246c8e185a91e775fdf4855511def411a

With the client installed, we will perform the installation of the Percona Operators:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
$ everestctl install
? Namespaces managed by Everest (comma separated) default
? What operators do you want to install? MySQL, MongoDB, PostgreSQL
2024-02-28T23:36:56Z info install/install.go:430 Installing Operator Lifecycle Manager {"component": "install"}
2024-02-28T23:37:25Z info install/install.go:435 OLM has been installed {"component": "install"}
2024-02-28T23:37:25Z info install/install.go:436 Installing Percona OLM Catalog {"component": "install"}
2024-02-28T23:38:09Z info install/install.go:441 Percona OLM Catalog has been installed {"component": "install"}
2024-02-28T23:38:09Z info install/install.go:419 Creating namespace everest-monitoring {"component": "install"}
2024-02-28T23:38:10Z info install/install.go:425 Namespace everest-monitoring has been created {"component": "install"}
2024-02-28T23:38:10Z info install/install.go:238 Preparing k8s cluster for monitoring {"component": "install", "action": "monitoring"}
2024-02-28T23:38:10Z info install/install.go:208 Creating operator group for everest {"component": "install"}
2024-02-28T23:38:10Z info install/install.go:212 Installing victoriametrics-operator operator {"component": "install"}
2024-02-28T23:38:36Z info install/install.go:228 victoriametrics-operator operator has been installed {"component": "install"}
2024-02-28T23:38:48Z info install/install.go:246 K8s cluster monitoring has been provisioned successfully {"component": "install", "action": "monitoring"}
2024-02-28T23:38:48Z info install/install.go:419 Creating namespace default {"component": "install"}
2024-02-28T23:38:49Z info install/install.go:425 Namespace default has been created {"component": "install"}
2024-02-28T23:38:49Z info install/install.go:311 Installing operators into default namespace {"component": "install"}
2024-02-28T23:38:49Z info install/install.go:478 Installing percona-xtradb-cluster-operator operator {"component": "install"}
2024-02-28T23:39:10Z info install/install.go:520 percona-xtradb-cluster-operator operator has been installed {"component": "install"}
2024-02-28T23:39:10Z info install/install.go:478 Installing percona-server-mongodb-operator operator {"component": "install"}
2024-02-28T23:39:38Z info install/install.go:520 percona-server-mongodb-operator operator has been installed {"component": "install"}
2024-02-28T23:39:38Z info install/install.go:478 Installing percona-postgresql-operator operator {"component": "install"}
2024-02-28T23:40:09Z info install/install.go:520 percona-postgresql-operator operator has been installed {"component": "install"}
2024-02-28T23:40:09Z info install/install.go:315 Creating role for the Everest service account {"component": "install"}
2024-02-28T23:40:10Z info install/install.go:321 Binding role to the Everest Service account {"component": "install"}
2024-02-28T23:40:12Z info install/install.go:419 Creating namespace everest-system {"component": "install"}
2024-02-28T23:40:12Z info install/install.go:425 Namespace everest-system has been created {"component": "install"}
2024-02-28T23:40:12Z info install/install.go:255 Creating operator group for everest {"component": "install"}
2024-02-28T23:40:13Z info install/install.go:478 Installing everest-operator operator {"component": "install"}
2024-02-28T23:40:36Z info install/install.go:520 everest-operator operator has been installed {"component": "install"}
2024-02-28T23:40:36Z info install/install.go:278 Deploying Everest to everest-system {"component": "install"}
2024-02-28T23:40:53Z info install/install.go:293 Updating cluster role bindings for everest-admin {"component": "install"}
2024-02-28T23:40:54Z info install/install.go:577 Creating token for Everest {"component": "install"}
2024-02-28T23:40:55Z info install/install.go:185
Here's your authorization token for accessing the Everest UI and API:
 
k7DcNAJyCsUFgReBJOZ4dH43G8Bc864cZ23keHckPbcTOpYK58B7MAZYHiuAHRahFONUdOXLeY4ZBws5azQLqrb1Gpxjrg6UoBQJrEg67E1dAtOH1URvlamrJ87j99C
 
Store this token securely as you will not be able to retrieve it later. If you ever need to reset it, use the following command:
everestctl token reset
 
{"component": "install"}

It is very important to save the token, as we will use it later in the UI interface.

With the installation done, we need to enable the port forwarding so we can use the UI interface:

1
2
3
$ kubectl port-forward svc/everest 8080:8080 -n everest-system
Forwarding from 127.0.0.1:8080 -> 8080
Forwarding from [::1]:8080 -> 8080

And we open our browser using the forwarded port (8080) at localhost (http://127.0.0.1:8080/login):

 

With the Everest UI, we can start managing our databases and creating our first instance. I’m not going into the details of every option(maybe in another opportunity), but it is similar to deploying a DBaaS service (RDS, for example):

  

With all steps completed, we will see our database initializing:

And we can confirm that the pods are being installed:

1
2
3
4
5
6
7
8
9
10
11
$ kubectl get pods
NAME                                               READY   STATUS    RESTARTS      AGE
mysql-boring-haproxy-0                             2/2     Running   0             2m59s
mysql-boring-haproxy-1                             2/2     Running   0             95s
mysql-boring-haproxy-2                             2/2     Running   0             75s
mysql-boring-pxc-0                                 1/1     Running   0             3m
mysql-boring-pxc-1                                 1/1     Running   0             98s
mysql-boring-pxc-2                                 0/1     Running   0             27s
percona-postgresql-operator-c5c44c589-5c6zg        1/1     Running   0             20m
percona-server-mongodb-operator-668566bcbc-r5kqp   1/1     Running   5 (10m ago)   20m
percona-xtradb-cluster-operator-56486d5b7d-pdrf6   1/1     Running   5 (10m ago)   21m

This overview provides insight into the user interface’s features, highlighting its intuitive design for creating and managing database instances. Nonetheless, as it currently stands in its beta phase, there is a noticeable limitation in the range of options available. This indicates the potential for a more comprehensive exploration as the tool matures and evolves in subsequent updates.

Observations and Conclusion

Reflecting on the journey from traditional database management practices to the modern, automated approaches facilitated by technologies like Kubernetes, this evolution highlights the industry’s shift towards efficiency and simplicity. The advent of containers and the introduction of orchestration and automation by Kubernetes have been game-changers. These innovations underscore the dynamic nature of technology, where continuous change and evolution are the only constants. This fast-paced development necessitates smarter, more streamlined ways to deploy databases, aligning with the perspective shared by Jensen Huang, Nvidia’s CEO, on the transformative nature of technology and the so-called “death of coding.” Huang’s vision suggests a paradigm shift where the essence of innovation and product creation is no longer tethered to deep technical expertise in specific areas but is accessible to those with the vision and ideas.

Percona Everest is emblematic of this shift, offering a platform that democratizes database management by abstracting the complexities of traditional database administration. It empowers businesses, especially startups with limited resources, to focus on their core objectives rather than the intricacies of database and infrastructure management. By minimizing the need for specialized knowledge in database operations, Everest enables innovators and creators to reclaim their role at the forefront of product development and innovation.

Post navigation

← How to Permanently Disable Transparent Huge Pages (THP) on Ubuntu 22.04
MySQL: Identifying Tables Not Using InnoDB →
© 2025 Another Boring Tech Blog | Powered by Minimalist Blog WordPress Theme