← all talks

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

Erwan Rougeux, MoodleMoot France 2019, Rennes, quinzième édition, du 3 au 5 juillet.

Présentation

Photo d'Erwan Rougeux
  • Directeur des systèmes d'information / RSSI
  • Passionné par le développement open source
  • White hat
  • J'aime les jeux de rôle, le go et le reggae
  • Association à but non lucratif
  • Réseau d'établissements français à l'étranger, de la maternelle au lycée
  • 109 établissements, dont 35 en pleine responsabilité
  • 60 000 élèves dans le monde
Logo de la Mission laïque française
Docker

Différence entre des machines virtuelles et Docker

À gauche, des applications dans des VM sur un hyperviseur ; à droite, des applications en conteneurs sur un seul système d'exploitation
Docker

Lexique

  • Image : élément de base d'un conteneur, c'est l'image qui va installer le service souhaité (service web, base de données, cache, etc.).
  • Build : étape pendant laquelle l'image est « compilée » pour être utilisable par les conteneurs.
  • Dockerfile : fichier de configuration de l'image, sa recette.
  • Docker Compose : fichier de configuration d'un ensemble de conteneurs.
  • Volume : espace dédié au stockage de fichiers, persistant ou non.
Docker

Démonstration : build et déploiement

Chaîne développement, test, production : versionnage, CI/CD, image Docker poussée vers un registre puis déployée on-premise ou dans le cloud
Docker

Les limites

  • Déploiement manuel
  • Pas d'état de fonctionnement disponible
  • Paramétrage fin impossible
  • Pas de proxy natif
  • Réplication et adaptation non disponibles
Docker

Les limites

  • Déploiement manuel
  • Pas d'état de fonctionnement disponible
  • Paramétrage fin impossible
  • Pas de proxy natif
  • Réplication et adaptation non disponibles
Orchestrateur
Kubernetes

Lexique

  • Orchestrateur : service qui va gérer l'ensemble des services Docker.
  • Master node : serveur regroupant les services clés de Kubernetes.
  • Node : serveur regroupant un ou plusieurs pods.
  • Pod : plus petite unité gérée par k8s, il peut contenir un ou plusieurs conteneurs.
  • etcd : stockage clé/valeur (partage de métadonnées).
Croquis d'un pod : un serveur web et index.php dans des conteneurs, à l'intérieur du pod
Kubernetes

Éléments principaux

Architecture Kubernetes : etcd, master node avec API server, scheduler et controller manager ; nodes avec kubelet et service proxy
Kubernetes

En action

Démonstration : un déploiement initialement à 3 replicas dans le tableau de bord Kubernetes
Kubernetes

Changement de culture

Une fillette serre un chien dans ses bras
Pets
Un troupeau de vaches dans un pré
Cattle
Kubernetes

Changement de culture

Un vieil homme et son chien
Pets
Un troupeau de vaches dans un pré
Cattle
Kubernetes

En résumé

Deux vaches nommées Anémone et Violette, face à un troupeau de vaches identifiées par des numéros
Kubernetes

Let's go to kube ?!

Kubernetes « the hard way » : on monte tout à la main.

  1. Prérequis
  2. Installation des clients
  3. Provisioning de ressources
  4. Certificats
  5. Configuration de Kube pour l'auth
  6. Chiffrement des données
  7. Bootstrap du cluster clé/valeur
  8. …
  9. Bootstrap des API de Kube
  10. Bootstrap des worker nodes
  11. Configuration de kubectl
  12. Provisioning des routes réseau
  13. DNS
  14. …
  15. Tests
  16. Nettoyage

Vingt et une étapes : il doit bien exister plus simple.

Kubernetes

Installation simple et rapide

Installe et gère un cluster Kubernetes sur toutes les infrastructures
Open source, aucune différence entre les versions CE et EE
Aucune modification de Kubernetes

Plug-ins possibles
Support des grands outils d'une infra DevOps :
  • GitLab
  • Stack ELK
  • SAML
  • …
Rancher

Merci de votre attention