From 1a438ec13c330fd761350bdd7720cbf164335e00 Mon Sep 17 00:00:00 2001 From: Rajnish Kumar Date: Mon, 22 Jul 2024 19:35:50 +0530 Subject: [PATCH] Add GoBGP client binary to antrea agent image GoBGP client binary size is ~15MB Signed-off-by: Rajnish Kumar --- build/images/base/Dockerfile | 19 +++++++++++++++++++ build/images/base/Dockerfile.ubi | 19 +++++++++++++++++++ build/images/base/build.sh | 3 ++- 3 files changed, 40 insertions(+), 1 deletion(-) diff --git a/build/images/base/Dockerfile b/build/images/base/Dockerfile index 8221325e9a2..ccfbffce71e 100644 --- a/build/images/base/Dockerfile +++ b/build/images/base/Dockerfile @@ -35,6 +35,24 @@ RUN set -eux; \ mkdir -p /opt/cni/bin; \ wget -q -O - https://github.com/containernetworking/plugins/releases/download/$CNI_BINARIES_VERSION/cni-plugins-linux-${pluginsArch}-$CNI_BINARIES_VERSION.tgz | tar xz -C /opt/cni/bin $CNI_PLUGINS +FROM ubuntu:22.04 AS gobgp-binary + +ARG GOBGP_VERSION + +RUN apt-get update && \ + apt-get install -y --no-install-recommends wget ca-certificates + +RUN set -eux; \ + dpkgArch="$(dpkg --print-architecture)"; \ + case "${dpkgArch##*-}" in \ + amd64) pluginsArch='amd64' ;; \ + armhf) pluginsArch='arm' ;; \ + arm64) pluginsArch='arm64' ;; \ + *) pluginsArch=''; echo >&2; echo >&2 "unsupported architecture '$dpkgArch'"; echo >&2 ; exit 1 ;; \ + esac; \ + mkdir -p /opt/bgp; \ + wget -q -O - https://github.com/osrg/gobgp/releases/download/v$GOBGP_VERSION/gobgp_${GOBGP_VERSION}_linux_${pluginsArch}.tar.gz | tar xz -C /opt/bgp + FROM antrea/openvswitch:${BUILD_TAG} ARG SURICATA_VERSION @@ -57,3 +75,4 @@ RUN apt-get update && apt-get install -y --no-install-recommends ipset jq inotif /iptables-wrapper-installer.sh COPY --from=cni-binaries /opt/cni/bin /opt/cni/bin +COPY --from=gobgp-binary /opt/bgp/gobgp /usr/local/bin diff --git a/build/images/base/Dockerfile.ubi b/build/images/base/Dockerfile.ubi index c6134bc911c..9ed161c9a1e 100644 --- a/build/images/base/Dockerfile.ubi +++ b/build/images/base/Dockerfile.ubi @@ -35,6 +35,24 @@ RUN set -eux; \ mkdir -p /opt/cni/bin; \ wget -q -O - https://github.com/containernetworking/plugins/releases/download/$CNI_BINARIES_VERSION/cni-plugins-linux-${pluginsArch}-$CNI_BINARIES_VERSION.tgz | tar xz -C /opt/cni/bin $CNI_PLUGINS +FROM ubuntu:22.04 AS gobgp-binary + +ARG GOBGP_VERSION + +RUN apt-get update && \ + apt-get install -y --no-install-recommends wget ca-certificates + +RUN set -eux; \ + dpkgArch="$(dpkg --print-architecture)"; \ + case "${dpkgArch##*-}" in \ + amd64) pluginsArch='amd64' ;; \ + armhf) pluginsArch='arm' ;; \ + arm64) pluginsArch='arm64' ;; \ + *) pluginsArch=''; echo >&2; echo >&2 "unsupported architecture '$dpkgArch'"; echo >&2 ; exit 1 ;; \ + esac; \ + mkdir -p /opt/bgp; \ + wget -q -O - https://github.com/osrg/gobgp/releases/download/v$GOBGP_VERSION/gobgp_${GOBGP_VERSION}_linux_${pluginsArch}.tar.gz | tar xz -C /opt/bgp + FROM antrea/openvswitch-ubi:${BUILD_TAG} ARG SURICATA_VERSION @@ -50,3 +68,4 @@ RUN yum install ipset jq yum-plugin-copr -y && \ yum remove yum-plugin-copr -y && yum clean all COPY --from=cni-binaries /opt/cni/bin /opt/cni/bin +COPY --from=gobgp-binary /opt/bgp/gobgp /usr/local/bin diff --git a/build/images/base/build.sh b/build/images/base/build.sh index f5355e25b3c..60b3a3f7d73 100755 --- a/build/images/base/build.sh +++ b/build/images/base/build.sh @@ -111,6 +111,7 @@ pushd $THIS_DIR > /dev/null CNI_BINARIES_VERSION=$(head -n 1 ../deps/cni-binaries-version) SURICATA_VERSION=$(head -n 1 ../deps/suricata-version) +GOBGP_VERSION=$(grep "github.com/osrg/gobgp" ../../../go.mod | head -n1 | cut -d " " -f2 | cut -c 2-) BUILD_CACHE_TAG=$(../build-tag.sh) @@ -152,7 +153,7 @@ fi function docker_build_and_push() { local image="$1" local dockerfile="$2" - local build_args="--build-arg CNI_BINARIES_VERSION=$CNI_BINARIES_VERSION --build-arg SURICATA_VERSION=$SURICATA_VERSION --build-arg BUILD_TAG=$BUILD_TAG" + local build_args="--build-arg CNI_BINARIES_VERSION=$CNI_BINARIES_VERSION --build-arg SURICATA_VERSION=$SURICATA_VERSION --build-arg GOBGP_VERSION=$GOBGP_VERSION --build-arg BUILD_TAG=$BUILD_TAG" local cache_args="" if $PUSH; then cache_args="$cache_args --cache-to type=registry,ref=$image-cache:$BUILD_CACHE_TAG,mode=max"