Skip to content

Instantly share code, notes, and snippets.

@paleozogt
Last active June 17, 2020 23:46
Show Gist options
  • Save paleozogt/4893711e25586309d1c8e6f02d4575cf to your computer and use it in GitHub Desktop.
Save paleozogt/4893711e25586309d1c8e6f02d4575cf to your computer and use it in GitHub Desktop.
rancher-agent for arm32

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:

  1. git clone https://github.com/paleozogt/rancher-share-mnt.git
  2. cd rancher-share-mnt
  3. git checkout multiarch-v1.0.7
  4. dapper build arm
  5. file bin/share-mnt

loglevel:

  1. git clone https://github.com/paleozogt/rancher-loglevel.git
  2. cd rancher-loglevel
  3. git checkout multiarch-v0.1.3
  4. dapper build arm
  5. file bin/loglevel

rancher-agent:

  1. git clone https://github.com/paleozogt/rancher
  2. cd rancher
  3. git checkout multiarch-v2.4.3
  4. dapper build-agent arm
  5. file bin/agent
  6. cp bin/agent package
  7. cp ../rancher-loglevel/bin/loglevel package
  8. cp ../rancher-share-mnt/bin/share-mnt package
  9. cd package
  10. 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 .
  11. 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):

  1. docker pull --platform linux/amd64 rancher/rancher-agent:v2.4.3
  2. docker tag rancher/rancher-agent:v2.4.3 paleozogt/rancher-agent:v2.4.3-amd64
  3. docker push paleozogt/rancher-agent:v2.4.3-amd64
  4. docker rmi rancher/rancher-agent:v2.4.3
  5. docker pull --platform linux/arm64 rancher/rancher-agent:v2.4.3
  6. docker tag rancher/rancher-agent:v2.4.3 paleozogt/rancher-agent:v2.4.3-arm64
  7. docker push paleozogt/rancher-agent:v2.4.3-arm64
  8. docker rmi rancher/rancher-agent:v2.4.3
  9. 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
  10. docker manifest push paleozogt/rancher-agent:v2.4.3
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment