Getting Started
This guide takes you from zero to your first malware detection in under 5 minutes. You need a Kubernetes cluster with cluster-admin access.
Prerequisites
- Kubernetes 1.24+ or OpenShift 4.10+ cluster
kubectlconfigured with cluster-admin permissionshelmv3.8+ installed- Outbound HTTPS access from cluster nodes to
api.guardimesh.com
Node Resource Requirements
Each node running the scanner DaemonSet needs sufficient CPU and memory for the scanner pod (5 containers). The defaults from the Helm chart are:
| Container | CPU Request | Memory Request | CPU Limit | Memory Limit |
|---|---|---|---|---|
| Scanner | 100m | 256Mi | 1 | 512Mi |
| Antivirus (ClamAV) | 200m | 2Gi | 2 | 3Gi |
| Inspector | Not set | Not set | Not set | Not set |
| Signature Puller | Not set | Not set | Not set | Not set |
| Obfuscation Scanner | Not set | Not set | Not set | Not set |
The operator pod runs once per cluster (not per node) and requires 10m CPU / 64Mi memory.
In total, each node needs at least 300m CPU and ~2.3Gi memory available for Guardimesh. ClamAV requires substantial memory to load its signature databases — if antivirus containers are OOMKilled, increase scanner.scanner.antivirusResources.limits.memory in your Helm values. See the Configuration Reference for all resource settings.
Step 1: Create an Account
Sign up at guardimesh.com/register using email, Google, or GitHub authentication.
New accounts start with a 7-day free trial — no credit card required. The trial includes 2 nodes and full scanning capabilities (except fanotify real-time monitoring).
Step 2: Generate an API Key
- Log in to the web console
- Navigate to API Keys in the sidebar
- Click Create API Key
- Copy the key — it is only shown once
Step 3: Install with Helm
helm install guardimesh-operator \
oci://quay.io/guardimesh/guardimesh-operator \
--namespace guardimesh-system \
--create-namespace \
--version 0.1.0 \
--set apiKey=YOUR_API_KEY_HERE
This deploys:
- The Guardimesh operator (manages the scanner lifecycle)
- A
GuardimeshScannercustom resource - A scanner DaemonSet (one pod per node)
Step 4: Verify the Installation
Wait for all pods to reach Running status:
kubectl get pods -n guardimesh-system -w
Expected output (for a 2-node cluster):
NAME READY STATUS RESTARTS AGE
guardimesh-operator-7d8f9c6b4-x2k9p 1/1 Running 0 30s
guardimeshscanner-scanner-node1-abc12 5/5 Running 0 25s
guardimeshscanner-scanner-node2-def34 5/5 Running 0 25s
Each scanner pod runs 5 containers (scanner, antivirus, inspector, puller, obfuscation-scanner). All 5 must be ready.
Check the DaemonSet:
kubectl get daemonset -n guardimesh-system
The DESIRED count should match the number of schedulable nodes in your cluster (minus any skipped namespaces like kube-system).
Step 5: Trigger a Test Detection
Deploy a test pod containing the EICAR test file (a harmless file universally recognized as a malware test signature):
kubectl run guardimesh-test \
--image=quay.io/guardimesh/test-container:latest \
--restart=Never \
--namespace=default
The scanner will detect the test file within seconds. You should see a finding in the web console under Scan Results with signature Eicar-Test-Signature.