gloo icon indicating copy to clipboard operation
gloo copied to clipboard

Build Official ARM64 Images - data plane pipeline

Open lgadban opened this issue 4 years ago • 29 comments

Is your feature request related to a problem? Please describe. Build official ARM images for the various gloo components

Describe the solution you'd like ARM compatible images

Describe alternatives you've considered N/A

Additional context Envoy now provides multi-arch images with arm64 support AWS ARM instances

Related Issues:

  • [ ] https://github.com/solo-io/gloo/issues/9800

lgadban avatar Aug 07 '20 14:08 lgadban

This should be re-opened as my PR did not solve this issue (it tracks official releases, which still has some work to be done)

CelsoSantos avatar Oct 05 '20 17:10 CelsoSantos

Agreed, reopening! We have the makefile changes required to build ARM64 images of Gloo, but we don't have a CI/CD pipeline setup with the ARM worker machines required to build it yet. Our current pipeline is in GKE / Github Actions. We may need to integrate with AWS for this.

Further, for envoy-gloo there is at least one upstream dependency (glibc) which has no official arm64 support.

Sodman avatar Oct 05 '20 17:10 Sodman

Indeed. I had to create the glibc image and the frovlad/alpine-glibc images for arm myself: https://github.com/CelsoSantos/alpine-glibc

I recommend Solo forks or recreates this repo in order to handle that

CelsoSantos avatar Oct 05 '20 18:10 CelsoSantos

Is this on roadmap? Thanks!

murphye avatar Dec 17 '20 19:12 murphye

Yah depends on ask, we have the builds for Istio so should be able to get this theoretically if someone needs it.

christian-posta avatar Dec 17 '20 23:12 christian-posta

Would be great for Graviton :-)

murphye avatar Dec 18 '20 17:12 murphye

Any news about it?

ionutz89 avatar Apr 29 '21 18:04 ionutz89

Is there anyway we can help out to move this forward?

WyriHaximus avatar Aug 17 '21 20:08 WyriHaximus

@chrisgaun FYI

lgadban avatar Aug 23 '21 14:08 lgadban

Need this bad.

pranaypratyush avatar Nov 04 '21 12:11 pranaypratyush

It should be possible to use Docker's buildx feature to build multi-arch images without needing access to runners of different architectures.

Example doing this in GitHub Actions: https://github.com/tmobile/magtape/blob/b78170b5b020dd2f0a336d514e48fec5980227cb/.github/workflows/ci-image-build.yaml#L62

phenixblue avatar Jan 21 '22 18:01 phenixblue

We have done this with Istio btw and found that there is much high CPU usage for TLS handshakes in ARM vs Intel/AMD. So for those looking to save money using Graviton it would depend on the number of TLS connections.

chrisgaun avatar Jan 31 '22 01:01 chrisgaun

@chrisgaun would you have some more information to share? Could you eventually do a comparison for the same number of connections how that affect performance? (CPU/RAM/Network, etc). I'd be very interested in learning more about it

CelsoSantos avatar Feb 01 '22 16:02 CelsoSantos

I know a lot of our use case behind this is more for local development so performance differences aren't as much a concern (still a concern if there's a drastic difference). A lot of our development teams use Apple laptops and those will be moving to arm64 as an only option before too long. We like to have a full k8s/gloo deployment in a local environment on the laptops and that's going to be impossible/difficult without upstream support for arm64

phenixblue avatar Feb 01 '22 18:02 phenixblue

Ah yes. We have the same use case internally actually as many of us are on the M1s. We have good internal docs on this that we should add to our docs.

chrisgaun avatar Feb 02 '22 01:02 chrisgaun

To add to the use case list: I want to use Gloo on my home lab k8s cluster as the ingress service. Doubt I'll see many TLS connections so that's not a major issue for me.

WyriHaximus avatar Feb 02 '22 17:02 WyriHaximus

Understood understood.

chrisgaun avatar Feb 04 '22 18:02 chrisgaun

@chrisgaun , any new update?

ac427 avatar Apr 04 '22 17:04 ac427

I'm going to second what @phenixblue stated. Exact same use case for us. Any updates on this issue being addressed?

scags9876 avatar Aug 11 '22 22:08 scags9876

any updates on this issue?

abebars avatar Oct 26 '22 02:10 abebars

Let me check with engineering. Most run on M1 macs.

chrisgaun avatar Oct 26 '22 14:10 chrisgaun

Everyone. This seems to be a limitation on using Google cloud. They did not have ARM machines until very recently and even now it is very limited supply.

For Gloo Mesh we use an (expensive) self hosted AWS EKS cluster as a runner to build ARM images. Google says the ARM machines will be GA in "early 2023." Until then we can do one offs for customers potentially but more general pipeline still is a bit out.

chrisgaun avatar Oct 26 '22 16:10 chrisgaun

You don't need ARM machines to build ARM images tho. All you need is docker with qemu to do a build or buildx to create the images. (It is slow to build...)

WyriHaximus avatar Oct 26 '22 21:10 WyriHaximus

Zendesk ticket #1138 has been linked to this issue.

soloio-bot avatar Jan 03 '23 16:01 soloio-bot

Any progress/plans on this? Currently, gloo-edge is the last amd64 workload in our clusters and (for cost optimization purposes) I wold love to have arm64 only.

From what I understand this would imply

  • providing multi architecture OCI manifest (supporting linux/arm64 and linux/amd64) for quay.io/solo-io/gloo
  • providing multi architecture OCI manifest (supporting linux/arm64 and linux/amd64) for quay.io/solo-io/gloo-envoy-wrapper

Maybe I can help with a PR if this is not too complex :-), any pointers and hints are highly appreciated.

alex-berger avatar Nov 09 '23 09:11 alex-berger