Contactez-nous

Kubernetes : le guide de référence

Maîtrisez Kubernetes de A à Z avec ce cours complet et guide de référence ultime. Apprenez l'orchestration de conteneurs, du déploiement à la production, avec mises en pratique et études de cas.

Table des matières

  1. Introduction et concepts fondamentaux de Kubernetes
    1. Comprendre l'orchestration de conteneurs et Kubernetes
      1. Les défis de la gestion des conteneurs à grande échelle (revue)
      2. Qu'est-ce que l'orchestration ? Problématiques résolues
      3. Introduction à Kubernetes (K8s) : Origines, philosophie et objectifs
      4. Alternatives à Kubernetes (Docker Swarm, Nomad) : Brève comparaison
      5. L'écosystème Kubernetes et la CNCF (Cloud Native Computing Foundation)
    2. Architecture de Kubernetes
      1. Vue d'ensemble : Control Plane et Noeuds Workers
      2. Composants du Control Plane (API Server, etcd, Scheduler, Controller Manager)
      3. Composants des Noeuds Workers (Kubelet, Kube-proxy, Container Runtime)
      4. Le rôle du réseau (CNI) et du stockage (CSI) - Introduction
      5. Communication au sein du cluster
    3. Installation et configuration d'un environnement Kubernetes
      1. Options d'environnements : Local, Cloud managé, On-premise
      2. Installation et utilisation de kubectl : L'outil CLI K8s
      3. Configuration de kubectl pour accéder à différents clusters (kubeconfig)
      4. Exploration de base d'un cluster (cluster-info, get nodes)
    4. Objets fondamentaux de l'API Kubernetes
      1. Le modèle déclaratif et l'API Kubernetes
      2. Introduction aux fichiers manifestes YAML
      3. Les Pods : L'unité atomique de déploiement
      4. Les Namespaces : Isolation logique des ressources
      5. Les Labels et les Selectors : Organisation et ciblage des objets
      6. Les Annotations : Attacher des métadonnées non identifiantes
  2. Déployer et exposer des applications
    1. Gérer les déploiements d'applications (Workloads)
      1. Les contrôleurs de Workloads : Assurer l'état désiré
      2. Deployments : Déploiement et mise à jour d'applications stateless
      3. ReplicaSets : Assurer un nombre défini de réplicas de Pods (géré par Deployment)
      4. Stratégies de mise à jour (RollingUpdate, Recreate)
      5. Gérer les déploiements (kubectl rollout, scale)
    2. Exposer les applications avec les Services
      1. Le problème de l'accès aux Pods (IPs éphémères)
      2. Introduction aux Services : Abstraction réseau stable
      3. Types de Services : ClusterIP, NodePort, LoadBalancer
      4. Découverte de services via DNS interne (CoreDNS)
      5. Service Headless : Découverte directe des Pods
    3. Configuration des applications
      1. Passer des arguments et variables d'environnement aux conteneurs
      2. ConfigMaps : Gérer la configuration non sensible
      3. Secrets : Gérer les données sensibles (mots de passe, clés API)
      4. Utilisation des ConfigMaps et Secrets comme variables ou volumes
  3. Stockage et applications avec état (Stateful)
    1. Gestion du stockage persistant
      1. Volumes dans les Pods : Partage de données et persistance (emptyDir, hostPath)
      2. Introduction à l'abstraction du stockage : PersistentVolumes (PV)
      3. Réclamer du stockage : PersistentVolumeClaims (PVC)
      4. Provisionnement dynamique avec les StorageClasses
      5. Modes d'accès aux volumes (ReadWriteOnce, ReadOnlyMany, ReadWriteMany)
    2. Déployer des applications avec état (StatefulSets)
      1. Les défis des applications stateful (bases de données, etc.)
      2. Introduction aux StatefulSets : Identifiants réseau et stockage stables
      3. Garanties des StatefulSets (ordre de déploiement/suppression)
      4. Utilisation conjointe des StatefulSets et des Services Headless
      5. Cas d'usage et comparaison avec les Deployments
  4. Réseau avancé dans Kubernetes
    1. Routage externe avec les Ingress
      1. Limites des Services NodePort et LoadBalancer pour l'exposition HTTP/S
      2. Introduction aux Ingress : Routage L7 (HTTP/S)
      3. Les contrôleurs Ingress (Nginx Ingress, Traefik, etc.) : Rôle et installation
      4. Configuration du routage basé sur l'hôte et le chemin
      5. Terminaison TLS avec les Ingress
    2. Politiques réseau (Network Policies)
      1. Sécurité réseau par défaut (trafic ouvert dans le cluster)
      2. Introduction aux NetworkPolicies : Pare-feu au niveau des Pods
      3. Définir des règles d'entrée (Ingress) et de sortie (Egress)
      4. Sélectionner les Pods via les Labels
      5. Exemples de politiques réseau (isolation par défaut, autorisation spécifique)
    3. Concepts réseau approfondis
      1. Le modèle CNI (Container Network Interface) : Comprendre le fonctionnement du réseau des Pods
      2. Fonctionnement du DNS interne (CoreDNS en détail)
      3. Interaction entre Kube-proxy, Services et Endpoints/EndpointSlices
  5. Ordonnancement, ressources et auto-scaling
    1. Gestion des ressources des conteneurs
      1. Définir les requêtes (requests) et les limites (limits) de CPU et mémoire
      2. Classes de Qualité de Service (QoS) : Guaranteed, Burstable, BestEffort
      3. Gérer les ressources au niveau du Namespace : ResourceQuotas et LimitRanges
    2. Ordonnancement avancé des Pods (Scheduling)
      1. Fonctionnement du Scheduler Kubernetes
      2. Contraindre les Pods à certains noeuds : Node Selectors et Node Affinity
      3. Eviter certains noeuds : Taints et Tolerations
      4. Colocation et séparation des Pods : Pod Affinity et Anti-Affinity
    3. Auto-scaling dans Kubernetes
      1. Horizontal Pod Autoscaler (HPA) : Scaler les Pods en fonction des métriques (CPU, mémoire, custom)
      2. Vertical Pod Autoscaler (VPA) : Ajuster les requêtes/limites des Pods
      3. Cluster Autoscaler : Ajuster le nombre de noeuds dans le cluster (spécifique au cloud/infra)
  6. Sécurité dans Kubernetes
    1. Authentification et autorisation (RBAC)
      1. Authentification : Utilisateurs vs ServiceAccounts
      2. Autorisation avec RBAC (Role-Based Access Control)
      3. Objets RBAC : Roles, ClusterRoles, RoleBindings, ClusterRoleBindings
      4. Bonnes pratiques pour la gestion des permissions
    2. Sécurité des Pods et des conteneurs
      1. Contexte de sécurité (Security Context) : Définir les privilèges au niveau Pod/conteneur
      2. Pod Security Admission : Appliquer des standards de sécurité
      3. Sécurisation des images conteneurs (scan de vulnérabilités - intégrations externes)
      4. Gestion sécurisée des Secrets (revisité, chiffrement etcd, solutions externes)
    3. Sécurité du cluster et audit
      1. Sécurisation des composants du Control Plane (API Server, etcd)
      2. Sécurisation de la communication intra-cluster (mTLS)
      3. Audit Logs : Suivre les actions sur l'API Server
      4. Network Policies (rappel et importance pour la sécurité)
  7. Maintenance, opération et observabilité
    1. Maintenance et mise à niveau du cluster
      1. Procédures de mise à niveau de Kubernetes (Control Plane, Noeuds)
      2. Drainer les noeuds pour la maintenance (kubectl drain)
      3. Sauvegarde et restauration du cluster (etcd, Velero)
    2. Observabilité : Monitoring, Logging, Tracing
      1. Monitoring : Collecte de métriques (Metrics Server, Prometheus, Grafana)
      2. Logging : Collecte et agrégation des logs des conteneurs (architecture EFK/Loki)
      3. Tracing distribué : Suivre les requêtes à travers les services (Jaeger, Tempo)
      4. Sondes de santé (Probes) : Liveness, Readiness, Startup
  8. Fonctionnalités avancées et écosystème
    1. Etendre Kubernetes avec les Operators et CRDs
      1. Introduction aux Custom Resource Definitions (CRDs) : Etendre l'API K8s
      2. Le pattern Operator : Automatiser la gestion d'applications complexes
      3. Exemples d'Operators (Prometheus Operator, etcd Operator)
      4. Développer un Operator simple (aperçu)
    2. Gestion des applications avec Helm
      1. Introduction à Helm : Le gestionnaire de paquets pour Kubernetes
      2. Concepts clés : Charts, Releases, Repositories
      3. Créer et personnaliser des Charts Helm
      4. Gérer des applications avec les commandes Helm (install, upgrade, rollback)
    3. Kubernetes dans les pipelines CI/CD et GitOps
      1. Intégrer les déploiements Kubernetes dans les outils CI/CD (Jenkins, GitLab CI, GitHub Actions)
      2. Introduction au GitOps : Gérer l'infrastructure et les applications via Git
      3. Outils GitOps populaires (Argo CD, Flux)
    4. Ecosystème étendu et tendances
      1. Service Mesh : Gestion avancée du trafic inter-services (Istio, Linkerd)
      2. Serverless sur Kubernetes (Knative, OpenFaaS)
      3. Kubernetes sur l'edge (K3s, MicroK8s)
      4. Gestion multi-cluster
      5. WebAssembly (Wasm) et Kubernetes
  9. Conclusion
    1. Synthèse et perspectives
      1. Récapitulatif des compétences acquises en orchestration avec Kubernetes
      2. Maintenir ses connaissances à jour dans un écosystème en évolution rapide