-
Notifications
You must be signed in to change notification settings - Fork 683
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
Proposal: Add ARMv7 and ARM64 Binaries #173
Comments
Hey, Any chance of including these ARM builds. We have mult-arch binaries and want users to be able to use kubeseal on ARM based devices |
Sure we can easily add them (even without switching to goreleaser). |
Thank you. How would you like to see this done? Do you have capacity at your end to kick it off? |
A PR is welcome |
I don't have a lot of time to devote to churn and getting things wrong, can you give an outline of how you would like to see this done in specific, broad-brush steps? You mentioned not wanting to use goreleaser and not wanting to use other tools, so your direction, or a PR from your team would be great to move things forward. cc @Waterdrips |
We already run cross-builds for several OSs, see Travis config file. I think it would be trivial to do the same thing for a few selected cpu archs |
👍 thank you |
I'm looking at the .travis.yml and I can't see the section that should be updated. What other arches and OSes are you building for - can you link to an example? https://github.com/bitnami-labs/sealed-secrets/blob/master/.travis.yml Also looked at the Makefile https://github.com/bitnami-labs/sealed-secrets/blob/master/Makefile I was looking for something like this, where I could add the other option to a list or set of commands: https://github.com/inlets/inletsctl/blob/master/Makefile#L9 Are you driving it by this list?
If that's how it's done, then it doesn't cover windows, which appears to be hardcoded, can we add the armhf variant in the same way? https://github.com/bitnami-labs/sealed-secrets/blob/master/.travis.yml#L118 |
Yes Travis native Linux and osx host environments are useful because they can be used to actually run the tests. We decided to build the windows binary without without also setting up a Windows ci host environments and I'd use the same approach for ARM binaries, so yes, let's just build them ad hoc like we do for the windows binary (by setting the GOARCH env var) |
Closes: bitnami-labs#173 This patch adds a build for arm and arm64 by setting the GOARM and GOARCH flags, and will be built on Linux. GOARM7=armhf/Raspberry Pi, called "arm" by the K8s projects GOARM8=aarch64 / 64-bit ARM such as AWS Graviton Signed-off-by: Alex Ellis (OpenFaaS Ltd) <[email protected]>
Output from the kubeseal-arm binary built locally with the command from Travis:
|
Closes: bitnami-labs#173 This patch adds a build for arm and arm64 by setting the GOARM and GOARCH flags, and will be built on Linux. GOARM7=armhf/Raspberry Pi, called "arm" by the K8s projects GOARM8=aarch64 / 64-bit ARM such as AWS Graviton Signed-off-by: Alex Ellis (OpenFaaS Ltd) <[email protected]>
Closes: bitnami-labs#173 This patch adds a build for arm and arm64 by setting the GOARM and GOARCH flags, and will be built on Linux. GOARM7=armhf/Raspberry Pi, called "arm" by the K8s projects GOARM8=aarch64 / 64-bit ARM such as AWS Graviton Signed-off-by: Alex Ellis (OpenFaaS Ltd) <[email protected]>
344: Build arm/arm64 release binaries in CI r=mkmik a=alexellis Build arm/arm64 release binaries in CI Closes: #173 This patch adds a build for arm and arm64 by setting the GOARM and GOARCH flags, and will be built on Linux. GOARM7=armhf/Raspberry Pi, called "arm" by the K8s projects GOARM8=aarch64 / 64-bit ARM such as AWS Graviton Signed-off-by: Alex Ellis (OpenFaaS Ltd) <[email protected]> Co-authored-by: Alex Ellis (OpenFaaS Ltd) <[email protected]>
Do you also need docker images for arm? |
We're just using the binaries for the time being, as a client for a Kubernetes cluster running on x86_64. At some point we may come back and suggest multi-arch for the controller. Here's a couple of files from the inlets-operator we put together with @matevzmihalic - https://github.com/inlets/inlets-operator/blob/master/Dockerfile - https://github.com/inlets/inlets-operator/blob/master/Makefile If you can let me know when you've cut a patch release, we'll update the CLI we use with kubeseal. |
@mkmik can this issue be re-opened? The initial ask of providing ARM64 or multi-arch Docker image isn't complete. Thanks. |
@onedr0p could you please open another issue? |
Done. |
Understand the maintainer catch up happening at the moment.
I run a multi-arch lab cluster and many people are using ARM SBC's as a Kubernetes training platform. I think it would increase adoption of the project if ARM arch's were supported to some extent.
I have verified
kubeseal
andcontroller
built withGOARCH
works correctly on my armv7 and arm64 SBC's. arm64 docker images also work in my k8s cluster.As part of the GoReleaser PR #140 I initially added ARMv7 and ARM64 archives and docker images then backed it out to simplify the PR per #140 (comment).
It would be trivial to add basic ARM support as a PR on top of #150 .
Three niggles:
We would still (?) need to use the docker cli experimental features env var to create a single manifest with multi-arch. Or add
buildx
as a dependency and use inMakefile
. Not a blocker?The release artifacts would look something like:
kubeseal
archives for windows, darwin and per arch (amd64/armv7/arm64) for linux.controller
docker images for linux with arch as suffix-amd64
,-armv7
,-arm64
, plus the existing<no suffix == amd64>
unless we do multi-arch somehow.nodeAffinity
yaml or jsonnet snippet too.Suggestions/improvements welcome.
The text was updated successfully, but these errors were encountered: