Syllabus
Syllabus¶
Site en construction
Toutes les pages existent ; celles marquées « Under construction » sont en cours de rédaction et seront complétées au fil de l'avancement du cours.
Fiche d'identification¶
| Rubrique | Description |
|---|---|
| Intitulé | Orchestration de conteneurs avec Kubernetes |
| Public | Master DevOps et Cloud Computing, semestre 2 |
| Volume horaire | 45 h (15 séances de 3 h : environ 15 h de cours, 30 h de TP) |
| Crédits | 3 ECTS |
| Prérequis | Linux, réseau (TCP/IP, DNS), conteneurs (Docker), YAML, notions de CI/CD |
| Outils de TP | k3s (1 serveur + 2 agents), kubectl, Helm ; voir l'environnement VMware |
Objectif général¶
Concevoir, déployer, sécuriser et exploiter des applications cloud-native sur Kubernetes, en autonomie, selon les pratiques DevOps et GitOps.
Acquis d'apprentissage¶
À la fin du cours, l'étudiant est capable de :
- AA1 : expliquer l'architecture de Kubernetes et le modèle déclaratif (comprendre)
- AA2 : déployer et mettre à jour des applications conteneurisées (appliquer)
- AA3 : exposer des services et contrôler les flux réseau (appliquer)
- AA4 : gérer configuration, stockage et sécurité (appliquer)
- AA5 : diagnostiquer et résoudre des incidents (analyser)
- AA6 : mettre en place observabilité et autoscaling (analyser)
- AA7 : automatiser le déploiement par Helm, CI/CD et GitOps (créer)
- AA8 : évaluer une architecture selon fiabilité, coût et sécurité (évaluer)
Compétences visées¶
Architecture du control plane et des nœuds, objets Kubernetes, réseau (CNI, Services, Ingress), stockage (CSI), modèle de sécurité (RBAC, Pod Security).
Maîtrise de kubectl, rédaction de manifestes, packaging Helm et Kustomize, administration d'un cluster k3s, pipelines CI/CD et GitOps (Argo CD), supervision (Prometheus, Grafana), dépannage.
Autonomie, rigueur (infrastructure as code, revue de pairs), travail en équipe, veille technologique.
Organisation du cours¶
Partie 1 : Fondations (9 h)¶
| Chapitre | Contenu | Ressources |
|---|---|---|
| 1. Architecture de Kubernetes (AA1) | Du conteneur à l'orchestration, control plane, modèle déclaratif | Cours · Lab 1.1 : Installer k3s et explorer le cluster · Lab 1.2 : Prise en main de kubectl |
| 2. Pods et Deployments (AA1, AA2) | Pods et cycle de vie, ReplicaSets, Deployments, stratégies de mise à jour, labels et sélecteurs | Cours · Lab 2.1 : Mon premier Pod · Lab 2.2 : Deployments et mises à jour |
| 3. Services et réseau (AA3) | Services (ClusterIP, NodePort, LoadBalancer), DNS interne, Ingress et Gateway API | Cours · Lab 3.1 : Exposer une application · Lab 3.2 : Ingress avec Traefik |
| Mini-projet 1 | Application web à deux niveaux | Énoncé |
Partie 2 : Configuration, données et sécurité (12 h)¶
| Chapitre | Contenu | Ressources |
|---|---|---|
| 4. Configuration et ressources (AA4) | ConfigMaps, Secrets, variables d'environnement et volumes de configuration, requests et limits, ResourceQuotas, LimitRanges | Cours · Lab 4.1 : Externaliser la configuration · Lab 4.2 : Maîtriser les ressources |
| 5. Stockage (AA4) | Volumes, PV, PVC, StorageClass, StatefulSets, service headless | Cours · Lab 5.1 : Volumes persistants · Lab 5.2 : Base de données avec StatefulSet |
| 6. Workloads spécialisés (AA2) | Jobs, CronJobs, DaemonSets, patterns multi-conteneurs (init, sidecar, ambassador) | Cours · Lab 6.1 : Jobs et CronJobs · Lab 6.2 : Patterns multi-conteneurs |
| 7. Sécurité (AA4) | RBAC, ServiceAccounts, SecurityContext, Pod Security Standards, NetworkPolicies | Cours · Lab 7.1 : RBAC · Lab 7.2 : Durcir un Pod · Lab 7.3 : NetworkPolicies |
| Mini-projet 2 | Votre application trois niveaux, sécurisée et persistante | Énoncé |
Partie 3 : Exploitation (9 h)¶
| Chapitre | Contenu | Ressources |
|---|---|---|
| 8. Administration du cluster k3s (AA1, AA5) | Haute disponibilité avec etcd embarqué, sauvegarde et restauration, mise à jour de version, maintenance des nœuds | Cours · Lab 8.1 : Cluster HA · Lab 8.2 : Sauvegarde, restauration et mise à jour |
| 9. Observabilité et dépannage (AA5, AA6) | Logs, événements, probes, métriques, Prometheus, Grafana, alerting, méthodologie de diagnostic | Cours · Lab 9.1 : Probes · Lab 9.2 : Monitoring · Lab 9.3 : Dépannage |
| 10. Autoscaling et scheduling (AA6) | HPA, VPA, affinités, taints et tolerations, PodDisruptionBudget | Cours · Lab 10.1 : HPA · Lab 10.2 : Placement |
| Mini-projet 3 | Exploitation d'une application sous charge | Énoncé |
Partie 4 : Industrialisation (15 h)¶
| Chapitre | Contenu | Ressources |
|---|---|---|
| 11. Helm et Kustomize (AA7) | Charts, values, releases, templates, overlays Kustomize | Cours · Lab 11.1 : Utiliser Helm · Lab 11.2 : Packager son application |
| 12. CI/CD et GitOps (AA7) | Pipeline de build et de livraison, registre d'images, principes GitOps, Argo CD | Cours · Lab 12.1 : Pipeline CI · Lab 12.2 : GitOps avec Argo CD |
| 13. Cloud managé et haute disponibilité (AA8) | Kubernetes managé (AKS, EKS), modèle de responsabilité partagée, coûts, TLS et exposition publique | Cours · Lab 13.1 : Haute disponibilité multi-zones · Lab 13.2 : Exposition sécurisée avec TLS |
| 14. Extensibilité (AA8) | CRD, opérateurs, service mesh (aperçu) | Cours · Lab 14.1 : CRD et opérateur · Lab 14.2 : Découverte du service mesh |
| 15. Projet fil rouge et synthèse (AA1 à AA8) | Application microservices complète, soutenance | Synthèse · Projet fil rouge |
Méthodes pédagogiques¶
Cours interactifs courts, TP guidés sur cluster k3s, classe inversée, études de cas d'incidents, projet fil rouge en binôme. Chaque partie se termine par un mini-projet, avec une autonomie croissante (guidé, semi-guidé, autonome).
Évaluation¶
| Modalité | Pondération |
|---|---|
| Contrôle continu : TP notés et quiz | 30 % |
| Projet fil rouge : déploiement, rapport et soutenance | 40 % |
| Examen pratique chronométré sur cluster | 30 % |
Des grilles critériées sont associées à chaque acquis d'apprentissage.
Références¶
- Documentation officielle : kubernetes.io et docs.k3s.io
- M. Lukša, Kubernetes in Action
- B. Ibryam et R. Huß, Kubernetes Patterns
- J. Rosso et al., Production Kubernetes