π Deployment Guide
A comprehensive guide to deploying CyberVault's enterprise security platform across your infrastructure. Follow these steps to get your threat detection, monitoring, and incident response systems running in under 30 minutes.
- Prerequisites & System Requirements
- System Architecture Overview
- Core Components
- Installation Steps
- 1. Initialize the Deployment
- 2. Configure Environment
- 3. Deploy the Platform
- 4. Install Agents
- 5. Verify & Validate
- Post-Deployment Configuration
- Verification & Health Checks
- Troubleshooting
- Rollback Procedures
Prerequisites & System Requirements
Before deploying CyberVault, ensure your environment meets the following requirements. Insufficient resources may impact detection accuracy and response times.
Kubernetes Cluster
K8s 1.25+ with RBAC enabled. Minimum 3 control plane nodes.
v1.25 β v1.30Resources
Minimum 16 CPU cores, 64 GB RAM, 500 GB SSD storage for the control plane.
16 vCPU / 64 GBContainer Runtime
containerd 1.6+ or Docker 24+. CRI-O also supported.
containerd 1.7+CyberVault License
Valid license key from your account portal. Trial keys accepted.
Enterprise / TrialNetwork Access
Outbound HTTPS to api.cybervault.io and updates.cybervault.io.
TLS 1.2+CLI Tools
kubectl 1.25+, Helm 3.12+, Docker/nerdctl for local builds.
Helm 3.12+For production deployments, we recommend a minimum of 32 CPU cores and 128 GB RAM. High-traffic environments (10,000+ endpoints) should provision 64+ cores and 256 GB RAM for optimal performance.
System Architecture Overview
CyberVault is designed as a distributed, fault-tolerant system deployed as native Kubernetes workloads. Below is the high-level architecture of a standard deployment.
CyberVault Deployment Architecture
| Component | Min CPU | Min Memory | Storage | Notes |
|---|---|---|---|---|
cve-threat-engine |
4 cores | 16 GB | 100 GB SSD | AI model inference β GPU optional |
cve-rule-processor |
2 cores | 8 GB | 50 GB SSD | Scales horizontally with event rate |
cve-response-engine |
2 cores | 8 GB | 20 GB SSD | Requires network policy permissions |
cve-agents |
0.5 core/agent | 512 MB/agent | 10 GB | Deployed as DaemonSet |
timescaledb |
4 cores | 16 GB | 200 GB NVMe | High IOPS recommended |
redis-cluster |
2 cores | 8 GB | 20 GB SSD | 3-node cluster minimum |
kafka |
4 cores | 16 GB | 200 GB SSD | 3 broker cluster recommended |
Installation Steps
Follow these steps in order to deploy CyberVault on your Kubernetes cluster. Each step builds on the previous one.
We recommend using our cve-deploy CLI tool which automates these steps. See the Quick Start Guide for a faster deployment using the CLI.
Initialize the Deployment
Create a new Kubernetes namespace and initialize the CyberVault Helm chart with your license key.
# Create dedicated namespace kubectl create namespace cybervault # Add the CyberVault Helm repository helm repo add cybervault https://charts.cybervault.io helm repo update # Initialize deployment with your license helm install cybervault cybervault/platform \ --namespace cybervault \ --set license.key="cv-prod-xxxx-xxxx-xxxx-xxxx" \ --set cluster.name="production-east-1" \ --set cluster.region="us-east-1" \ --set externalUrl="https://security.yourcompany.com" \ --wait --timeout 15m
Configure Environment Variables
Customize the deployment using a values override file. This controls network policies, resource limits, and integration endpoints.
# values.yaml β Custom deployment configuration license: key: "cv-prod-xxxx-xxxx-xxxx-xxxx" tier: "enterprise" cluster: name: "production-east-1" region: "us-east-1" environment: "production" threatEngine: replicas: 3 gpuEnabled: true models: behavioralAI: "v4.2-latest" networkAnomaly: "v4.1-stable" database: timescale: storage: "500Gi" storageClass: "gp3-encrypted" redis: replicas: 3 memoryLimit: "16Gi" networking: externalUrl: "https://security.yourcompany.com" ingressClass: "nginx" tls: enabled: true certManager: true integrations: siem: splunk: enabled: true endpoint: "https://siem.yourcompany.com:8088" token: ${SPLUNK_HEC_TOKEN} ticketing: jira: enabled: true baseUrl: "https://jira.yourcompany.com" messaging: slack: enabled: true webhook: ${SLACK_WEBHOOK_URL} channel: "#security-alerts"
Deploy the Platform
Apply your custom values and deploy the full CyberVault platform. The Helm chart will provision all required resources.
# Deploy with custom values file helm install cybervault cybervault/platform \ --namespace cybervault \ --values values.yaml \ --set-file integrations.siem.splunk.token=./splunk-token.txt \ --wait --timeout 30m # Verify deployment status kubectl get pods -n cybervault -w # Expected output β all pods should reach Running state # NAME READY STATUS RESTARTS # cve-threat-engine-0 3/3 Running 0 # cve-threat-engine-1 3/3 Running 0 # cve-threat-engine-2 3/3 Running 0 # cve-rule-processor-6d4f8b9c7-x2k9p 2/2 Running 0 # cve-response-engine-5c8d7f4a6-m3n8q 2/2 Running 0 # cve-agent-ds-7x4kp 1/1 Running 0 # cve-agent-ds-9m2nq 1/1 Running 0 # timescaledb-0 1/1 Running 0 # redis-cluster-0 1/1 Running 0 # redis-cluster-1 1/1 Running 0 # redis-cluster-2 1/1 Running 0 # kafka-0 3/3 Running 0 # kafka-1 3/3 Running 0 # kafka-2 3/3 Running 0
Install Endpoint Agents
Deploy the CVE agent DaemonSet to collect telemetry from all nodes and workloads. The agent operates with minimal overhead (< 2% CPU, < 128 MB RAM).
# Deploy CVE agent as DaemonSet across all namespaces helm install cve-agent cybervault/agent \ --namespace cybervault \ --set collector.endpoint="cve-ingress.cybervault.svc:8443" \ --set collection.mode="full" \ --set collection.processes=true \ --set collection.network=true \ --set collection.filesystem=true \ --set collection.containerEvents=true \ --set collection.kubernetesAudit=true \ --set collection.ebpfEnabled=true # Verify agents are running on all nodes kubectl get daemonset cve-agent -n cybervault # Expected: DESIRED = CURRENT = READY # NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE # cve-agent 12 12 12 12 12
When ebpfEnabled: true, the agent uses eBPF for zero-overhead system call tracing. This requires Linux kernel 5.4+ and the sysctl setting kernel.unprivileged_bpf_disabled=0. For systems where eBPF is unavailable, the agent falls back to standard procfs collection.
Verify & Validate Deployment
Run the built-in validation suite to confirm all components are healthy and communicating.
# Run the deployment validator kubectl exec -it cve-threat-engine-0 -n cybervault -- \ cve-cli validate --full # Validation Results: # # β Threat Engine β All 3 replicas healthy # β Rule Processor β 847 rules loaded # β Response Engine β Playbooks loaded (24 active) # β TimescaleDB β Connected, replication lag: 2ms # β Redis Cluster β 3/3 nodes, 0 failovers # β Kafka β 3/3 brokers, topic lag: 0 # β CVE Agents β 12/12 reporting telemetry # β Ingress β TLS certificate valid (expires: 2025-12-01) # β License β Enterprise tier, valid until 2026-06-15 # β SIEM Integration β Splunk HEC connected # β Slack Webhook β Deliverability confirmed # # π Deployment validation PASSED (11/11 checks)
Post-Deployment Configuration
After the core platform is running, configure the following to tailor CyberVault to your environment.
Access the Web Console
The CyberVault management console is available at your configured externalUrl. Log in with the initial admin credentials:
# Retrieve initial admin password kubectl get secret cve-admin-creds -n cybervault -o jsonpath="{.data.password}" | base64 -d # Initial login: # URL: https://security.yourcompany.com # Username: admin # Password: <retrieved from secret>
You must change the default admin password on first login. You will also be prompted to enable multi-factor authentication (MFA). Failure to do so within 24 hours will lock the admin account.
Configure Detection Rules
CyberVault ships with 847 pre-configured detection rules covering MITRE ATT&CK techniques. Customize and add your own:
# Custom Sigma-style detection rule rule: id: "cv-custom-001" name: "Suspicious Kubernetes RBAC Escalation" description: "Detects attempts to modify cluster-role-bindings" severity: "high" mitre: tactic: "privilege-escalation" technique: "T1098.003" conditions: event.type: "k8s.audit" event.verb: "create" event.resource: "clusterrolebindings" event.user.role: "!cluster-admin" response: playbook: "auto-quarantine-user" notify: - slack - jira - pagerduty
# Deploy custom rule via CLI cve-cli rules upload ./custom-rule.yaml \ --namespace cybervault \ --enable # Verify rule is active cve-cli rules list --filter "id:cv-custom-001" # Output: # ID: cv-custom-001 # Name: Suspicious Kubernetes RBAC Escalation # Status: β ACTIVE # Severity: HIGH # Last Triggered: Never
Set Up Network Policies
Restrict network traffic to and from CyberVault components using Kubernetes NetworkPolicy:
# Restrict ingress to only the Ingress Controller apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: cve-ingress-only namespace: cybervault spec: podSelector: matchLabels: app: cve-ingress policyTypes: - Ingress ingress: - from: - namespaceSelector: matchLabels: name: ingress-nginx ports: - protocol: TCP port: 8443
Verification & Health Checks
Confirm your deployment is functioning correctly with these verification steps.
API Health Endpoint
# Check overall system health curl -s https://security.yourcompany.com/api/v1/health | jq . # Expected response: # { # "status": "healthy", # "components": { # "threatEngine": { "status": "healthy", "uptime": "14d 6h 23m" }, # "ruleProcessor": { "status": "healthy", "rulesLoaded": 847 }, # "responseEngine": { "status": "healthy", "playbooks": 24 }, # "database": { "status": "healthy", "connections": 142 }, # "messageBus": { "status": "healthy", "lag": "0ms" } # }, # "agents": { "online": 12, "offline": 0 }, # "events": { "processed": 2847291, "blocked": 12043 } # }
Generate a Test Event
Create a safe test event to verify the full detection pipeline:
# Generate a synthetic test alert (safe, won't trigger real response) cve-cli test alert generate \ --type "simulated-malware" \ --severity "high" \ --source "192.168.1.100" # Expected: Alert created β Rules evaluated β Slack notification sent # β Test alert processed successfully in 42ms # β 2 rules matched: cv-base-012, cv-custom-005 # β Notification sent to: #security-alerts # β Jira ticket created: SEC-1847
If all health checks pass and your test alert was processed correctly, your CyberVault deployment is operational. Navigate to the web console to explore your security posture dashboard.
Troubleshooting
Common issues and their solutions.
Pods stuck in ContainerCreating
# Diagnose with describe kubectl describe pod <pod-name> -n cybervault | grep -A 5 "Events:" # Common fix: Image pull failure β verify image registry access kubectl create secret docker-registry regcred \ --namespace cybervault \ --docker-server=registry.cybervault.io \ --docker-username=${REGISTRY_USER} \ --docker-password=${REGISTRY_PASS}
Agent telemetry not reaching the platform
# Check agent logs for connection errors kubectl logs -n cybervault -l app=cve-agent --tail 50 # Verify DNS resolution inside the agent pod kubectl exec -it cve-agent-ds-xxxxx -n cybervault -- \ nslookup cve-ingress.cybervault.svc # Verify connectivity to the ingress endpoint kubectl exec -it cve-agent-ds-xxxxx -n cybervault -- \ curl -k https://cve-ingress.cybervault.svc:8443/health
License validation fails
Ensure your cluster has outbound HTTPS access to api.cybervault.io on port 443. The platform performs online license validation on startup and every 24 hours. If offline validation is needed, contact your CyberVault account manager to configure an offline license file.
Rollback Procedures
If you need to rollback or uninstall CyberVault, follow these procedures carefully.
Rollback to Previous Version
# View release history helm history cybervault -n cybervault # Rollback to previous revision helm rollback cybervault 2 -n cybervault --wait --timeout 15m # Verify rollback kubectl get pods -n cybervault -w
Full Uninstall
This will remove all CyberVault resources and permanently delete all telemetry data. Ensure you have exported any critical alerts and reports before proceeding.
# Export data before uninstall (recommended) cve-cli data export --format "json" --output ./export-$(date +%Y%m%d).json # Uninstall platform and agent helm uninstall cve-agent -n cybervault helm uninstall cybervault -n cybervault # Remove PersistentVolumeClaims (manual β data will be lost) kubectl delete pvc -n cybervault -l release=cybervault # Remove namespace kubectl delete namespace cybervault