Skip to main content

EVA App Installation

This guide provides instructions for a fast and stable installation of the EVA App in a Kubernetes environment.


🛠️ Prerequisites

Before starting the installation, please ensure the following tools and environments are ready:

  • Kubernetes Cluster: A cluster where EVA will be deployed.
  • kubectl: Go to Installation Guide
  • Helm: Go to Installation Guide
  • AWS CLI Configuration: AWS credentials are required for ECR image access. Configure them by running the following command in your terminal:
aws configure
# Enter your AWS Access Key ID, Secret Access Key, etc., as prompted.



🚀 Installing EVA App

Step 1: Register Helm Repository

First, add the Helm repository for the EVA App deployment.

helm repo add eva-app https://mellerikat.github.io/eva-app
helm repo update



Step 2: Prepare Configuration File (values.yaml)

Download the default configuration template to your current directory.

helm show values eva-app/eva-app > values.yaml



Step 3: Update Settings for Your Environment

Open the downloaded values.yaml file and modify the settings to match your environment. Key configuration values differ between On-premise (self-hosted) and Cloud (AWS) environments; please refer to the table below.

CategoryNameDescriptionOn-premiseCloud (AWS)
Env SettingsconfigMap.data.BACKEND_HOSTSpecifies the backend server host.127.0.0.1eva.try-mellerikat.com
Env SettingsBACKEND_SECUREWhether to use HTTPS (set to false for HTTP).falsetrue
Env Settingsdatabase.mysql.createWhether to create a MySQL instance.truefalse (Use RDS)
Env Settingspv.createWhether to create a Persistent Volume (PV).falsetrue
Env Settingspvc.createWhether to create a Persistent Volume Claim (PVC).falsetrue
Env SettingsserviceAccount.createWhether to create a Service Account (SA).truefalse
Env Settingsvolume.hostPath.enabledWhether to mount a local path.truefalse
RequiredSecret.data.AWS_ACCESS_KEYAWS Access Key for ECR/S3 access.ak~ak~
RequiredSecret.data.AWS_SECRET_KEYAWS Secret Key for ECR/S3 access.sk~sk~
RequiredconfigMap.data.LLM_URLAddress of the LLM required for EVA.http://xx.xxx.xx.xhttp://xx.xxx.xx.x
RequiredconfigMap.data.VLM_URLAddress of the VLM required for EVA.http://xx.xxx.xx.xhttp://xx.xxx.xx.x
PerformancePIPELINE_JOB_DETECTOR_NUMConcurrent threads for detection tasks. Increase to 2+ for high camera counts.22
PerformanceSQLALCHEMY_POOL_SIZEBase DB connection pool size. Increase for high API traffic.1515
PerformanceALERT_EXPIRE_DAYSRetention period for alerts and images (in days).3030
PerformanceINGESTER_STREAM_FPSDefault FPS for streaming. Adjust based on network/hardware.1515

📂 On-premise environment values.yaml example (Click)
# Default configuration for eva-app.
configMap:
data:
BROWSER_TITLE_NAME: "EVA"
BACKEND_HOST: "10.158.2.75"
BACKEND_SECURE: false
ALOML_EXECUTE_MODE: "cluster"
LLM_URL: http://10.178.97.139:8200
VLM_URL: http://10.178.97.139:8200
PIPELINE_JOB_DETECTOR_NUM: 1
INGESTER_STREAM_FPS: 30
INGESTER_ASSIGNER: true

database:
name: "eva"
mysql:
create: true
service:
nodePort: 32066
password: passwd
user: root

image:
repository: 339713051385.dkr.ecr.ap-northeast-2.amazonaws.com/mellerikat/release/eva-app
pullPolicy: IfNotPresent

serviceAccount:
create: true

secret:
data:
AWS_ACCESS_KEY: ak
AWS_SECRET_KEY: sh

volume:
enabled: true
hostPath:
enabled: true
path: ""

☁️ Cloud (AWS EKS) environment values.yaml example (Click)
configMap:
data:
BACKEND_HOST: eva.try-mellerikat.com
BACKEND_SECURE: true
DEPLOYED_CLUSTER: eks
LLM_URL: http://eva-agent.eva-agent.svc.cluster.local:8086
VLM_URL: http://eva-agent.eva-agent.svc.cluster.local:8086

database:
mysql:
create: false
rds:
host: rds-an2-iac-prod-eva-mysql.xxxx.ap-northeast-2.rds.amazonaws.com
port: 3310

pv:
create: true
storageClassName: efs-sc-eva-app

pvc:
create: true

nodeSelector:
nodegroup: ng-an2-eva-app

Step 4: Run Installation Command

Now, deploy the EVA App with the configured settings. This command automatically retrieves the ECR login password.

# 1. Get AWS ECR login password
ecr_password=$(aws ecr get-login-password --region "ap-northeast-2")

# 2. Create dedicated namespace
kubectl create namespace eva-app

# 3. Start Helm installation
helm install eva-app eva-app/eva-app \
-n eva-app \
-f values.yaml \
--set imagePullSecrets.password="${ecr_password}"

Step 5: Verify Installation

Once the installation is complete, a success message with a train-shaped ASCII art and the access URL will be displayed in your terminal.

NAME: eva-app
STATUS: deployed
REVISION: 1
NOTES:
. ___ __ __ ___ ___ _ __ _ __
| __| \ \ / / / \ o O O / \ | '_ \ | '_ \
| _| \ V / | - | o | - | | .__/ | .__/
|___| _\_/_ |_|_| TS__[O] |_|_| |_|__ |_|__
_|"""""|_| """"|_|"""""| {======|_|"""""|_|"""""|_|"""""|
"`-0-0-'"`-0-0-'"`-0-0-'./o--000'"`-0-0-'"`-0-0-'"`-0-0-'

eva-app has been installed successfully!
...
You can access "EVA App" using the following URL:
EVA App : http://10.158.2.75:32055

Verify if the pods are running correctly with the following command:

kubectl get pods -n eva-app