Tutor development update: v3.4.0 preview, Kubernetes & Plugins

Hi all! I wanted to give some news on what I’m currently working on for Tutor so that you know what to expect in the coming days/weeks/months.

Right now, I’m working on getting Kubernetes support out of beta, as I announced in the tutor roadmap a couple weeks ago. I expected to make a release before the end of May, but I hit a minor road block that is going to postpone the release for a couple days. That road block concerns user-uploaded files: as you may or may not know, students and instructors are able to upload files to the LMS or the CMS, in Open edX. In the local Tutor install, these files are stored on disk, in the data/lms/uploads folder, for instance. When we deploy Open edX to Kubernetes, this becomes a problem: we expect the platform administrator to spin up many instances of the LMS docker container, in order to address scaling issues. If these uploaded files are stored in a local folder, that means that these containers need to share a volume mounted with ReadWriteMany access mode. The problem is that most Kubernetes cloud providers do not offer volumes with ReadWriteMany access mode out of the box. There exist solutions to install such volumes, such as Rook, but it’s pretty complex to set them up.

So, I need to find a way not to require ReadWriteMany access mode volumes. The way to achieve that is to use object storage. AWS, for instance, offers object storage in the form of S3. And that’s great, because Open edX offers the possibility to store user-uploaded files on S3! Actually, this is what edX does on their deployment of edx.org.

There is just one problem: Tutor should not require AWS for Kubernetes deployment. S3 cannot be a requirement for Tutor, as many users do not have the option to deploy on AWS (think governments and universities with their own Kubernetes cluster). So, Tutor needs a tool to emulate S3. Again, there is great news! Such a tool exists, and it’s called MinIO: it’s not S3, but it has the same API as S3, so it’s compatible with Open edX. At least it should be. I hope :crossed_fingers: :fearful:

So, right now, I’m in the process of integrating MinIO with Open edX so that anyone can store user-uploaded files in their own object store.

I could have integrated MinIO to Tutor in a clunky, unnatural way, kind of like I did with Notes and Xqueue. But then, I also wanted to start working on a plugin system for Tutor. So I’m currently creating the plugin system, with MinIO as the first example plugin, to support object storage both on local platforms and Kubernetes. Here are the corresponding pull requests, which are currently labelled “works in progress”:


I expect to merge both PRs sometime next week. At that point, we should have both a working Kubernetes deployment solution, a plugin system, and a plug-n-play object store for Open edX. Yay!

And then, what’s coming up? I expect to be working on Ecommerce and Figures, better monitoring/alerting and backup tools, and a few other things which I should probably not mention publicly until I’m actually sure I’ll do them :wink:

Btw, if there are things you need from Tutor, I’m all ears! Please post your ideas here :point_down:

5 Likes

Aaaaaaand, it’s out!


https://docs.tutor.overhang.io/k8s.html
https://docs.tutor.overhang.io/plugins.html

Looking forward to your feedback and bug reports!