EVA Agent Dependencies
This is an installation guide for the Dependencies required to run EVA Agent.
Before installing EVA Agent, you must first set up the infrastructure for Qdrant (vector DB) for data storage and vLLM for model inference.
This guide explains how to install the foundational dependency packages for EVA.
Understanding the Installation Structure
To ensure a successful installation, please check the dependencies and the required order between packages.
- eva-agent-init: Defines the Storage Class. (Must be installed first)
- qdrant / vllm: Uses the storage defined above to store data.
- eva-agent: Installed last, after the above services are fully prepared.
Prerequisites
Please verify that the required CLI tools are installed.
-
kubectl: Cluster control tool Installation
-
helm: Package management tool Installation
-
kustomize: Configuration customization tool (required for post-rendering)
# Install kustomize binary (Linux)
curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash
chmod +x kustomize
sudo mv kustomize /usr/local/bin/
kustomize version -
On-premise setup (not required when using cloud services such as AWS or NCP)
-
Install k3s
curl -sfL https://get.k3s.io | sudo sh -s - --docker
mkdir -p $HOME/.kube
sudo cp /etc/rancher/k3s/k3s.yaml $HOME/.kube/config
sudo chown $(id -un):$(id -gn) $HOME/.kube/config
kubectl version -
Install NFS CSI Driver
helm repo add csi-driver-nfs https://raw.githubusercontent.com/kubernetes-csi/csi-driver-nfs/master/charts
helm repo update
helm install csi-driver-nfs csi-driver-nfs/csi-driver-nfs --namespace kube-system --version v4.11.0 -
Install NFS server & expose the directory
sudo apt update
sudo apt install nfs-kernel-server -y
NFS_SHARE_PATH=/data001/share/eva-agent
sudo mkdir -p ${NFS_SHARE_PATH}
# Create cache directories for EVA Agent / vLLM
# Set ownership/permissions on the NFS server
sudo mkdir -p ${NFS_SHARE_PATH}/agent-cache ${NFS_SHARE_PATH}/vllm-cache
sudo chown -R 10001:10001 ${NFS_SHARE_PATH}
sudo chmod -R 0775 ${NFS_SHARE_PATH}
# Allow NFS share only for localhost (assumes single-node k3s)
# Change the IP address if you need to share to a different node
echo "${NFS_SHARE_PATH} 127.0.0.1(rw,sync,no_subtree_check,root_squash,anonuid=10001,anongid=10001)" | sudo tee -a /etc/exports
sudo exportfs -ra
sudo systemctl restart nfs-kernel-server
# test
showmount -e localhost
sudo mkdir /mnt/tmp && sudo mount -t nfs -o rw,nfsvers=4 localhost:${NFS_SHARE_PATH} /mnt/tmp
sudo umount /mnt/tmp
-
Register and Update Helm Repositories
Register all required open-source repositories and keep them up to date. Also set up the namespace for EVA Agent installation in advance.
# 1. Add each repository
helm repo add qdrant https://qdrant.github.io/qdrant-helm
helm repo add eva-agent https://mellerikat.github.io/eva-agent
# 2. Update to the latest information
helm repo update
# 3. Create the namespace/service account for EVA Agent
kubectl create namespace eva-agent
kubectl create serviceaccount sa-eva-agent -n eva-agent
Step 1: Install eva-agent-init
This package is a critical step that pre-defines a common Storage Class so that Qdrant and vLLM (installed later) can smoothly store data.
- Package role:
- It configures a dedicated storage class to ensure
eva-agent-vllmandeva-agent-qdrantcan store data safely. - Therefore, it must be installed first, before any other packages.
- It configures a dedicated storage class to ensure
Download Configuration Files (eva-agent-init)
Download the configuration files above from the GitHub repository. Choose the file that matches your environment.
Values templates are organized by values template release.
For EVA Agent 3.0.4, use the latest release/3.0.4 values templates.
Helm charts and images use separate versions.
Recommended chart versions for EVA Agent 3.0.4:
| Component | Chart version |
|---|---|
eva-agent-init | 1.0.0 |
qdrant | 1.16.3 |
eva-agent-vllm | 3.0.4 |
# Example: download k3s values
RELEASE_VERSION="3.0.4"
BASE_URL="https://raw.githubusercontent.com/mellerikat/eva-agent/chartmuseum/release/3.0.4"
mkdir -p eva-agent-init
curl -L \
"$BASE_URL/eva-agent-init/values-k3s.yaml" \
-o eva-agent-init/values-k3s.yaml
If you use k3s + NFS, the share directory in values-k3s.yaml must match the mount directory on the NFS server (e.g., {NFS_SHARE_PATH}).
Model caches can require tens of GB (or more), so use an NFS mount path on a disk with sufficient capacity (recommended: a data disk mount if available).
# (Optional) k3s + NFS: set share path to your NFS mount directory
NFS_SHARE_PATH="/data001/share/eva-agent"
# Update storageClass.fileSystem.parameters.share
sed -i "s|^[[:space:]]*share:.*| share: $NFS_SHARE_PATH|" eva-agent-init/values-k3s.yaml
# Example: install for k3s environment
helm install eva-agent-init eva-agent/eva-agent-init \
--version=1.0.0 \
-n eva-agent \
-f eva-agent-init/values-k3s.yaml
Step 2: Configure eva-agent-qdrant values
Install the Qdrant DB to store vector data.
- values templates: Find required templates in the GitHub repository.
- Detailed value descriptions: See the Artifact Hub Qdrant page for full parameters.
💡 Note: PVCs/PVs are created using the Storage Class defined in
eva-agent-init. Existing PVs are preserved during reinstallation, but you must usekubectl deletefor manual cleanup if you wish to remove them entirely.
Update Settings for Your Environment
| Category | Name | Description | Value |
|---|---|---|---|
| General | nameOverride | Chart name override | eva-agent-qdrant |
| General | fullnameOverride | Full resource name override | "" |
| ServiceAccount | serviceAccount.create | Create ServiceAccount | false |
| ServiceAccount | serviceAccount.name | ServiceAccount name | sa-eva-agent |
| Image | image.pullPolicy | Image pull policy | Always |
| Storage | persistence.accessModes | PVC access modes | ["ReadWriteOnce"] |
| Storage | persistence.size | PVC size allocated to Qdrant | 10Gi |
| Storage | persistence.annotations | Annotations for PVC/PV (add if needed) | {} |
| Storage | persistence.storageVolumeName | (Depends on environment) PV/volume identifier name | eva-agent-qdrant-storage |
| Storage | persistence.storageClassName | StorageClass name | eva-agent-sc-bs |
| Snapshot | snapshotPersistence.enabled | Enable dedicated snapshot PVC persistence | true |
| Snapshot | snapshotPersistence.accessModes | Snapshot PVC access modes | ["ReadWriteOnce"] |
| Snapshot | snapshotPersistence.size | Snapshot PVC size | 10Gi |
| Snapshot | snapshotPersistence.annotations | Annotations for snapshot PVC/PV | {} |
| Snapshot | snapshotPersistence.snapshotsVolumeName | PV/volume identifier for snapshot storage | eva-agent-qdrant-snapshots |
| Snapshot | snapshotPersistence.storageClassName | StorageClass name for snapshot PVC | eva-agent-sc-bs |
| Snapshot | snapshotRestoration.enabled | Optional advanced setting to mount an external restore-source PVC (commented by default) | false (commented) |
| Snapshot | snapshotRestoration.pvcName | External restore-source PVC name (optional, commented by default) | qdrant-snapshot-restore-pvc |
| Snapshot | snapshotRestoration.mountPath | Mount path for external restore source (optional, commented by default) | /qdrant/snapshot-restoration |
| Snapshot | snapshotRestoration.snapshots | Snapshot file list to restore (optional, commented by default) | [] |
| Scheduling | nodeSelector | Node label selector (schedule only on specific nodes) | |
Download Configuration Files (eva-agent-qdrant)
Download one standalone provider values file and the post-renderer plugin templates for Qdrant.
- k3s values template
- AWS values template
- NCP values template
- Post renderer template
- Post renderer plugin metadata
RELEASE_VERSION="3.0.4"
BASE_URL="https://raw.githubusercontent.com/mellerikat/eva-agent/chartmuseum/release/3.0.4"
# Prepare directories
mkdir -p eva-agent eva-agent-init eva-agent-qdrant eva-agent-vllm \
plugin/eva-agent-qdrant
# Qdrant standalone provider values & plugin
curl -L "$BASE_URL/eva-agent-qdrant/values-k3s.yaml" -o eva-agent-qdrant/values-k3s.yaml
curl -L "$BASE_URL/eva-agent-qdrant/values-aws.yaml" -o eva-agent-qdrant/values-aws.yaml
curl -L "$BASE_URL/eva-agent-qdrant/values-ncp.yaml" -o eva-agent-qdrant/values-ncp.yaml
curl -L "$BASE_URL/plugins/eva-agent-qdrant/post-renderer.sh" -o plugin/eva-agent-qdrant/post-renderer.sh
curl -L "$BASE_URL/plugins/eva-agent-qdrant/plugin.yaml" -o plugin/eva-agent-qdrant/plugin.yaml
Qdrant recovery-related values
This installation guide does not include restore procedures. Use the value settings below as operational references:
snapshotPersistence.enabled- Keep
trueso/qdrant/snapshotsis persisted on PVC.
- Keep
snapshotRestoration.enabled- Optional advanced setting to mount an external PVC as a recovery source path.
snapshotRestoration.pvcName- External PVC name used only when
snapshotRestoration.enabled=true.
- External PVC name used only when
snapshotRestoration.mountPath- Mount path for external recovery source files.
args- Keep chart default startup command:
["./config/initialize.sh"].
- Keep chart default startup command:
Qdrant and vLLM installation will be performed together in the script execution step below.
Step 3: Configure eva-agent-vllm values
Install vLLM, the model inference server. (Agent image version 2.2-a2.0 or later is required)
- values templates: Available in the GitHub repository.
- Chart source: This guide installs the custom chart
eva-agent/eva-agent-vllmfrom theeva-agentHelm repository. - Detailed value descriptions: Use the release templates in the
eva-agent-vllmdirectory first; Artifact Hub vLLM-stack can be used as an optional engine-level reference. - Key setting: For smooth dynamic allocation of PVC/PV, make sure
nodeSelectoris configured correctly.