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.
| Category | Name | Description | On-premise | Cloud (AWS) |
|---|---|---|---|---|
| Env Settings | configMap.data.BACKEND_HOST | Specifies the backend server host. | 127.0.0.1 | eva.try-mellerikat.com |
| Env Settings | BACKEND_SECURE | Whether to use HTTPS (set to false for HTTP). | false | true |
| Env Settings | database.mysql.create | Whether to create a MySQL instance. | true | false (Use RDS) |
| Env Settings | pv.create | Whether to create a Persistent Volume (PV). | false | true |
| Env Settings | pvc.create | Whether to create a Persistent Volume Claim (PVC). | false | true |
| Env Settings | serviceAccount.create | Whether to create a Service Account (SA). | true | false |
| Env Settings | volume.hostPath.enabled | Whether to mount a local path. | true | false |
| Required | Secret.data.AWS_ACCESS_KEY | AWS Access Key for ECR/S3 access. | ak~ | ak~ |
| Required | Secret.data.AWS_SECRET_KEY | AWS Secret Key for ECR/S3 access. | sk~ | sk~ |
| Required | configMap.data.LLM_URL | Address of the LLM required for EVA. | http://xx.xxx.xx.x | http://xx.xxx.xx.x |
| Required | configMap.data.VLM_URL | Address of the VLM required for EVA. | http://xx.xxx.xx.x | http://xx.xxx.xx.x |
| Required | license.activation_type | License activation method used by the EVA App (online or offline). | online | online |
| Required | license.product_code | Product code required for license authentication. | ... | ... |
| Required | license.api_key | API key used for license validation with the license server. | ... | ... |
| Required | license.shared_key | Shared secret key used for secure license verification. | ... | ... |
| Performance | PIPELINE_JOB_DETECTOR_NUM | Concurrent threads for detection tasks. Increase to 2+ for high camera counts. | 2 | 2 |
| Performance | SQLALCHEMY_POOL_SIZE | Base DB connection pool size. Increase for high API traffic. | 15 | 15 |
| Performance | ALERT_EXPIRE_DAYS | Retention period for alerts and images (in days). | 30 | 30 |
| Performance | INGESTER_STREAM_FPS | Default FPS for streaming. Adjust based on network/hardware. | 15 | 15 |
📂 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.