From aa3ee5def36b0c34aa7a15f8bd14be31830c9ba5 Mon Sep 17 00:00:00 2001 From: "M. Mert Yildiran" Date: Mon, 13 Jun 2022 10:42:15 +0300 Subject: [PATCH] Add eBPF dependencies to `builder-from-amd64-to-arm64v8` and `builder-native-base` --- Dockerfile | 21 +++++++++++++++++-- .../Dockerfile | 3 +++ .../build-push.sh | 4 ++++ .../build-push.sh | 4 ---- 4 files changed, 26 insertions(+), 6 deletions(-) rename devops/{linux-arm64-musl-go-libpcap-capstone => linux-arm64-musl-go-libpcap-capstone-bpf}/Dockerfile (94%) create mode 100755 devops/linux-arm64-musl-go-libpcap-capstone-bpf/build-push.sh delete mode 100755 devops/linux-arm64-musl-go-libpcap-capstone/build-push.sh diff --git a/Dockerfile b/Dockerfile index a5fd5d713..547c75b6d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -25,7 +25,18 @@ RUN npm run build ### Base builder image for native builds architecture FROM golang:1.17-alpine AS builder-native-base ENV CGO_ENABLED=1 GOOS=linux -RUN apk add --no-cache libpcap-dev g++ perl-utils curl build-base binutils-gold bash +RUN apk add --no-cache \ + libpcap-dev \ + g++ \ + perl-utils \ + curl \ + build-base \ + binutils-gold \ + bash \ + clang \ + llvm \ + libbpf-dev \ + linux-headers COPY devops/install-capstone.sh . RUN ./install-capstone.sh @@ -33,23 +44,27 @@ RUN ./install-capstone.sh ### Intermediate builder image for x86-64 to x86-64 native builds FROM builder-native-base AS builder-from-amd64-to-amd64 ENV GOARCH=amd64 +ENV BPF_CFLAGS="-O2 -g -D__TARGET_ARCH_x86" ### Intermediate builder image for AArch64 to AArch64 native builds FROM builder-native-base AS builder-from-arm64v8-to-arm64v8 ENV GOARCH=arm64 +ENV BPF_CFLAGS="-O2 -g -D__TARGET_ARCH_arm64" ### Builder image for x86-64 to AArch64 cross-compilation -FROM up9inc/linux-arm64-musl-go-libpcap-capstone AS builder-from-amd64-to-arm64v8 +FROM up9inc/linux-arm64-musl-go-libpcap-capstone-bpf AS builder-from-amd64-to-arm64v8 ENV CGO_ENABLED=1 GOOS=linux ENV GOARCH=arm64 CGO_CFLAGS="-I/work/libpcap -I/work/capstone/include" +ENV BPF_CFLAGS="-O2 -g -D__TARGET_ARCH_arm64 -I/usr/xcc/aarch64-linux-musl-cross/aarch64-linux-musl/include/" ### Builder image for AArch64 to x86-64 cross-compilation FROM up9inc/linux-x86_64-musl-go-libpcap-capstone AS builder-from-arm64v8-to-amd64 ENV CGO_ENABLED=1 GOOS=linux ENV GOARCH=amd64 CGO_CFLAGS="-I/libpcap -I/capstone/include" +ENV BPF_CFLAGS="-O2 -g -D__TARGET_ARCH_x86" ### Final builder image where the build happens @@ -90,6 +105,8 @@ ARG VER=0.0 WORKDIR /app/agent-build +RUN GOARCH=${BUILDARCH} go generate ../tap/tlstapper/tls_tapper.go + RUN go build -ldflags="-extldflags=-static -s -w \ -X 'github.com/up9inc/mizu/agent/pkg/version.GitCommitHash=${COMMIT_HASH}' \ -X 'github.com/up9inc/mizu/agent/pkg/version.Branch=${GIT_BRANCH}' \ diff --git a/devops/linux-arm64-musl-go-libpcap-capstone/Dockerfile b/devops/linux-arm64-musl-go-libpcap-capstone-bpf/Dockerfile similarity index 94% rename from devops/linux-arm64-musl-go-libpcap-capstone/Dockerfile rename to devops/linux-arm64-musl-go-libpcap-capstone-bpf/Dockerfile index 6f9fb0c8a..d75a43621 100644 --- a/devops/linux-arm64-musl-go-libpcap-capstone/Dockerfile +++ b/devops/linux-arm64-musl-go-libpcap-capstone-bpf/Dockerfile @@ -25,3 +25,6 @@ RUN curl https://github.com/capstone-engine/capstone/archive/4.0.2.tar.gz -Lo ./ WORKDIR /work/capstone RUN CAPSTONE_ARCHS="aarch64" CAPSTONE_STATIC=yes ./make.sh \ && cp /work/capstone/libcapstone.a /usr/xcc/aarch64-linux-musl-cross/lib/gcc/aarch64-linux-musl/*/ + +# Install eBPF related dependencies +RUN apt-get -y install clang llvm libbpf-dev diff --git a/devops/linux-arm64-musl-go-libpcap-capstone-bpf/build-push.sh b/devops/linux-arm64-musl-go-libpcap-capstone-bpf/build-push.sh new file mode 100755 index 000000000..384b05fdd --- /dev/null +++ b/devops/linux-arm64-musl-go-libpcap-capstone-bpf/build-push.sh @@ -0,0 +1,4 @@ +#!/bin/bash +set -e + +docker build . -t up9inc/linux-arm64-musl-go-libpcap-capstone-bpf && docker push up9inc/linux-arm64-musl-go-libpcap-capstone-bpf diff --git a/devops/linux-arm64-musl-go-libpcap-capstone/build-push.sh b/devops/linux-arm64-musl-go-libpcap-capstone/build-push.sh deleted file mode 100755 index 1048c1d52..000000000 --- a/devops/linux-arm64-musl-go-libpcap-capstone/build-push.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash -set -e - -docker build . -t up9inc/linux-arm64-musl-go-libpcap-capstone && docker push up9inc/linux-arm64-musl-go-libpcap-capstone