Skip to content
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

Argo Workflow for ARM? #2080

Closed
pisymbol opened this issue Jan 28, 2020 · 23 comments · Fixed by #2364, #2491, #3744, #3813 or #3831
Closed

Argo Workflow for ARM? #2080

pisymbol opened this issue Jan 28, 2020 · 23 comments · Fixed by #2364, #2491, #3744, #3813 or #3831
Labels
type/feature Feature request

Comments

@pisymbol
Copy link

Summary

Could the argo team create official images for ARM (armv7/arm64)?

There are various rogue docker images of say argo-cd for ARM by community members but nothing really official. Would be nice to truly support ARM.

Motivation

ARM is extremely popular, even in the datacenter, and I would like to be able to use Argo in an multi-architecture cluster.

Proposal

Change build infrastructure to build both amd64 and arm variants.


Message from the maintainers:

If you wish to see this enhancement implemented please add a 👍 reaction to this issue! We often sort issues this way to know what to prioritize.

@pisymbol pisymbol added the type/feature Feature request label Jan 28, 2020
@alexec
Copy link
Contributor

alexec commented Jan 28, 2020

Would you like to submit a PR for this?

@pisymbol
Copy link
Author

@alexec I suppose I can give it a go (get it?).

So this would basically mean what, the controller and binary would be recompiled for ARM? Anything else? I'm a little confused on the source code organization of the argoproj in general (there are a number of projects buried within the same tree).

@alexec
Copy link
Contributor

alexec commented Jan 28, 2020

could you take a look at argoproj/argo/Dockerfile which is how we build it

@MrXinWang
Copy link
Contributor

MrXinWang commented Mar 4, 2020

@alexec I made a PR for firstly fixing the Dockerfile build on arm64 platform. Let's see what we need to do next after this :))) Wondering if the community is interested in officially support arm, i.e. release a pre-built binary and docker image?

@MrXinWang
Copy link
Contributor

MrXinWang commented Mar 4, 2020

@pisymbol Sorry but I am wondering are you already working on this? I prepared a PR to fix this arm64 build problem, and if you have already prepared a PR, I will save mine to avoid conflict.

@alexec
Copy link
Contributor

alexec commented Mar 19, 2020

Had to revert PR. New PR needs to be submitted.

@pisymbol
Copy link
Author

@alexec I made a PR for firstly fixing the Dockerfile build on arm64 platform. Let's see what we need to do next after this :))) Wondering if the community is interested in officially support arm, i.e. release a pre-built binary and docker image?

Can you add arm as well?

@alexec
Copy link
Contributor

alexec commented Mar 19, 2020

linux-x64 i think

@MrXinWang
Copy link
Contributor

MrXinWang commented Mar 20, 2020

Hi @pisymbol ! Do you mean GOARCH=arm i.e. arm 32bit? (Also a little bit off-topic but are you asking this because you need to run kubeflow on arm/arm64? I remember saw you in that community as well and I am doing similar thing but on arm64 only...)

Hi @alexec , well received, I have left my investigation result in the original PR #2364 , could you please take a look? Thanks!

@pisymbol
Copy link
Author

pisymbol commented Aug 7, 2020

@MrXinWang Yes! Sorry for the very late reply. Can we run Argo on a raspi cluster now?

@dgiebert
Copy link
Contributor

Necrobumping this as I am also working on a raspi cluster.

Reworking the Dockerfile to automatically pickup the arch using buildx, might need some help with github workflow though

@alexec alexec reopened this Aug 13, 2020
@alexec alexec linked a pull request Aug 13, 2020 that will close this issue
6 tasks
@alexec alexec reopened this Aug 18, 2020
@alexec
Copy link
Contributor

alexec commented Aug 18, 2020

The related PR broken the build:

https://github.com/argoproj/argo/actions/runs/214249220

  tag=$(basename $GITHUB_REF)
  if [ $tag = "master" ]; then
    tag="latest"
  fi
  
  targets="workflow-controller argoexec argocli"
  for target in $targets; do
    docker buildx build \
      --push \
      --platform="linux/amd64,linux/arm64,linux/ppc64le,linux/s390x" \
      --target $target \
      --tag "${DOCKERIO_ORG}/${target}:${tag}-linux" .
  done
  shell: /bin/bash --noprofile --norc -e -o pipefail {0}
  env:
    DOCKER_CONFIG: /home/runner/work/_temp/docker_login_1597785543603
    DOCKERIO_ORG: ***
auto-push is currently not implemented for docker driver

@dgiebert could you please take a look?

@dgiebert
Copy link
Contributor

Seems the --push option only works locally and not in the CI, replaced it accordingly to documentation.

@alexec
Copy link
Contributor

alexec commented Aug 19, 2020

Builds still failing on master: https://github.com/argoproj/argo/runs/1004007674?check_suite_focus=true

@alexec
Copy link
Contributor

alexec commented Aug 19, 2020

@dgiebert please can you take a look?

@dgiebert
Copy link
Contributor

Sure will take another look, but this time it was according to documentation !

@alexec
Copy link
Contributor

alexec commented Aug 24, 2020

Multi-arch images not building on master: https://github.com/argoproj/argo/runs/1022694683?check_suite_focus=true

@alexec
Copy link
Contributor

alexec commented Aug 24, 2020

@dgiebert would you be willing to investigate please?

@dgiebert
Copy link
Contributor

Judging from the error and documentation I need to add to the existing manifest, will try and create a PR for it !

@dgiebert
Copy link
Contributor

dgiebert commented Aug 24, 2020

@alexec buildx creates a manifest and it seems that I can only amend to it: https://docs.docker.com/engine/reference/commandline/manifest/

Like so: docker manifest create argoproj/argoexec:latest-linux -a argoproj/argoexec:latest-windows
Guess I will tag the images for linux with latest and latest-linux and add latest-windows to the manifest.

@alexec
Copy link
Contributor

alexec commented Sep 2, 2020

Available for testing in v2.11.0-rc1.

@amiga23
Copy link

amiga23 commented Sep 17, 2020

Argo-server and argo-workflow-controller work great, but version 2.11 and latest-linux do reference argoexec:v2.10.2 which does not exist as arm image. Is it possible to configure executor image version?

@amiga23
Copy link

amiga23 commented Sep 17, 2020

found it, it is an argument passed to the workflowcontroller container --executor-image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment