cloudydeno / kubernetes-dns-sync

Manage hosted DNS providers using a Kubernetes control plane
8 stars 0 forks source link

Multi-architecture images #3

Closed samip5 closed 2 years ago

samip5 commented 3 years ago

Currently, because this has no arm64 images, I have to add an affinity that forces it to be scheduled on my amd64 nodes.

Otherwise it would say "exec format error"

danopia commented 3 years ago

Thanks for this valid request. Unfortunately the base image that I use is single arch.

Deno, my runtime of choice, is waiting for Github Actions to add arm64 runners before they will begin offering official builds. Similarly I understand that I would need to use QEMU to create a multi arch image on GHA today.

I prefer using the official Deno images so this is effectively blocked upstream to Github Actions.

If arm64 is meaningful to you I will keep this open for now as a tracking issue.

samip5 commented 3 years ago

To be fair, that's a valid thing to do rather than using qemu for it but if they're waiting on Github to add arm64 runners, good luck. That's going to take ages.

A lot of other repos just do it via qemu and call it a day.

danopia commented 3 years ago

The upstream issue is that they do a shitton of compiling and snapshotting and testing, so QEMU took hours. A tracking issue: https://github.com/denoland/deno/issues/1846

I found a dual-arch image lukechannings/deno built on Apple's ARM hardware, though the image is based on Ubuntu; I'm currently using an image which is based on alpine-glibc (yea, Deno has some pain points around portability... https://github.com/denoland/deno/issues/3711) and that specific alpine-glibc base image is also single-arch.

So, the 'cleanest' thing I could do today is add an additional ubuntu image to the CI which is based on the lukechannings/deno image, built with QEMU/buildx. Of course I don't personally run any ARM64 to test these properly, otherwise I would've already gone through this.

samip5 commented 2 years ago

Could you please do the QEMU image for arm64?

danopia commented 2 years ago

Ok, I'll try it, but as a second -multiarch image because I'd like to keep the main image built from the official Deno images.

danopia commented 2 years ago

A multiarch image is available at https://github.com/cloudydeno/kubernetes-dns-sync/pkgs/container/kubernetes-dns-sync/12924786?tag=multiarch and multiarch tag will get updated over time.

Usage with helm like so: helm install cloudydeno/dns-sync --generate-name --set image.tag=multiarch