Let JupyterHub configure and mount group volumes

On Z2JH there is no support for getting group-based volumes. To get group-based volumes two issues must be solved:

  1. The user’s group/team information should be available.
  2. The group-based volumes must reside on a network file system (e.g. NFS).

The reason for 2 is that users can be assigned to different physical machines in the cloud, therefore the volume’s underlying filesystem must support concurrent reads and writes from distinct machines. Issue 1 can already be solved if you manually write the group(s) for each user in the config file, but this is tedious and requires manually changing the config whenever a user is removed from a group or joins another group. This certainly wouldn’t work in any setting with >100 users from many different groups.

Issue 1 I already have proposed a solution for and an issue has been opened on the Jupyterhub/Oauthenticator github, which has been noticed and commented already.

Issue 2 is still open, and the solution to this issue consists of getting JupyterHub to automatically spawn the NFS server.

When both of these issues are solved, the hub config file should support something similar to this:

# The config should support the following:
    group_volumes: true
    group_volumes_server: "NFS" # Could be NFS by default

Over and over again I find posts from people asking about NFS on Z2JH or people asking about group functionality (myself included), which is why I really want this to be a part of JupyterHub itself. Here are just some examples to previous posts regarding NFS, group volumes or both:
Mar '22 - Asking about group volumes (my own post)
Mar '22 - Asking about group shares
Jun '21 - Manually getting group information in KubeSpawner class
Oct '20 - Asking about groups and shares
Sep '20 - Asking about NFS
Nov '19 - Talks about NFS on Z2JH