Argo: Argo Workflow for ARM?

Created on 28 Jan 2020  路  23Comments  路  Source: argoproj/argo

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.

enhancement

All 23 comments

Would you like to submit a PR for this?

@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).

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

@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?

@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.

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

@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?

linux-x64 i think

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!

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

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

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?

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

@dgiebert please can you take a look?

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

@dgiebert would you be willing to investigate please?

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

@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.

Available for testing in v2.11.0-rc1.

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?

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

Was this page helpful?
0 / 5 - 0 ratings

Related issues

salanki picture salanki  路  3Comments

basanthjenuhb picture basanthjenuhb  路  3Comments

iterion picture iterion  路  3Comments

alexlatchford picture alexlatchford  路  3Comments

vicaire picture vicaire  路  4Comments