# Plateforme

# Ressources

En tant que club sous la régie des clubs, nous avons accès au local D-2020, où nous disposons de trois postes de bureau ainsi que d’espaces communs de travail.

Nous avons également accès au D-2022 comme entrepôt. Seuls le capitaine, le co-capitaine et les chefs d’équipe y ont accès via la gestion des membres sur la plateforme clubetudiants.

Finalement, nous disposons de racks de serveurs au D-2021. Nous avons deux liens fibre de 1 Gb/s via le [RISQ](https://www.risq.quebec/), ainsi que des switches core et des switches de management. La salle est ventilée et plusieurs clubs étudiants y ont accès. Les racks peuvent être barrés avec une clé, et la régie gère les accès via le système Traka.


---

## Ressources physiques

Nous avons 8 serveurs et un NAS, soit près de 40 To en SSD dans les serveurs et 100 To en disques durs dans le NAS, ainsi que 3 petits serveurs non utilisés.

Cette infrastructure est partagée entre les clubs grâce à un contrat signé entre le LAN ETS et CEDILLE afin de mettre les ressources en commun.

*(Détailler les spécificités du matériel…)*


---

## Ressources logicielles

Nous utilisons majoritairement des logiciels libres ou à usage gratuit (Proxmox, OPNsense, Talos Linux, ArgoCD, Kubernetes, Docker, Git…).

Nous avons également accès à la plateforme Omni Sidero grâce à un sponsor, ce qui nous permet de gérer les accès Kubernetes de nos membres.


---

# La plateforme CEDILLE

Nous appelons « Plateforme CEDILLE » l’ensemble des services que nous construisons avec nos ressources.

Nous offrons divers services tout en rendant l’expérience des membres éducative.


---

## Infrastructure

 ![](https://s3.etsmtl.club/outline-cedille-attachment-b9bf26e7-4dde-4f28-835c-f6879af46df5/uploads/e71ea812-4fce-4635-9662-841f5ade404d/79669638-7cb9-44e0-8ca2-80fc1fb21819/CEDILLE-infra2026.drawio.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=IHX65OZKPGOMMNY1XPO2%2F20261013%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20261013T020000Z&X-Amz-Expires=86400&X-Amz-Signature=28dace80e3319045564b6201b95d049c94cb79d75ee95fee26c9c0110b33875e&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject " =884x1280")

Nos 8 serveurs utilisent [Proxmox](https://www.proxmox.com/en/) comme système d’exploitation. [Proxmox](https://www.proxmox.com/en/) est un hyperviseur permettant la gestion des VM, du stockage, etc.

Nous utilisons [Rook](https://rook.io/)/[Ceph](https://docs.ceph.com/en/squid/cephfs/) comme stockage distribué à travers nos machines.

Les VM créées par [Proxmox](https://www.proxmox.com/en/) utilisent [Talos Linux](https://www.talos.dev/), une distribution Linux minimaliste qui intègre [Kubernetes](https://kubernetes.io/). Il est impossible de se connecter en SSH aux VM Talos : elles exposent uniquement une API Omni/Kubernetes.

Nous avons actuellement 4 clusters [Kubernetes](https://kubernetes.io/) :

* Production-v2
* Sandbox
* Shared
* Management-v2

Ces clusters ont des configurations différentes. Dans les prochains mois, nous prévoyons migrer vers une architecture simplifiée avec un cluster de production et un cluster sandbox.

CEDILLE utilise une approche GitOps : les déploiements sont définis dans des dépôts Git. Chaque cluster possède son propre dépôt, hébergé sur [GitHub](https://github.com/ClubCedille).

[ArgoCD](https://argo-cd.readthedocs.io/en/stable/) est utilisé pour surveiller ces dépôts et déployer automatiquement les applications décrites.  
  
Pour la documentation des déploiemens par ansible, toute la documentation à dans ce repo: <https://github.com/ClubCedille/AnsibleInfra>


---

## Déploiements

Les déploiements correspondent à des applications simples (site web, base de données, application) pour un seul club.

Actuellement, les déploiements sont effectués sur le cluster [Production-v2](https://github.com/ClubCedille/k8s-cedille-production-v2).


---

## Services

Les services correspondent à des déploiements partagés utilisés par l’ensemble de la communauté.

Ils nécessitent de la maintenance, des mises à jour, des sauvegardes, de la documentation et du support aux « clients ».

Actuellement, les services sont déployés sur le cluster [Shared](https://github.com/ClubCedille/k8s-shared).


---

## Développement

CEDILLE cherche constamment à automatiser ses procéssus.

Nous avons développé un [bot Discord](https://github.com/ClubCedille/trema) permettant aux nouveaux membres d’exécuter la commande `/request join` et de fournir leurs informations. Cela crée automatiquement une pull request sur GitHub contenant du code Terraform pour :

* les ajouter à l’organisation GitHub
* les ajouter au groupe Omni (accès Kubernetes)
* les intégrer à Netdata (observabilité)

Nous avons également un [backend en Go](https://github.com/ClubCedille/calidum-rotae), structuré en microservices.


---

## Sécurité

Nous utilisons [Vaultwarden](https://github.com/dani-garcia/vaultwarden) pour la gestion des mots de passe internes.

Nous sommes en train de déployer [HashiCorp Vault](https://developer.hashicorp.com/vault) pour la gestion des secrets dans [Kubernetes](https://kubernetes.io/).

L’accès à [Kubernetes](https://kubernetes.io/) est limité aux membres qui en ont besoin pour leurs projets. Nous encourageons :

* les déploiements en sandbox
* les déploiements en production via pull request
* la révision obligatoire avant fusion

Pour les services nécessitant une authentification, nous utilisons [Authentik](https://goauthentik.io/) comme SSO avec les comptes étudiants (incluant le 2FA).

Selon les cas, nous utilisons également [Authentik](https://goauthentik.io/) ou GitHub comme SSO pour les outils internes.

Tous les déploiements doivent être en HTTPS. Les images sont « pinnées » (versions fixes) afin d’éviter l’introduction de vulnérabilités ou de breaking changes.

Nous utilisons [Kube-score](https://kube-score.com/) pour l’analyse statique de sécurité. Il reste du travail à faire pour améliorer :

* les network policies
* les permissions
* la configuration globale de sécurité

Nous utilisons également l’outil [Poutine](https://github.com/boostsecurityio/poutine) pour analyser les vulnérabilités dans les pipelines.


---

## Observabilité

En plus des dashboards de [Proxmox](https://www.proxmox.com/en/), [Omni](https://www.siderolabs.com/omni/) et [ArgoCD](https://argo-cd.readthedocs.io/en/stable/), nous utilisons :

* [Gatus](https://gatus.io/) comme status page (hébergée sur Google Cloud Platform)
* [Netdata](https://www.netdata.cloud/) pour les métriques
* [Coroot](https://coroot.com/) pour les traces

[Netdata](https://www.netdata.cloud/) inclut certaines alertes configurées.


---

## Sauvegardes

Nous sauvegardons les données de nos services quotidiennement sur [Backblaze](https://www.backblaze.com/).

Nous travaillons également à mettre en place des sauvegardes locales sur le NAS avec [Garage HQ](https://garagehq.deuxfleurs.fr/).

État détaillé des sauvegardes **→** [Backups](/doc/d6ea381c-ac1d-422d-b98f-55a4ca427e54)


---

# Amélioration continue

Ce diagramme montre le niveau d’activité de CEDILLE dans différentes sphères.

Ce qui est en vert est considéré comme fonctionnel, et ce qui est en jaune comme étant à améliorer.

 ![](https://s3.etsmtl.club/outline-cedille-attachment-b9bf26e7-4dde-4f28-835c-f6879af46df5/uploads/e71ea812-4fce-4635-9662-841f5ade404d/da8da2df-478c-4b12-a6cc-28592597f261/mindmap1.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=IHX65OZKPGOMMNY1XPO2%2F20261013%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20261013T020000Z&X-Amz-Expires=86400&X-Amz-Signature=062bb83f8ed3c8dbe7590773cf377651d7fdbdf0e1c34c7695765dfe2f650992&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject " =1582x2275")