Install OpenEverest
OpenEverest is installed with Helm in two parts:
- The core — the
openeverest/openeverestchart. It installs the server (UI and API), the controller, the custom resource definitions and the Plugin Hub into theeverest-systemnamespace. - One or more providers — one chart per technology. See Add providers.
OpenEverest 2 is a Developer Preview. Install it on a fresh cluster: there is no upgrade path from OpenEverest 1.x yet, and running 1.x and 2 in the same cluster is not supported.
Check the prerequisites first.
Install the core
-
Add the OpenEverest Helm repository:
helm repo add openeverest https://openeverest.github.io/helm-charts/helm repo update -
Install the chart:
helm install everest-core openeverest/openeverest \--devel \--namespace everest-system \--create-namespace--devellets Helm select pre-release versions. To install a specific version, add--version, for example--version 2.0.0-dev.4. List the available versions withhelm search repo openeverest/openeverest --devel --versions. -
Check that the core is running:
kubectl get pods -n everest-systemNAME READY STATUS RESTARTS AGEeverest-controller-5474b99686-mw5c9 1/1 Running 0 40severest-core-plugin-hub-566d44f99-k7554 1/1 Running 0 40severest-server-7b6db64b79-728z8 1/1 Running 0 40s -
Add at least one provider. Without providers, OpenEverest has no technology to deploy.
Log in
OpenEverest creates an admin user during installation. Unless you set a password, it generates a random one:
kubectl get secret everest-accounts -n everest-system \
-o jsonpath='{.data.users\.yaml}' | base64 --decode | yq '.admin.passwordHash'
In the Developer Preview, the initial password is stored in this Secret in plain text. Change it after your first login — see Users.
Expose OpenEverest
The everest service has the type ClusterIP by default, so OpenEverest is not reachable from outside the cluster. Choose one of the options below.
- Port forwarding
- Load balancer
- Ingress
- NodePort
Good for testing. Forward the service to your machine:
kubectl port-forward svc/everest 8080:8080 -n everest-system
Open http://localhost:8080. With TLS enabled, forward port 443 instead and open https://localhost:8443:
kubectl port-forward svc/everest 8443:443 -n everest-system
Change the service type to LoadBalancer:
helm upgrade everest-core openeverest/openeverest \
--namespace everest-system \
--reuse-values \
--set server.service.type=LoadBalancer
Get the external address once the load balancer is provisioned:
kubectl get svc everest -n everest-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
everest LoadBalancer 10.43.172.194 34.175.201.246 8080:31925/TCP 10s
Open http://<EXTERNAL-IP>:8080. To select a load balancer implementation, set server.service.loadBalancerClass.
You need an Ingress controller in the cluster. Enable the Ingress in the chart and set your host name:
ingress:
enabled: true
ingressClassName: nginx
hosts:
- host: everest.example.com
paths:
- path: /
pathType: ImplementationSpecific
tls:
- secretName: everest-tls
hosts:
- everest.example.com
helm upgrade everest-core openeverest/openeverest \
--namespace everest-system \
--reuse-values \
-f everest-values.yaml
Check that the Ingress has an address:
kubectl get ingress -n everest-system
Change the service type to NodePort:
helm upgrade everest-core openeverest/openeverest \
--namespace everest-system \
--reuse-values \
--set server.service.type=NodePort
Find the assigned port and the address of any node:
kubectl get svc everest -n everest-system
kubectl get nodes -o wide
Open http://<node-address>:<node-port>.
Configure the installation
You can pass values with --set or with a values file (-f values.yaml). The most common ones:
| Value | Default | Description |
|---|---|---|
server.initialAdminPassword | random | Password of the admin user created at installation. |
server.service.type | ClusterIP | Type of the everest service: ClusterIP, NodePort or LoadBalancer. |
server.tls.enabled | false | Serve the UI and API over HTTPS. See TLS. |
server.oidc.issuerUrl, server.oidc.clientId | — | Enable single sign-on at installation. See Single sign-on. |
server.rbac.enabled, server.rbac.policy | false | Enable role-based access control at installation. See RBAC. |
server.apiRequestsRateLimit | 100 | API requests allowed per second. See API rate limiting. |
ingress.* | disabled | Ingress for the UI and API. |
plugins.hub.enabled | true | Install the Plugin Hub. |
telemetry | true | Send anonymous usage data. See Telemetry. |
server.initialAdminPassword, server.oidc and server.rbac are applied at installation only. To change these settings later, follow the linked pages.
To see every available value:
helm show values openeverest/openeverest --devel