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
Requiredlicense.activation_typeLicense activation method used by the EVA App (online or offline).onlineonline
Requiredlicense.product_codeProduct code required for license authentication.......
Requiredlicense.api_keyAPI key used for license validation with the license server.......
Requiredlicense.shared_keyShared secret key used for secure license verification.......
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!
...
Application Details:
App Version : 2.2.6
Chart Version : 1.3.2
Release Name : eva-app
Namespace : eva-app

You can access "EVA App" using the following URL:
EVA App : http://10.158.2.75:32055

You can check helm instance by running:
$ helm ls -n eva-app

You can check kubernetes objects by running:
$ kubectl get all -n eva-app

For further information, visit https://mellerikat.com

The following procedure allows you to confirm whether the database migration has been successfully executed and whether the latest schema version has been correctly applied.

1. Check EVA App Pod Name

kubectl get pods -n eva-app

2. Check the Alembic Revision Applied to the Current Database

kubectl exec -it {eva-app-xxxx} -n eva-app -- alembic current

Verify that the Alembic revision value shown above matches the Alembic revision listed in the Release Notes for the corresponding software version.