XWiki Kubernetes helm chart

Hello Folks,

We’re trying to set the priorities for the XWiki’s helm chart for GSOC.

What do you guys think would be most essential tasks for the helm chart? We have thought of a couple of things:

  • Support for clustering → Time to implement would depend on the approach (Jgroups vs external object store)
  • Optional support for Glowroot → 1-2 day task
  • RBAC support → 1 day task

Please feel free to explore the helm chart[1] and share your wish-lists.

[1] GitHub - xwiki-contrib/xwiki-helm: Kubernetes Helm Charts for XWiki

On this topic I started exploring Kubernetes and Helm Charts on my side too. I’d like to gather the knowledge to help maintain it on the long term (similar to what I do for the docker images) and make it an official distribution option for XWiki.

This is mostly a FYI message. I still need some time to ramp up my knowledge of k8s/helm :slight_smile:

Some questions (sorry I haven’t checked the helm chart yet…):

  • How does upgrade currently works in the XWiki Helm chart? For ex, it happens that there’s the need to perform some actions when upgrading (for ex turn on database migration, merge config files, etc). Is this supported right now or not? If not, then it would be interesting to handle it.
  • What DBs are currently supported? Both MySQL and PostgreSQL?
  • Same question for Servlet container? Both Tomcat and Jetty?Just Tomcat?
  • Is libreoffice supported already in the helm chart?
  • Is SOLR in external mode already supported?
  • Do we provide a special distribution id for this distribution? If not, we should do that ASAP so that we recognize it in the distribution stats at https://www.xwiki.org/xwiki/bin/view/ActiveInstalls/

What needs to be done IMO:

  • Review the current process for updating the chart and re-publishing it, along with the versioning strategy
  • Review what’s needed to make it an official chart
  • Test it (I need to do that on my side too) under various k8s setups (minikube, GKE, etc).
  • When ready, document it on xwiki.org

WDYT?

  • How does upgrade currently work in the XWiki Helm chart? For ex, it happens that there’s the need to perform some actions when upgrading (for ex turn on database migration, merge config files, etc). Is this supported right now or not? If not, then it would be interesting to handle it.

    • During an upgrade, essentially newer container images would be used. Volumes and DBs would be preserved. However I think you’re referring to automatically turning on migrations config during a helm upgrade, and then disabling once migrations are done. That’s not done yet, however we can do it via helm chart hooks
    • We may potentially need to change how we handle config, unless XWiki (or the docker image) can turn-on database migration from environment variables.
  • What DBs are currently supported? Both MySQL and PostgreSQL?

    • Yes both MySQL and PostgresSQL and you can use the chart to setup DBs while installation, or use external DBs.
  • Same question for Servlet container? Both Tomcat and Jetty?Just Tomcat?

    • I think this depends on the image being used. By default it just picks the latest default official XWiki image. If a user wants to use a different image, he can easily override it.
    • We could also explicitly expose a Helm option to toggle the servlet container. It’s pretty trivial and the user would not require going to the official docker repo for finding the right tag.
  • Is libreoffice supported already in the helm chart?

    • I don’t think so. We can add support for enabling Libreoffice with a single flag.
  • Is SOLR in external mode already supported?

    • Yes its supported.
  • Do we provide a special distribution id for this distribution? If not, we should do that ASAP so that we recognize it in the distribution stats at https://www.xwiki.org/xwiki/bin/view/ActiveInstalls/

    • I don’t think so. We should add that :slight_smile:

What needs to be done IMO:

  • Review the current process for updating the chart and re-publishing it, along with the versioning strategy
    • Yes this is important. There are a couple of approaches. Lets discuss and finalise that.
  • Review what’s needed to make it an official chart
    • We can discuss this in the above discussion.
  • Test it (I need to do that on my side too) under various k8s setups (minikube, GKE, etc).
    • I’ve only tested locally so far
  • When ready, document it on xwiki.org
    • Yes, lets do this after the above tasks :slight_smile:

Thanks @ashish932 for the updated data :wink:

For GSOC this year. I have come up with the following points.

  • Add support for XWiki migrations via helm upgrade command. For example, there may need to be temporary config changes required during the migration process. ~ 1-2 weeks

  • Add support for LibreOffice and Jetty. ~ 1-2 days

  • Add Support for Clustered XWiki – this depends if we should support Jgroups or other implementtion.

@vmassol WDYT? How about we add tasks from xwiki-docker as well in this?