codenotary / immudb

immudb - immutable database based on zero trust, SQL/Key-Value/Document model, tamperproof, data change history
https://immudb.io
Other
8.52k stars 337 forks source link

ARM64 Support for ImmuDB #1781

Open mprimeaux opened 10 months ago

mprimeaux commented 10 months ago

What would you like to be added or enhanced

I'd very much like to see ARM64 support for ImmuDB.

Why is this needed

Our production node groups are all ARM64 as this represents a 40% cost per transaction savings for our workloads.

Additional context

For local development, we use Minikube + QEMU as the driver on our ARM64 (Apple M1 and M2 MacBook Pros) and ImmuDB doesn't deploy successfully. I receive the "classic" error when the CPU architecture of the technology doesn't support ARM64:

exec /usr/sbin/immudb: exec format error
Stream closed EOF for go-scriptures/core-db-2-immudb-0 (immudb)

I checked DockerHub and it seems AMD64 is the only supported architecture. What can I do to help support ARM64?

jeroiraz commented 10 months ago

What would you like to be added or enhanced

I'd very much like to see ARM64 support for ImmuDB.

Why is this needed

Our production node groups are all ARM64 as this represents a 40% cost per transaction savings for our workloads.

Additional context

For local development, we use Minikube + QEMU as the driver on our ARM64 (Apple M1 and M2 MacBook Pros) and ImmuDB doesn't deploy successfully. I receive the "classic" error when the CPU architecture of the technology doesn't support ARM64:

exec /usr/sbin/immudb: exec format error
Stream closed EOF for go-scriptures/core-db-2-immudb-0 (immudb)

I checked DockerHub and it seems AMD64 is the only supported architecture. What can I do to help support ARM64?

have you tried with this binary? https://github.com/codenotary/immudb/releases/download/v1.5.0/immudb-v1.5.0-darwin-arm64

we may need to check the docker files / release workflows in order to build docker images for that...

mprimeaux commented 10 months ago

While the above-mentioned binary works on an ARM64 host, we’re in k8s and so would need the arm64 container images hosted in a registry. Is there any help I can provide to assist in having the arm64 container images generated as part of your usual release process?

jeroiraz commented 10 months ago

While the above-mentioned binary works on an ARM64 host, we’re in k8s and so would need the arm64 container images hosted in a registry. Is there any help I can provide to assist in having the arm64 container images generated as part of your usual release process?

What would be needed? A different DockerFile and a different command to build the arm64 image from it? You might be able to provide it as a basis for discussion, even in the case it's not included in the official release, the dockerFile could take the official immudb binary for arm64

@SimoneLazzaris ?

mprimeaux commented 10 months ago

I certainly don’t mind contributing and am also happy to provide an example GitHub Actions workflow. Should I assume this is the step to model?

SimoneLazzaris commented 10 months ago

What would be needed? A different DockerFile and a different command to build the arm64 image from it? You might be able to provide it as a basis for discussion, even in the case it's not included in the official release, the dockerFile could take the official immudb binary for arm64

@SimoneLazzaris ?

I think that a simple Dockerfile would an easy addition. @mprimeaux: the workflow you mention adds the dev version which is built every time we push to the repo. We'll also need to add the Dockerfile in the release flow to get official releases.