These are instructions for building rancher-agent
for arm32. If we start doing this regularly we'll need to standup CI, but for now doing it manually is good enough.
I suspect the reason that rancher-agent isn't supported for arm32 is because rancher proper (aka make build-server
) doesn't compile for arm32 (with error constant 4294967295 overflows int
). However, the agent (aka make build-agent
) builds fine.
Cross-compilation isn't quite straightforward in these projects, so they've been tweaked (and a bug fixed).
rancher-agent's Dockerfile.agent
pulls binaries from upstream dependencies that don't exist for arm32, so we have to build them manually.
share-mnt:
git clone https://github.com/paleozogt/rancher-share-mnt.git
cd rancher-share-mnt
git checkout multiarch-v1.0.7
dapper build arm
file bin/share-mnt
loglevel:
git clone https://github.com/paleozogt/rancher-loglevel.git
cd rancher-loglevel
git checkout multiarch-v0.1.3
dapper build arm
file bin/loglevel
rancher-agent:
git clone https://github.com/paleozogt/rancher
cd rancher
git checkout multiarch-v2.4.3
dapper build-agent arm
file bin/agent
cp bin/agent package
cp ../rancher-loglevel/bin/loglevel package
cp ../rancher-share-mnt/bin/share-mnt package
cd package
docker build --build-arg VERSION=v2.4.3 --build-arg ARCH=arm --build-arg IMAGE_ARCH=arm32v7 -t paleozogt/rancher-agent:v2.4.3-arm -f Dockerfile.agent .
docker push paleozogt/rancher-agent:v2.4.3-arm
multi-arch image (use the official amd64/arm64 images along with our custom-built arm32 image):
docker pull --platform linux/amd64 rancher/rancher-agent:v2.4.3
docker tag rancher/rancher-agent:v2.4.3 paleozogt/rancher-agent:v2.4.3-amd64
docker push paleozogt/rancher-agent:v2.4.3-amd64
docker rmi rancher/rancher-agent:v2.4.3
docker pull --platform linux/arm64 rancher/rancher-agent:v2.4.3
docker tag rancher/rancher-agent:v2.4.3 paleozogt/rancher-agent:v2.4.3-arm64
docker push paleozogt/rancher-agent:v2.4.3-arm64
docker rmi rancher/rancher-agent:v2.4.3
docker manifest create paleozogt/rancher-agent:v2.4.3 paleozogt/rancher-agent:v2.4.3-amd64 paleozogt/rancher-agent:v2.4.3-arm64 paleozogt/rancher-agent:v2.4.3-arm
docker manifest push paleozogt/rancher-agent:v2.4.3