FfDL icon indicating copy to clipboard operation
FfDL copied to clipboard

Helm charts refactor proposal

Open Tomcli opened this issue 7 years ago • 1 comments

As many users complaint about the usability of FfDL (a lots of them are regrading the deployment). We might want to deprecate the makefile approach because it's very scripted. Instead, I refactor the helm charts and convert some scripts such as creating the configmaps as part of the helm deployment. I also break down the current 2 helm charts into the below 3

  • docs/helm-charts/storage-plugin (for installing s3 driver)
  • docs/helm-charts/ffdl-helper (Installing the monitoring and infrastructure services (etcd/mongo/etc..) along with any local persistent volume and storage configmaps, previously done by scripts. This way we can avoid race condition from the ffdl-core services because DLaaS also have these services/pods deployed first).
  • docs/helm-charts/ffdl-core (All the ffdl-core services (trainer/lcm/etc..))

With this approach, we can deprecate the make deploy/quickstart-deploy to using 3 helm commands (Assuming Helm charts are hosted on our GitHub Pages)

export NAMESPACE=default
export SHARED_VOLUME_STORAGE_CLASS="ibmc-file-gold";

helm installibmcloud-object-storage-plugin --name ibmcloud-object-storage-plugin --repo https://ibm.github.io/FfDL/helm-charts --set namespace=$NAMESPACE # Configure s3 driver on the cluster
helm install ffdl-helper --name ffdl-helper --repo https://ibm.github.io/FfDL/helm-charts --set namespace=$NAMESPACE,shared_volume_storage_class=$SHARED_VOLUME_STORAGE_CLASS --wait # Deploy all the helper micro-services for ffdl
helm install ffdl-core --name ffdl-core --repo https://ibm.github.io/FfDL/helm-charts --set namespace=$NAMESPACE,lcm.shared_volume_storage_class=$SHARED_VOLUME_STORAGE_CLASS --wait # Deploy all the core ffdl services.

Having multiple helm charts allow users to delete/rollback their core ffdl charts without touching many of the infrastructure to help the development/testing process faster. This might also help with DLaaS because we can make the ffdl-core helm charts more concise.

Note this is a proposal PR with the helm charts. If we agree to work on this, we need to to deprecate the make deploy and publish the helm charts using GitHub-Pages (Will be published once merged to master branch).



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.

Tomcli avatar Oct 03 '18 20:10 Tomcli

Update: I rewritten the instructions and travis CI to use the helm charts only for deployment. Since the GitHub page won't be available until we merge it to master, anyone who wants to test it should use the below commands that use the local helm charts.

export NAMESPACE=default
export SHARED_VOLUME_STORAGE_CLASS="ibmc-file-gold";

helm install docs/helm-charts/ibmcloud-object-storage-plugin-0.1.tgz --set namespace=$NAMESPACE
helm install docs/helm-charts/ffdl-helper-0.1.1.tgz --set namespace=$NAMESPACE,shared_volume_storage_class=$SHARED_VOLUME_STORAGE_CLASS --wait
helm install docs/helm-charts/ffdl-core-0.1.1.tgz --set namespace=$NAMESPACE,lcm.shared_volume_storage_class=$SHARED_VOLUME_STORAGE_CLASS --wait

Tomcli avatar Oct 05 '18 21:10 Tomcli