---
sheet_format: 1.0
id: 2019-07-moodlemoot-docker-kubernetes
title: "Déployer et administrer facilement des services Moodle / Mahara grâce à Docker / Kubernetes"
title_en: "Easily deploying and running Moodle / Mahara services with Docker / Kubernetes"
speaker: Erwan Rougeux
with: []
date: 2019-07-03
event: "MoodleMoot France 2019"
place: "Couvent des Jacobins, Rennes, France"
format: talk
language: fr
duration: "33:15"
video: https://www.youtube.com/watch?v=L_xdSGWk4NU
slides: https://slides.wanoo.me/2019-07-moodlemoot-docker-kubernetes/
topics: [moodle, docker, kubernetes, rancher, edtech, mission laïque française, scalability]
source: "Summary written by Claude (AI) from the auto-generated YouTube captions, and the slides. Not a verbatim transcript; check the recording before quoting."
review: spot-checked
review_date: 2026-10-17
---

# Déployer et administrer facilement des services Moodle / Mahara grâce à Docker / Kubernetes

**In one sentence:** As CIO of the Mission laïque française, Erwan Rougeux explains to Moodle administrators how a three-person team runs Moodle for 60,000 students worldwide with Docker containers, Kubernetes and Rancher, with live demos.

## TL;DR
Erwan presents the Mission laïque française (MLF), a non-profit network of 109 French schools abroad, where three people manage services like Moodle for 60,000 students with little money. They moved to Docker around 2013 and later to Kubernetes: the same five bare-metal servers that once hosted about twenty VMs now run more than a hundred services at the same cost. He explains Docker (images, Dockerfile, build, Docker Compose, volumes), builds and runs a Moodle stack live, then lists Docker's limits, which an orchestrator solves: Kubernetes with health checks, self-healing, autoscaling and rolling upgrades, installed easily with Rancher. The takeaways: treat servers as cattle, not pets; a school in Casablanca reached about 2,100 simultaneous Moodle users thanks to autoscaling; and the team "got its weekends back".

## Erwan's key points
- He presents himself as CIO of the Mission laïque française, passionate about open-source development, with a white-hat background.
- He argues that a small non-profit IT team (three people for about 60,000 students) could not keep the classic model of hand-tended virtual machines.
- With Docker and then Kubernetes, the MLF went from about twenty VMs to more than a hundred services on the same five bare-metal servers in a French datacenter, at the same price.
- Docker isolates each component (Apache/PHP with Moodle, database, cron) in its own container built from one reusable image; persistent data lives in volumes, which makes backups and testing migration scripts locally easy.
- He runs Moodle's cron in a separate back-office container so a malicious script slipped into a cron task never reaches the web-facing container.
- Docker alone has limits: manual deployment, no health status, no native proxy or load balancing, no replication. The orchestrator fixes these.
- Kubernetes checks readiness and heartbeat, destroys and recreates failing pods without investigating, spreads load across nodes and scales out on thresholds the team defines.
- He calls this a culture change from "pets" to "cattle": servers no longer get names and individual care.
- Rancher packages Kubernetes so a cluster can be set up quickly; he notes there is no difference between its community and enterprise editions except support.
- Kubernetes is not magic and needs some hands-on work, but he says anyone who can set up a VM can learn it, and rolling upgrades (e.g. Moodle 3.6 to 3.7) avoid downtime; he cites about 99.5% availability, limited by the datacenter.

## Outline
- [0:00](https://www.youtube.com/watch?v=L_xdSGWk4NU&t=0s) Opening: a very technical talk; quick show of hands on who already uses Docker.
- [1:09](https://www.youtube.com/watch?v=L_xdSGWk4NU&t=69s) Erwan introduces himself (CIO of the MLF, open source, white hat) and the MLF network: 109 schools, 35 fully managed, Moodle for 60,000 students.
- [2:23](https://www.youtube.com/watch?v=L_xdSGWk4NU&t=143s) Three people, no money: the move to Docker from 2013; five bare-metal servers, from about 20 VMs to more than 100 services.
- [3:34](https://www.youtube.com/watch?v=L_xdSGWk4NU&t=214s) Virtual machines versus Docker containers, and why isolating dependencies saves resources.
- [5:34](https://www.youtube.com/watch?v=L_xdSGWk4NU&t=334s) Vocabulary: image, build, Dockerfile, Docker Compose; destroy and rebuild instead of repairing; data volumes.
- [7:51](https://www.youtube.com/watch?v=L_xdSGWk4NU&t=471s) Demo: a Moodle Dockerfile based on a PHP/Apache image, using Moosh for scripted plugin and theme installs.
- [9:22](https://www.youtube.com/watch?v=L_xdSGWk4NU&t=562s) Demo: a Compose file with three services (Moodle, cron in its own container, database) launched in minutes.
- [11:19](https://www.youtube.com/watch?v=L_xdSGWk4NU&t=679s) Docker's limits: manual deployment, no health status, no integrity check, no load balancing.
- [12:54](https://www.youtube.com/watch?v=L_xdSGWk4NU&t=774s) Running many copies of one image behind a proxy to absorb exam-time peaks; the Moodle demo comes up.
- [14:05](https://www.youtube.com/watch?v=L_xdSGWk4NU&t=845s) The orchestrator: master and worker nodes, pods, labels, the etcd key-value store.
- [16:23](https://www.youtube.com/watch?v=L_xdSGWk4NU&t=983s) Kubernetes components: API server, scheduler, controller manager, service proxy, kubelet; readiness and heartbeat checks.
- [18:41](https://www.youtube.com/watch?v=L_xdSGWk4NU&t=1121s) Demo animation: three replicas, rescheduling after a node failure, affinity rules.
- [20:11](https://www.youtube.com/watch?v=L_xdSGWk4NU&t=1211s) Pets versus cattle: stop naming and nursing servers.
- [20:56](https://www.youtube.com/watch?v=L_xdSGWk4NU&t=1256s) Kubernetes "the hard way" (21 steps) and Rancher as the easy route: open source, unmodified Kubernetes, scoped access for contractors, integrations.
- [23:14](https://www.youtube.com/watch?v=L_xdSGWk4NU&t=1394s) Live Rancher install and cluster creation on five local VMs.
- [25:52](https://www.youtube.com/watch?v=L_xdSGWk4NU&t=1552s) Q&A: what the key-value store is for, secrets and SSL certificates.
- [27:09](https://www.youtube.com/watch?v=L_xdSGWk4NU&t=1629s) Q&A: Galera (clustered MariaDB) for the database, shared moodledata on GlusterFS or NFS.
- [28:41](https://www.youtube.com/watch?v=L_xdSGWk4NU&t=1721s) Cluster capacity (110 pods per node; up to 750 on five machines) and the Casablanca school peak of about 2,100 simultaneous users.
- [31:01](https://www.youtube.com/watch?v=L_xdSGWk4NU&t=1861s) Load balancers scaled automatically, schools in China and Saudi Arabia, weekends regained; rolling Moodle upgrades and about 99.5% availability.

## Notable quotes
> "on n'est que trois pour gérer soixante mille élèves" — Erwan Rougeux, [2:23](https://www.youtube.com/watch?v=L_xdSGWk4NU&t=143s)
*"There are only three of us to manage sixty thousand students."*

> "mon serveur tombe en panne je m'embête pas, c'est toujours la même image, je détruis et j'en construis un nouveau" — Erwan Rougeux, [6:43](https://www.youtube.com/watch?v=L_xdSGWk4NU&t=403s)
*"My server breaks down, I don't bother: it's always the same image, I destroy it and build a new one."*

> "en gros moi j'ai récupéré des week-ends" — Erwan Rougeux, [31:01](https://www.youtube.com/watch?v=L_xdSGWk4NU&t=1861s)
*"Basically, I got my weekends back."*

> "c'est pas parfait, c'est pas magique, ça nécessite de mettre un peu les mains dans le cambouis" — Erwan Rougeux, [31:23](https://www.youtube.com/watch?v=L_xdSGWk4NU&t=1883s)
*"It's not perfect, it's not magic, you need to get your hands a bit dirty."*

## Questions this answers
**Q: How do you run Moodle with Docker?**
A: Erwan builds a Moodle image from a PHP/Apache base image with a Dockerfile, installs plugins and themes with Moosh, then uses Docker Compose to start three services: Moodle, a separate cron container and a database, with persistent data in volumes ([7:51](https://www.youtube.com/watch?v=L_xdSGWk4NU&t=471s)).

**Q: Why use Kubernetes for Moodle instead of plain Docker?**
A: Docker alone gives no health status, no load balancing and no replication. Kubernetes restarts failed pods, spreads load and scales out automatically when thresholds are crossed ([11:19](https://www.youtube.com/watch?v=L_xdSGWk4NU&t=679s), [16:23](https://www.youtube.com/watch?v=L_xdSGWk4NU&t=983s)).

**Q: How did the Mission laïque française host Moodle for 60,000 students?**
A: With a three-person team on five bare-metal servers in a French datacenter, moving from about 20 VMs to more than 100 containerised services at the same cost ([2:23](https://www.youtube.com/watch?v=L_xdSGWk4NU&t=143s)).

**Q: How many concurrent Moodle users can a Kubernetes setup handle?**
A: Erwan reports that a school in Casablanca peaked at about 2,100 students connected at the same time, with autoscaling adding servers when load crossed a defined threshold ([29:04](https://www.youtube.com/watch?v=L_xdSGWk4NU&t=1744s)).

**Q: What is the easiest way to install Kubernetes?**
A: Erwan recommends Rancher rather than the 21-step "hard way": it runs from a Docker command, creates clusters on custom machines or public clouds, and does not modify Kubernetes ([20:56](https://www.youtube.com/watch?v=L_xdSGWk4NU&t=1256s), [23:14](https://www.youtube.com/watch?v=L_xdSGWk4NU&t=1394s)).

**Q: How do you handle the Moodle database and moodledata in a cluster?**
A: The MLF uses a Galera cluster (clustered MariaDB) and mounts moodledata from shared storage that supports concurrent writes, such as GlusterFS, or NFS when writes are light ([27:09](https://www.youtube.com/watch?v=L_xdSGWk4NU&t=1629s)).

**Q: What does "pets vs cattle" mean in server management?**
A: Erwan uses it to describe the culture change: servers are no longer named and individually cared for, but numbered and replaced as soon as they fail, with Kubernetes doing it for you ([20:11](https://www.youtube.com/watch?v=L_xdSGWk4NU&t=1211s)).

## Mentioned
Mission laïque française (MLF), Moodle, Mahara, Moosh, Docker, Docker Compose, Docker Swarm, Kubernetes, etcd, kubelet, Rancher, Galera, MariaDB, GlusterFS, NFS, Apache, PHP, nginx, Amazon, Google, Azure, GitLab, ELK stack, SAML, Twitter, Casablanca, China, Saudi Arabia, MoodleMoot France, Université de Rennes 2 (CREA)

## Slides outline
1. Déployer et administrer facilement des services Moodle / Mahara… — title, MoodleMoot France 2019, Rennes
2. Présentation — CIO/CISO, open source, white hat; MLF: 109 schools, 35 fully managed, 60,000 students
3. Différence entre des machines virtuelles et Docker — VMs on a hypervisor vs containers on one OS
4. Lexique — image, build, Dockerfile, Docker Compose, volume
5. Démonstration : build et déploiement — dev/test/prod chain, CI/CD, registry, on-premise or cloud
6. Les limites — manual deployment, no health status, no fine tuning, no native proxy, no replication
7. Les limites — same list, answered by "Orchestrateur"
8. Lexique (Kubernetes) — orchestrator, master node, node, pod, etcd
9. Éléments principaux — etcd, API server, scheduler, controller manager, kubelet, service proxy
10. En action — demo of a deployment with 3 replicas
11. Changement de culture — pets vs cattle
12. Changement de culture — pets vs cattle (variant)
13. En résumé — named cows versus a numbered herd
14. Let's go to kube ?! — Kubernetes "the hard way": 21 steps
15. Installation simple et rapide — Rancher: any infrastructure, open source, unmodified Kubernetes, GitLab/ELK/SAML
16. Merci de votre attention
