FfDL icon indicating copy to clipboard operation
FfDL copied to clipboard

Add ppc64le & multiarch support

Open sdmonov opened this issue 6 years ago • 5 comments

This code is adding ppc64le and multiarch support for FfDL.

  • Adds new make target to the main Makefile: docker-create-manifest that creates the multiarch manifests for the services.

  • arch (architecture) parameter was added to values.yaml and storage-plugin/values.yaml

make docker-build will generate all the services with a -${ARCHITECTURE} suffix. During build an ARCH argument is sent to the Dockerfiles in order to have architecture specific implementation inside it.

Building docker images for ppc64le should look like this:

make docker-build
make docker-push
make docker-create-manifest
.....
helm install storage-plugin --set arch=ppc64le,namespace=$NAMESPACE
helm install . --set arch=ppc64le,lcm.shared_volume_storage_class=$SHARED_VOLUME_STORAGE_CLASS,namespace=$NAMESPACE

Fixes #115

Developer's Certificate of Origin 1.1

   By making a contribution to this project, I certify that:

   (a) The contribution was created in whole or in part by me and I
       have the right to submit it under the Apache License 2.0; or

   (b) The contribution is based upon previous work that, to the best
       of my knowledge, is covered under an appropriate open source
       license and I have the right under that license to submit that
       work with modifications, whether created in whole or in part
       by me, under the same open source license (unless I am
       permitted to submit under a different license), as indicated
       in the file; or

   (c) The contribution was provided directly to me by some other
       person who certified (a), (b) or (c) and I have not modified
       it.

   (d) I understand and agree that this project and the contribution
       are public and that a record of the contribution (including all
       personal information I submit with it, including my sign-off) is
       maintained indefinitely and may be redistributed consistent with
       this project or the open source license(s) involved.

sdmonov avatar Sep 13 '18 20:09 sdmonov

Hi All,

This code adds support for ppc64le in FfDL. It does adds a suffix to the built services with the architecture and also adds a target in the main Makefile to create/ammend the needed manifest lists to support the multiple architectures.

There are two services that are needed by the code prom/pushgateway and localstack/localstack (optional) that does not have a ppc64le version in the public registries. I did generate custom build ppc64le version and pushed it to my own registry smonov. They will be pulled from there for now until published on a more official registry.

sdmonov avatar Sep 13 '18 21:09 sdmonov

Found few issues. Fixing and testing them now:

  • fixed issue with the repository in the values.yaml reported by @Tomcli
  • added new target to the Makefile: docker-tag-local. It will tag the arch dependent image name to arch independent name. For example: ffdl/ffdl-ui-ppc64le:v0.1.1 will be tagged to ffdl/ffdl-ui:v.0.1.1. This is used for local deployments only that do not require pushing to registry. make docker-push will push only the arch dependent images (with -${ARCHITECTURE} suffix) only and then a manifest lists will be created for these image to support multiarch (by invoking make docker-create-manifest).
  • updated .travis.yml to invoke docker-tag-local.

sdmonov avatar Sep 14 '18 16:09 sdmonov

Thanks @sdmonov. What is the target for travis if any?

animeshsingh avatar Sep 14 '18 19:09 animeshsingh

helm install storage-plugin --set arch=ppc64le,namespace=$NAMESPACE What if you have a mixed x86, POWER cluster, what happens then?

Could we not put the multi-arch storage plugin in a private repo and use it?

The public travis ci is now multi-arch so you should do builds with it. I would like to see the changes in Travis.yaml file.

We have to deal with learner images... is that addressed in a different PR?

seelam avatar Sep 14 '18 23:09 seelam

@seelam:

  • About the storage plugin I totally agree with you we need to push multi-arch images and create a manifest list. I have no access to push images at the moment. If I can be given access (@animeshsingh) I can push both ppc64le and x86_64 images and create the manifest lists to support the multi-arch.
  • at the moment travil.yml (as far as I can tell looking into it) is doing testing only. It is not pushing images to the repos
  • learner images will go separate PR. will commit soon.

sdmonov avatar Sep 17 '18 20:09 sdmonov