From bf75c3ed8133d3cab438d86aef97e0d74a139646 Mon Sep 17 00:00:00 2001 From: Mahe Tardy Date: Mon, 27 Nov 2023 11:05:42 +0000 Subject: [PATCH 1/4] Dockerfile: simplifies tetragon build step This removes the tetragon-image target that was just an alias to doing `make tetragon tetra` and also removes the cross-compiler part since tetragon no longer use CGO to compile. Signed-off-by: Mahe Tardy --- Dockerfile | 16 ++++------------ Makefile | 6 +----- 2 files changed, 5 insertions(+), 17 deletions(-) diff --git a/Dockerfile b/Dockerfile index 75f95acb1d7..31627c7191c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,20 +17,12 @@ COPY . ./ ARG TARGETARCH RUN make tetragon-bpf LOCAL_CLANG=1 TARGET_ARCH=$TARGETARCH -# Second builder (cross-)compile: -# - tetragon (pkg/bpf uses CGO, so a gcc cross compiler is needed) -# - tetra +# Second builder (cross-)compile tetragon and tetra FROM --platform=$BUILDPLATFORM docker.io/library/golang:1.21.4@sha256:9baee0edab4139ae9b108fffabb8e2e98a67f0b259fd25283c2a084bd74fea0d as tetragon-builder WORKDIR /go/src/github.com/cilium/tetragon -ARG TETRAGON_VERSION TARGETARCH BUILDARCH -RUN apt-get update -RUN if [ $BUILDARCH != $TARGETARCH ]; \ - then apt-get install -y libelf-dev zlib1g-dev crossbuild-essential-$TARGETARCH; \ - else apt-get install -y libelf-dev zlib1g-dev; fi -COPY . ./ -RUN if [ $BUILDARCH != $TARGETARCH ]; \ - then make tetragon-image LOCAL_CLANG=1 VERSION=$TETRAGON_VERSION TARGET_ARCH=$TARGETARCH CC=aarch64-linux-gnu-gcc; \ - else make tetragon-image LOCAL_CLANG=1 VERSION=$TETRAGON_VERSION TARGET_ARCH=$TARGETARCH; fi +ARG TETRAGON_VERSION TARGETARCH +COPY . . +RUN make VERSION=$TETRAGON_VERSION TARGET_ARCH=$TARGETARCH tetragon tetra # Third builder (cross-)compile a stripped gops FROM --platform=$BUILDPLATFORM docker.io/library/golang:1.21.4-alpine@sha256:110b07af87238fbdc5f1df52b00927cf58ce3de358eeeb1854f10a8b5e5e1411 as gops diff --git a/Makefile b/Makefile index 5cca55afc48..2f687269534 100644 --- a/Makefile +++ b/Makefile @@ -187,11 +187,7 @@ alignchecker: ksyms: $(GO) build ./cmd/ksyms/ -.PHONY: tetragon-image tetragon-operator-image -tetragon-image: - $(GO_BUILD) ./cmd/tetragon/ - $(GO_BUILD) ./cmd/tetra/ - +.PHONY: tetragon-operator-image tetragon-operator-image: $(GO_BUILD) -o tetragon-operator ./operator From a830bf4954a3396e9bdf888357f2a2eb0724b621 Mon Sep 17 00:00:00 2001 From: Mahe Tardy Date: Mon, 27 Nov 2023 11:14:59 +0000 Subject: [PATCH 2/4] Makefile: remove duplicate tetragon-operator-image target Signed-off-by: Mahe Tardy --- Dockerfile.operator | 2 +- Makefile | 4 ---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/Dockerfile.operator b/Dockerfile.operator index 3f9fd0dca09..a4606937a1b 100644 --- a/Dockerfile.operator +++ b/Dockerfile.operator @@ -21,7 +21,7 @@ ARG TETRAGON_VERSION WORKDIR /go/src/github.com/cilium/tetragon RUN --mount=type=bind,readwrite,target=/go/src/github.com/cilium/tetragon --mount=target=/root/.cache,type=cache --mount=target=/go/pkg/mod,type=cache \ - make GOARCH=${TARGETARCH} VERSION=${TETRAGON_VERSION} tetragon-operator-image \ + make GOARCH=${TARGETARCH} VERSION=${TETRAGON_VERSION} tetragon-operator \ && mkdir -p /out/${TARGETOS}/${TARGETARCH}/usr/bin && mv tetragon-operator /out/${TARGETOS}/${TARGETARCH}/usr/bin # BUILDPLATFORM is an automatic platform ARG enabled by Docker BuildKit. diff --git a/Makefile b/Makefile index 2f687269534..da89f20a5fb 100644 --- a/Makefile +++ b/Makefile @@ -187,10 +187,6 @@ alignchecker: ksyms: $(GO) build ./cmd/ksyms/ -.PHONY: tetragon-operator-image -tetragon-operator-image: - $(GO_BUILD) -o tetragon-operator ./operator - .PHONY: install install: groupadd -f hubble From e46067e53b119a2a12efd6748736b3aab9e83aa7 Mon Sep 17 00:00:00 2001 From: Mahe Tardy Date: Mon, 27 Nov 2023 14:59:57 +0000 Subject: [PATCH 3/4] Makefile: add TARGET_ARCH to image and image-operator Signed-off-by: Mahe Tardy --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index da89f20a5fb..8e030931816 100644 --- a/Makefile +++ b/Makefile @@ -272,12 +272,12 @@ lint: .PHONY: image image-operator image-test image-codegen image: - $(CONTAINER_ENGINE) build -t "cilium/tetragon:${DOCKER_IMAGE_TAG}" --target release --build-arg TETRAGON_VERSION=$(VERSION) . + $(CONTAINER_ENGINE) build -t "cilium/tetragon:${DOCKER_IMAGE_TAG}" --target release --build-arg TETRAGON_VERSION=$(VERSION) --platform=linux/${TARGET_ARCH} . $(QUIET)@echo "Push like this when ready:" $(QUIET)@echo "${CONTAINER_ENGINE} push cilium/tetragon:$(DOCKER_IMAGE_TAG)" image-operator: - $(CONTAINER_ENGINE) build -f Dockerfile.operator -t "cilium/tetragon-operator:${DOCKER_IMAGE_TAG}" . + $(CONTAINER_ENGINE) build -f Dockerfile.operator -t "cilium/tetragon-operator:${DOCKER_IMAGE_TAG}" --platform=linux/${TARGET_ARCH} . $(QUIET)@echo "Push like this when ready:" $(QUIET)@echo "${CONTAINER_ENGINE} push cilium/tetragon-operator:$(DOCKER_IMAGE_TAG)" From 088a24fa706da2c9adad0848e9e221ad39d255ca Mon Sep 17 00:00:00 2001 From: Mahe Tardy Date: Mon, 27 Nov 2023 15:15:26 +0000 Subject: [PATCH 4/4] Makefile: make tarball target work with TARGET_ARCH Signed-off-by: Mahe Tardy --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 8e030931816..bfa09a3a0d1 100644 --- a/Makefile +++ b/Makefile @@ -300,7 +300,7 @@ image-clang: .PHONY: tarball tarball-release tarball-clean # Share same build environment as docker image tarball: tarball-clean image - $(CONTAINER_ENGINE) build --build-arg TETRAGON_VERSION=$(VERSION) --build-arg TARGET_ARCH=$(TARGET_ARCH) -f Dockerfile.tarball -t "cilium/tetragon-tarball:${DOCKER_IMAGE_TAG}" . + $(CONTAINER_ENGINE) build --build-arg TETRAGON_VERSION=$(VERSION) --build-arg TARGET_ARCH=$(TARGET_ARCH) -f Dockerfile.tarball -t "cilium/tetragon-tarball:${DOCKER_IMAGE_TAG}" --platform=linux/${TARGET_ARCH} . $(QUIET)mkdir -p $(BUILD_PKG_DIR) $(CONTAINER_ENGINE) save cilium/tetragon-tarball:$(DOCKER_IMAGE_TAG) -o $(BUILD_PKG_DIR)/tetragon-$(VERSION)-$(TARGET_ARCH).tmp.tar $(QUIET)mkdir -p $(BUILD_PKG_DIR)/docker/