HE-Arc/webapp-server

Issues, improvements, ideas for the new Kubernetes system that will replace this one

Opened this issue · 2 comments

J'ouvre cette issue suite à une discussion que @grunenwald et moi avons eu.

Pas mal de choses commencent à dater sur ce projet et il n'a jamais vraiment été activement maintenu.

Nous sommes en train de créer une nouvelle solution en utilisant Kubernetes pour fournir des conteneurs Docker aux étudiants et plus généralement à l'école (RaD et cours).

Cette issue à pour objectif de noter tous les problèmes, améliorations, idées que nous pourrions avoir et à ne pas oublier lors de la création du nouveau système. Je propose de discuter de toutes les idées dans cette issue. Une fois l'idée validé, je l'ajouterais dans cette description:

TODO:

Voir si uWSGI est la meilleure solution pour le déploiement.
Se renseigner sur le site de Django pour voir ce qu'il est recommandé d'utiliser : https://docs.djangoproject.com/en/4.0/howto/deployment/

greut commented

@SpicyPaper pour le contexte, ce projet crée un environment (sous forme d'image Docker) pour déployer des applications non cloud-native. Donc via SSH, qui sonne assez old school. Le but étant de cacher au maximum ce qui pourrait être fourni par un prestataire d'infogérance permettant de se concentrer sur le cœur, l'application web elle-même.

Demander de fournir une application sous forme de conteneur (+ ?) offre des challenges intéressants.

  • Stocker les conteneurs, ghcr.io (facile)
  • Fournir un moyen de déploiement. Kubernetes (managé ou pas?), Nomad?, Docker Swarm?

Alternatives possibles

Un cluster Kubernetes managé est une solution simple, il faudra y ajouter à minima une DB(aaS), un Ingress, et Cert-Manager (TLS) (voire un ingress basé sur Traefik, pas utilisé). Plus une gestion des droits d'accès afin que chaque puisse seulement casser des trucs dans son namespace.

Si, vous n'avez toujours qu'une seule machine (la fameuse srvz), Nomad peut être une solution viable, relativement simple où la configuration actuelle se traduirait assez simplement. Avec les namespaces, il est possible de fournir des jetons d'accès par équipe.

Docker Swarm, était donné comme mort, ne l'est pas, et je n'ai pas une expérience suffisante pour savoir si c'est une alternative viable pour s'en servir sur srvz.

Avis

Fournir un déploiement sous forme de conteneur Docker + configuration (YAML Kubernetes, Helm, Kustomize, Nomad job, docker-compose.yml, etc.) serait une bonne progression par rapport à l'état de l'art de quand ce projet a été concu.

La direction à prendre pour y arriver dépend pas mal des moyens à votre disposition. Si vous pouvez obtenir un cluster Kubernetes chez Azure ou GCP, c'est top. Si vous êtes coincé avec srvz, ça va être tendu d'aller vers du Kubernetes, sauf si vous avez des personnes passionnées par cet univers. Là, Nomad ou Docker (Swarm) vis Compose sont envisageables, sans trop devoir tout refaire ce qui existe ici.

Bonus

Je ne prendrai pas µWSGI aujourd'hui. Ceci dit, c'est un détail d'implantation.