-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ARM Support #779
Comments
@zroubalik Are you aware if Operator SDK supports ARM? Just checking to know if this is because of issues on our side or an unsupported scenario. |
@krvarma That's certainly a valid ask, I'm not sure why support has been removed or if it was on purpose. Do you know @ahmelsayed @jeffhollan ? |
@tomkerkhove Finally I managed to run on Raspberry Pi after several failed attempts. Here is what I have done to make it work on RPi. I am not sure this is the way we have to do but I got it working this way. I compiled the KEDA on macOS instead of directly on Raspberry Pi since compiling Operator-SDK on RPi generates lots of errors. After compiling I copied the build folder to RPi. Here are the steps
My aim is to install KEDA on a hybrid cluster (AMD64 and ARM), I am trying to create docker manifest and publish to docker so that it will be downloaded based on platforms. Let me know your thoughts |
@krvarma that's great. Yeah cross-compilation is definitely recommended way. Have you tried tools like docker buildx or similar to build the arm image on your machine locally? Once it is functional, we can include it to our CI system a produce arm images during a release. |
@zroubalik Thanks!, I didn't try docker buildx, I will try and get back to you. |
@krvarma , can you give an update how is KEDA working on your Raspberry Pi cluster? I also have k3s and am planning to deploy your KEDA docker image on it. |
@mohsinonxrm As I mentioned in the previous comment, I compiled the KEDA source on Mac and built the image for ARM and pushed it to my Docker Hub. My RPi cluster has 1 Master (RPi 4 4GB) and 2 nodes (RPi3 B+). The KEDA is working nicely on my cluster for about 2 months continuously without any issue. It is scaling an Azure Function that gets triggered by a RabbitMQ trigger. I didn't face any issue with the setup. |
@tomkerkhove @zroubalik The image By using alpine you can support all the architectures. |
@krvarma , I'm assuming you've used helm v2 instead of v3? how did you get tiller to deploy to the cluster? Nevermind, found ARM image for tiller. For others who might run into the same problem, you don't necessarily need helm to deploy KEDA. You can just use the yaml files to deploy using kubectl. However, on Raspberry Pi, you'll need krvarma/keda:localarm and krvarma/keda-metrics-adapter:localarm images |
@mohsinonxrm I am using Helm 3, not Helm 2. Great you got it working on your Cluster 👍 |
@krvarma , yes it is working great. Thanks for compiling the ARM version. Now I'm going to deploy the durable scalar and test it. |
+1 for Arm and even more for Arm64 support! So, again can we have Arm64 support, please? Even microk8s support keda as 'extensions' but not on Arm64 :( |
@natdan for |
@zroubalik I know exactly what you're saying for azure-functions but there are two other ways to think about it:
There's already image in docker hub under harakka/keda (https://hub.docker.com/r/kedacore/keda) - it would be really nice if KEDA becomes Arm64 ready ahead of big changes in well known cloud computing world :) |
@natdan absolutely agree on ARM support for KEDA, I was referring to your problems with Are you willing to contribute the ARM build? My only concern is the actual testing of ARM images, we will need ARM based runner for GH Actions. |
@zroubalik fair enough. I can't promise (that I can find another lazy Sunday like yesterday very soon) - but I'm happy to give it a go. As for Arm node - I've got couple of Raspberry Pi 4's with 64 OS on it to try it on. If someone else is to do it - we can try to make an arrangement of a sort, too. |
We will need a pernament env, that we can use to run the tests periodically. Maybe CNCF could help with this? @tomkerkhove |
Digging into this as part of kedacore/governance#12 to provide a self-hosted runner. |
In the mean time: I've been using Docker Buildx to cross-compile ARM64 images on a x64 machine using Qemu and binfmt_misc (instructions). For the ones interested, I've applied the following changes to the source, then just ran |
Just as an update - We are getting an ARM machine to run everything on. Stay tuned. |
built the arm64 images here: but looking forward to the above-mentioned solution. |
Any news on this feature ? |
Latest linux/arm64 2.4.0 images here: @tomkerkhove , when is that ARM machine coming online? :) |
When we have some more info from @jeffhollan on how to set it up. |
while we wait for 2.6.0 release, here are 2.5.0 arm64 versions: |
Like @zroubalik said, we are open for contributions to help close this upstream in KEDA itself :) |
@tomkerkhove , I had a look at GitHub Actions and I'll be honest, I don't think I'm familiar enough with it to modify to use build for arm64. BTW, the only change I made for building these images is to update the Docker and Docker.adapter files with arm64 golang images and then in the makefile change the arm to ARCH ?= arm64. I've also installed all the build tools locally on the PI 4 or Ampere VMs (Oracle), so I'm sure the build-tools.Dockerfile can also be updated. OperatorSDK is available for arm64 as well, build Azure CLI locally... everything works. Just don't know how to put it together in a parameterized way for GitHub Actions. Wish I could help more and take it to the finish line. |
@tomkerkhove , actually... let me take another look at it. I was approaching this the wrong way. |
It is not about the build tools I'd say. But more about building KEDA for arm64, start a small Kind (or similar k8s distro) on ARM machine and run some smoke check (a couple of e2e tests, eg. cron or additional simple ones). |
I have a k3s cluster, so I'll play on that first, will report my findings here. |
Thank you @mohsinonxrm - I will just assign this to me to keep track of this but feel free to keep on tinkering around! |
One way to simply solve this is to cross-compile the binaries first, then use I saw another go project using https://github.com/mitchellh/gox to cross-compile binaries.. It will then be simple and fast to create the multi-arch image with the buildx build command (using qemu). Another way is to build amd64 and arm64 docker image in separate jobs and then use |
Very nice! Is new release being made? |
It will be in 2.7 |
taking into account our release plan, in 2 months approx will be the next release |
You can try it using |
@JorTurFer Is it possible to leave this open until it's actually released maybe ? |
We have closed it because the work is done but you can see that it's in "ready to ship" status of our backlog. Otherwise it is hard to track what is open and what not. |
No worries ! |
I am trying to install KEDA on K3S running on RPi 4, it seems the latest version does not support ARM. The kedacore/keda:arm seems to be dead and is not available from Docker Hub. I also tried to compile it manually but I ran into many issues compiling Operator-SDK.
ARM support is necessary nowadays since most of the Edge devices are ARM-based. It would be great if the ARM image can be made available on Docker Hub.
Open items
The text was updated successfully, but these errors were encountered: