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 |
| 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!
...
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