Percona Everest quick install guide¶
Helm simplifies the installation of Percona Everest. With this guide, you’ll be up and running with Percona Everest in no time. However, we also have a comprehensive installation guide that covers all possibilities.
Percona Helm charts can be found in percona/percona-helm-charts repository in Github.
Alternative installation method
If you prefer an alternative method, you can install Percona Everest using everestctl.
Prerequisites¶
Before getting started with Percona Everest, do the following:
-
Install Helm v3 .
-
Install yq .
-
Set up a Kubernetes cluster.
Note
Percona Everest assists with installing all the necessary operators and required packages, but does not deploy a Kubernetes cluster.
We recommend setting up Percona Everest on the Amazon Elastic Kubernetes Service (EKS) or Google Kubernetes Engine (GKE).
-
Verify that you have access to the Kubernetes cluster that you want to use with Everest. By default, Everest uses the kubeconfig file available under
~/.kube/config.If your file is located elsewhere, use the export command below to set the
KUBECONFIGenvironment variable:export KUBECONFIG=~/.kube/configTo verify access to the Kubernetes cluster, run the following command:
kubectl get nodesExpected output
NAME STATUS ROLES AGE VERSION gke-<name>-default-pool-75d48bfc-bx8g Ready <none> 11h v1.26.7-gke.500 gke-<name>-default-pool-75d48bfc-c2df Ready <none> 11h v1.26.7-gke.500 gke-<name>-default-pool-75d48bfc-zl7k Ready <none> 11h v1.26.7-gke.500
Install Percona Everest¶
To install Percona Everest using Helm follow these steps:
-
Add the Percona Helm repository.
helm repo add percona https://percona.github.io/percona-helm-charts/ helm repo update -
Install Percona Everest.
helm install everest-core percona/everest \ --namespace everest-system \ --create-namespace🌐 Install Percona Everest and access it using Ingress
Prerequisite
-
An Ingress controller (e.g., Nginx) installed on your Kubernetes cluster
-
If TLS is required on your Ingress endpoint, a Secret containing the TLS certificates
Example
To install Percona Everest and access using Ingress, here are the steps:
-
Install Percona Everest:
Replacehelm install everest percona/everest \ -n everest-system \ --set ingress.enabled=true \ --set ingress.ingressClassName="" \ --set ingress.hosts[0].host=everest.example.com \ --set ingress.hosts[0].paths[0].path=/ \ --set ingress.hosts[0].paths[0].pathType=ImplementationSpecificeverest.example.comwith your own domain. -
Verify Ingress:
kubectl get ingress -n everest-systemMake sure the address provided is valid and that it correctly routes to the Percona Everest service.
Example: Custom YAML configuration file
Install Percona Everest using this file:ingress: # -- Enable ingress for Everest server enabled: true # -- Ingress class name. This is used to specify which ingress controller should handle this ingress. ingressClassName: "nginx" # -- Additional annotations for the ingress resource. annotations: {} # -- List of hosts and their paths for the ingress resource. hosts: - host: everest.example.com paths: - path: / pathType: ImplementationSpecific # -- TLS configuration for the ingress resource. # -- Each entry in the list specifies a TLS certificate and the hosts it applies to. tls: [] # - secretName: everest-tls # hosts: # - everest.example.comhelm install everest percona/everest \ -n everest-system \ -f everest-values.yaml🔒 Install Percona Everest with TLS enabled
Install Percona Everest with TLS enabled:
helm install everest-core percona/everest \ --namespace everest-system \ --create-namespace --set server.tls.enabled=trueFor comprehensive instructions on enabling TLS for Percona Everest, see the section TLS setup with Percona Everest.
Once Percona Everest is running successfully, you can create additional database namespaces. For detailed information, refer to the section on namespace management.
Note
- If
dbNamespace.namespaceOverrideis set, the specified namespace will be provisioned instead of the defaulteverestnamespace. - If
dbNamespace.enabled=falseis set, no namespaces will be provisioned. You can provision namespaces later with theeverestctl namespaces add <NAMESPACE>command. - If you installed Percona Everest using
helmand need to uninstall it, make sure to uninstall it exclusively throughhelmfor seamless removal.
-
Post-installation steps¶
Once you have successfully installed Percona Everest, proceed with the following steps:
-
Retrieve the
adminpassword.kubectl get secret everest-accounts -n everest-system -o jsonpath='{.data.users\.yaml}' | base64 --decode | yq '.admin.passwordHash'Note
The default admin password is stored in plain text. It is highly recommended to update the password using
everestctlto ensure that the passwords are hashed.For information on user management, see the section manage users in Percona Everest.
-
Access the Everest UI/API using one of the following options, as the
everestService is not exposed with an external IP by default:-
Use the following command to change the Everest service type to
LoadBalancer:helm install percona-everest percona/everest \ --set service.type=LoadBalancerWhen TLS is enabled
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE everest LoadBalancer 10.43.172.194 34.175.201.246 443:8080/TCP 10s -
Retrieve the external IP address for the Everest service. This is the address where you can then launch Everest at the end of the installation procedure. In this example, the external IP address used is
http://34.175.201.246.kubectl get svc/everest -n everest-system
To access Percona Everest, open your browser and go to:
https://everest.example.com.Note
Replace
everest.example.comwith your own domain.-
Run the following command to change the Everest service type to
NodePort:kubectl patch svc/everest -n everest-system -p '{"spec": {"type": "NodePort"}}' -
The following command displays the port assigned by Kubernetes to the everest service, which is
32349in this case.kubectl get svc/everest -n everest-system NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE everest NodePort 10.43.139.191 <none> 8080:32349/TCP 28mWhen TLS is enabled
kubectl get svc/everest -n everest-system NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE everest NodePort 10.43.139.191 <none> 443:32349/TCP 28m -
Retrieve the external IP addresses for the kubernetes cluster nodes.
Expected output
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME gke-everest-test-default-pool-8bbed860-65gx Ready <none> 3m35s v1.30.3-gke.1969001 10.204.15.199 34.175.155.135 Container-Optimized OS from Google 6.1.100+ containerd://1.7.19 gke-everest-test-default-pool-8bbed860-pqzb Ready <none> 3m35s v1.30.3-gke.1969001 10.204.15.200 34.175.120.50 Container-Optimized OS from Google 6.1.100+ containerd://1.7.19 gke-everest-test-default-pool-8bbed860-s0hg Ready <none> 3m35s v1.30.3-gke.1969001 10.204.15.201 34.175.201.246 Container-Optimized OS from Google 6.1.100+ containerd://1.7.19 -
To launch the Percona Everest UI and create your first database cluster, go to the IP address/port found in steps 2 and 3. In this example, the external IP address used is
http://34.175.155.135:32349. Nevertheless, you have the option to use any node IP specified in the above steps.
The
kubectl port-forwardcommand in Kubernetes is used to create a temporary connection between your local machine and a specific Kubernetes resource (e.g., a Pod, Service, or Deployment) by forwarding traffic from a local port to a port on the resource.-
Run the following command to setup a port-forward to the Percona Everest server service:
kubectl port-forward svc/everest 8080:8080 -n everest-systemPercona Everest will be available at
http://127.0.0.1:8080. This method is mostly useful for testing purposes.When TLS is enabled
kubectl port-forward svc/everest 8443:443 -n everest-systemPercona Everest will be available at
https://127.0.0.1:8443.
-