OpenEverest quick install guide¶
Helm simplifies the installation of OpenEverest. With this guide, you’ll be up and running with OpenEverest in no time. However, we also have a comprehensive installation guide that covers all possibilities.
OpenEverest 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 OpenEverest using everestctl.
Prerequisites¶
Before getting started with OpenEverest, do the following:
-
Install Helm v3 .
-
Install yq .
-
Set up a Kubernetes cluster.
Note
OpenEverest assists with installing all the necessary operators and required packages, but does not deploy a Kubernetes cluster.
We recommend setting up OpenEverest 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 OpenEverest. By default, OpenEverest 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 OpenEverest¶
To install OpenEverest using Helm follow these steps:
-
Add the OpenEverest Helm repository.
helm repo add percona https://percona.github.io/percona-helm-charts/ helm repo update -
Install OpenEverest.
helm install everest-core percona/everest \ --namespace everest-system \ --create-namespace🌐 Install OpenEverest 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 OpenEverest and access using Ingress, here are the steps:
-
Install OpenEverest:
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
everestservice.
Example: Custom YAML configuration file
Install OpenEverest 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 OpenEverest with TLS enabled
Install OpenEverest 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 OpenEverest, see the section TLS setup with OpenEverest.
Once OpenEverest 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 OpenEverest using
helmand need to uninstall it, make sure to uninstall it exclusively throughhelmfor seamless removal.
-
Post-installation steps¶
Once you have successfully installed OpenEverest, 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 OpenEverest.
-
Access the OpenEverest 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
everestservice. This is the address where you can then launch OpenEverest at the end of the installation procedure. In this example, the external IP address used ishttp://34.175.201.246.kubectl get svc/everest -n everest-system
To access OpenEverest, 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 OpenEverest 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 OpenEverest server service:
kubectl port-forward svc/everest 8080:8080 -n everest-systemOpenEverest 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-systemOpenEverest will be available at
https://127.0.0.1:8443.
-