Bladeren bron

build: arm64 support

Anton Petruhin 3 jaren geleden
bovenliggende
commit
7d6ad21f2a
3 gewijzigde bestanden met toevoegingen van 19 en 4 verwijderingen
  1. 8 0
      .github/workflows/docker-publish.yml
  2. 4 4
      ebpftracer/Dockerfile
  3. 7 0
      ebpftracer/tracer.go

+ 8 - 0
.github/workflows/docker-publish.yml

@@ -19,6 +19,13 @@ jobs:
       - name: Checkout repository
         uses: actions/checkout@v2
 
+      - name: Set up QEMU
+        uses: docker/setup-qemu-action@v2
+
+      - name: Set up Docker Buildx
+        id: buildx
+        uses: docker/setup-buildx-action@v2
+
       - name: Log into registry ${{ env.REGISTRY }}
         uses: docker/login-action@v1
         with:
@@ -40,6 +47,7 @@ jobs:
         uses: docker/build-push-action@v2
         with:
           context: .
+          platforms: linux/amd64,linux/arm64
           push: true
           tags: ${{ steps.meta.outputs.tags }}
           labels: ${{ steps.meta.outputs.labels }}

+ 4 - 4
ebpftracer/Dockerfile

@@ -5,10 +5,10 @@ RUN apk add llvm clang libbpf-dev linux-headers
 COPY ebpf/* /tmp/
 WORKDIR /tmp
 
-RUN clang -g -O2 -target bpf -D__TARGET_ARCH_x86 -D__KERNEL=416 -c ebpf.c -o ebpf416.o && llvm-strip --strip-debug ebpf416.o
-RUN clang -g -O2 -target bpf -D__TARGET_ARCH_x86 -D__KERNEL=420 -c ebpf.c -o ebpf420.o && llvm-strip --strip-debug ebpf420.o
-RUN clang -g -O2 -target bpf -D__TARGET_ARCH_x86 -D__KERNEL=506 -c ebpf.c -o ebpf506.o && llvm-strip --strip-debug ebpf506.o
-RUN clang -g -O2 -target bpf -D__TARGET_ARCH_x86 -D__KERNEL=512 -c ebpf.c -o ebpf512.o && llvm-strip --strip-debug ebpf512.o
+RUN clang -g -O2 -target bpf -D__KERNEL=416 -c ebpf.c -o ebpf416.o && llvm-strip --strip-debug ebpf416.o
+RUN clang -g -O2 -target bpf -D__KERNEL=420 -c ebpf.c -o ebpf420.o && llvm-strip --strip-debug ebpf420.o
+RUN clang -g -O2 -target bpf -D__KERNEL=506 -c ebpf.c -o ebpf506.o && llvm-strip --strip-debug ebpf506.o
+RUN clang -g -O2 -target bpf -D__KERNEL=512 -c ebpf.c -o ebpf512.o && llvm-strip --strip-debug ebpf512.o
 
 RUN echo -en '// generated - do not edit\npackage ebpftracer\nvar ebpfProg = []struct{v string; p []byte}{\n' > ebpf.go \
 	&& echo -en '\t{"v5.12", []byte("' >> ebpf.go && hexdump -v -e '"\x" 1/1 "%02x"' ebpf512.o >> ebpf.go && echo '")},' >> ebpf.go \

+ 7 - 0
ebpftracer/tracer.go

@@ -14,6 +14,7 @@ import (
 	"inet.af/netaddr"
 	"k8s.io/klog/v2"
 	"os"
+	"runtime"
 	"strconv"
 	"strings"
 )
@@ -32,6 +33,7 @@ const (
 	EventTypeFileOpen        EventType = 8
 	EventTypeTCPRetransmit   EventType = 9
 
+	EventReasonNone    EventReason = 0
 	EventReasonOOMKill EventReason = 1
 )
 
@@ -151,6 +153,9 @@ func (t *Tracer) ebpf(ch chan<- Event, kernelVersion string) error {
 
 	for name, spec := range spec.Programs {
 		p := t.collection.Programs[name]
+		if runtime.GOARCH == "arm64" && (spec.Name == "sys_enter_open" || spec.Name == "sys_exit_open") {
+			continue
+		}
 		var err error
 		var l link.Link
 		switch spec.Type {
@@ -196,6 +201,8 @@ func (t EventType) String() string {
 
 func (t EventReason) String() string {
 	switch t {
+	case EventReasonNone:
+		return "none"
 	case EventReasonOOMKill:
 		return "oom-kill"
 	}