Skip to content

Commit ebc4d11

Browse files
Add docker image for golang based metlo agent (#194)
Co-authored-by: Akshay Shekhawat <[email protected]>
1 parent 4558cb3 commit ebc4d11

File tree

6 files changed

+43
-8
lines changed

6 files changed

+43
-8
lines changed

Makefile

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ build-dockers:
22
docker build -f deploy/backend/Dockerfile -t metlo/backend:latest .
33
docker build -f deploy/frontend/Dockerfile -t metlo/frontend:latest .
44
docker build -f deploy/jobrunner/Dockerfile -t metlo/jobrunner:latest .
5-
docker build -f deploy/suricata-daemon/Dockerfile -t metlo/suricata-daemon:latest .
5+
docker build -f deploy/metlo-daemon-agent/Dockerfile -t metlo/agent:latest .
66

77
push-latest-dockers:
88
docker push metlo/backend:latest
99
docker push metlo/frontend:latest
1010
docker push metlo/jobrunner:latest
11-
docker push metlo/suricata-daemon:latest
11+
docker push metlo/agent:latest

deploy/metlo-daemon-agent/Dockerfile

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
FROM --platform=linux/amd64 golang:alpine3.17 AS builder
2+
3+
RUN apk update
4+
RUN apk add libpcap libpcap-dev gcc g++
5+
6+
WORKDIR /app
7+
8+
COPY ../../ingestors/govxlan/ govxlan
9+
RUN cd govxlan && go build -o metlo-pcap
10+
RUN mv govxlan/metlo-pcap metlo-pcap
11+
12+
FROM --platform=linux/amd64 alpine:3.17.0
13+
14+
RUN apk update
15+
RUN apk add libpcap-dev libpcap
16+
17+
WORKDIR /app
18+
COPY --from=builder /app/metlo-pcap ./metlo-pcap
19+
20+
ENTRYPOINT ["/app/metlo-pcap"]

ingestors/govxlan/metlo-pcap.go

+15
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@ package main
33
import (
44
"fmt"
55
"log"
6+
"net"
67
"os"
78
"strconv"
9+
"strings"
810

911
"github.com/joho/godotenv"
1012
"github.com/metlo-labs/metlo/ingestors/govxlan/metloapi"
@@ -117,6 +119,19 @@ func main() {
117119
if envInterface != "" {
118120
args.captureInterface = envInterface
119121
} else {
122+
ifaces, err := net.Interfaces()
123+
if err != nil {
124+
log.Println(err)
125+
}
126+
for _, i := range ifaces {
127+
if strings.HasPrefix(i.Name, "eth") || strings.HasPrefix(i.Name, "ens") {
128+
log.Printf("Found match on interface %s which matches expected pattern. Binding to it", i.Name)
129+
args.captureInterface = i.Name
130+
break
131+
}
132+
}
133+
}
134+
if args.captureInterface == "" {
120135
log.Fatalln("Packet capture in live mode must provide an interface")
121136
}
122137
}

ingestors/kubernetes/metlo-daemonset.yaml

+3-3
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ spec:
1818
- key: node-role.kubernetes.io/master
1919
effect: NoSchedule
2020
containers:
21-
- name: suricata-daemon
22-
image: metlo/suricata-daemon
21+
- name: metlo-agent
22+
image: metlo/agent
2323
resources:
2424
requests:
2525
ephemeral-storage: "32Mi"
@@ -31,7 +31,7 @@ spec:
3131
- mountPath: /tmp
3232
name: socket-volume
3333
env:
34-
- name: METLO_ADDR
34+
- name: METLO_HOST
3535
value: http://<METLO_HOST_URL>:8081
3636
- name: METLO_KEY
3737
value: <YOUR_METLO_API_KEY>

ingestors/kubernetes/metlo-sidecar.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ spec:
1212
- "-text=Hello World! This is a Metlo Kubernetes with kind App"
1313
# Metlo Sidecar
1414
- name: metlo-sidecar
15-
image: metlo/suricata-daemon
15+
image: metlo/agent
1616
resources:
1717
requests:
1818
ephemeral-storage: "32Mi"
@@ -24,7 +24,7 @@ spec:
2424
- mountPath: /tmp
2525
name: socket-volume
2626
env:
27-
- name: METLO_ADDR
27+
- name: METLO_HOST
2828
value: http://<METLO_HOST_URL>:8081
2929
- name: METLO_KEY
3030
value: <YOUR_METLO_API_KEY>

manage-deployment.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
LICENSE_PATH = os.path.join(METLO_DIR, "LICENSE_KEY")
1616
FILES_TO_PULL = ["docker-compose.yaml", "init.sql", "metlo-config.yaml"]
1717
UPDATE_FILES_TO_PULL = ["docker-compose.yaml", "init.sql"]
18-
IMAGES = ["backend", "frontend", "jobrunner", "suricata-daemon"]
18+
IMAGES = ["backend", "frontend", "jobrunner"]
1919

2020

2121
def get_file(file_name):

0 commit comments

Comments
 (0)