0% ont trouvé ce document utile (0 vote)
2 vues56 pages

DEVOPS

Le DevOps est un ensemble de pratiques et de principes visant à rapprocher le développement et les opérations pour améliorer la qualité et la rapidité des livraisons. Il repose sur une culture de collaboration, de transparence et d'apprentissage, avec des principes fondamentaux comme l'automatisation et la mesure. Le cours aborde également l'importance du contrôle de version avec Git pour une collaboration efficace entre développeurs.

Transféré par

redabrim2002
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
2 vues56 pages

DEVOPS

Le DevOps est un ensemble de pratiques et de principes visant à rapprocher le développement et les opérations pour améliorer la qualité et la rapidité des livraisons. Il repose sur une culture de collaboration, de transparence et d'apprentissage, avec des principes fondamentaux comme l'automatisation et la mesure. Le cours aborde également l'importance du contrôle de version avec Git pour une collaboration efficace entre développeurs.

Transféré par

redabrim2002
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

DEVOPS

CH1

🚀 Qu’est-ce que le DevOps (à retenir absolument)

Le DevOps n’est PAS un outil.

👉 C’est un ensemble de pratiques, de principes et une culture qui vise à :

 rapprocher Développement (Dev) et Opérations (Ops),

 réduire le temps de livraison,

 améliorer la qualité, la stabilité et la fiabilité des systèmes,

 livrer souvent, vite et sans casser la prod.

Avant DevOps, les équipes travaillaient en silos, ce qui causait :

 des déploiements lents,

 beaucoup d’erreurs humaines,

 des bugs détectés trop tard,

 la fameuse phrase : « Ça marche sur ma machine » 😅 .

🧠 La philosophie clé : la culture avant les outils

80 % culture – 20 % outils

Les piliers culturels DevOps :

 Collaboration : responsabilité partagée Dev + Ops

 Transparence : communication continue

 Apprentissage : post-mortems sans blâme

 Responsabilisation : chacun est responsable de la fiabilité

👉 C’est TRÈS important pour les examens et les questions théoriques.

🔑 Les principes fondamentaux : le modèle CALMS

À connaître par cœur 👇

Lettre Principe Idée clé

C Culture Briser lehs silos

A Automation Automatiser builds, tests, déploiements


Lettre Principe Idée clé

L Lean Éliminer le gaspillage

M Measurement Mesurer tout (perf, MTTR, fréquence)

S Sharing Partage des connaissances

🔄 Cycle de vie : Traditionnel vs DevOps

❌ Cycle traditionnel (SDLC)

 Étapes longues et séparées

 Tests tardifs

 Déploiements manuels

 Feedback lent

 Rollbacks difficiles

✅ Cycle DevOps

 Cycle continu (∞)

 Intégration, tests et déploiements automatisés

 Monitoring et feedback constants

 Collaboration Dev + Ops

👉 Le schéma en forme de ∞ (Dev ↔ Ops) est fondamental .

⚙️CI / CD : le cœur technique du DevOps

CI – Continuous Integration

 Le code est fusionné fréquemment

 Chaque push déclenche :

o build

o tests automatiques

 Objectif : détecter les bugs tôt

CD – Continuous Delivery / Deployment

 Delivery : prêt à déployer (validation manuelle possible)

 Deployment : déploiement automatique en production

Bénéfices :
 Moins d’erreurs humaines

 Déploiements rapides et fiables

 Petits changements réversibles

 Meilleure qualité logicielle

🧰 La DevOps Toolchain (vue d’ensemble)

Tu n’as PAS à maîtriser tous les outils, mais à comprendre leur rôle :

Étape Objectif Exemples

Plan Gestion de projet Jira, Trello

Code Versioning Git, GitHub, GitLab

Build Compilation Maven, Gradle

Test Tests auto JUnit, Selenium

Release CI/CD Jenkins, GitHub Actions

Deploy Containers Docker, Kubernetes

Operate Infra Ansible, Terraform

Monitor Logs & métriques Prometheus, Grafana

🔗 DevOps, Agile et Lean : le lien

 Agile → bien développer le logiciel

 Lean → optimiser les processus

 DevOps → livrer en continu, de manière fiable, sur toute la chaîne

👉 DevOps étend Agile et Lean à l’infrastructure et à la production .

🎯 Ce qu’on attend de toi dans ce cours

 Comprendre les concepts (plus que les outils)

 Être capable d’expliquer :

o pourquoi DevOps existe

o comment CI/CD améliore la qualité

o la différence entre delivery et deployment

 Savoir relier DevOps à Cloud, Big Data et automatisation


🟦 PARTIE 1 — Fondements et définition de DevOps

Q1. DevOps est principalement :

A. Un outil d’automatisation
B. Un langage de programmation
C. Une culture, des pratiques et des processus
D. Une plateforme cloud

Q2. L’objectif principal de DevOps est de :

A. Supprimer les équipes Ops


B. Réduire le cycle de vie du développement et améliorer la qualité
C. Remplacer les méthodes Agile
D. Augmenter la documentation

Q3. Avant DevOps, quel était le principal problème des organisations ?

A. Trop d’automatisation
B. Des équipes trop petites
C. Le travail en silos entre Dev, QA et Ops
D. Trop de tests automatisés

Q4. La phrase « It works on my machine » illustre :

A. Un bon test unitaire


B. Un problème de compatibilité matérielle
C. Un manque de collaboration et d’automatisation
D. Une bonne pratique DevOps

🟦 PARTIE 2 — Culture DevOps

Q5. Une transformation DevOps réussie repose principalement sur :

A. Les outils
B. Le budget
C. La culture
D. Le cloud

Q6. Quel élément n’est PAS un pilier culturel DevOps ?


A. Collaboration
B. Transparence
C. Blâme en cas d’incident
D. Apprentissage continu

Q7. Les post-mortems DevOps doivent être :

A. Orientés sanctions
B. Sans blâme
C. Réservés aux managers
D. Facultatifs

🟦 PARTIE 3 — Principes CALMS

Q8. Dans CALMS, le C signifie :

A. Code
B. Control
C. Culture
D. Cloud

Q9. Le principe Automation vise principalement à :

A. Supprimer les développeurs


B. Automatiser les tâches répétitives
C. Réduire la qualité
D. Éviter les tests

Q10. Le M de CALMS correspond à :

A. Management
B. Monitoring uniquement
C. Measurement
D. Maintenance

Q11. Quel indicateur est lié au principe Measurement ?

A. Nombre de développeurs
B. MTTR (Mean Time To Recovery)
C. Taille du code
D. Couleur des dashboards

🟦 PARTIE 4 — Cycle de vie logiciel


Q12. Dans le SDLC traditionnel, les tests sont généralement :

A. Continus
B. Automatisés dès le début
C. Réalisés tardivement
D. Inexistants

Q13. Quel problème est typique du cycle traditionnel ?

A. Feedback rapide
B. Déploiements fréquents
C. Rollbacks difficiles
D. Surveillance automatisée

Q14. Le cycle DevOps est souvent représenté par :

A. Un cercle fermé
B. Un modèle en V
C. Une boucle infinie
D. Un diagramme linéaire

🟦 PARTIE 5 — CI / CD

Q15. CI signifie :

A. Continuous Infrastructure
B. Continuous Integration
C. Centralized Integration
D. Cloud Integration

Q16. L’objectif principal de la CI est de :

A. Déployer en production
B. Détecter les bugs le plus tôt possible
C. Écrire plus de code
D. Supprimer les tests manuels

Q17. Quelle affirmation est correcte ?

A. Continuous Delivery = déploiement automatique en production


B. Continuous Deployment nécessite une validation manuelle
C. Continuous Deployment est entièrement automatisé
D. CI et CD sont identiques
Q18. Quelle est la bonne séquence CI/CD ?

A. Test → Code → Build → Deploy


B. Code → Build → Test → Deploy
C. Build → Code → Test → Deploy
D. Deploy → Test → Code → Build

🟦 PARTIE 6 — Automatisation et outils

Q19. Quel outil est typiquement utilisé pour l’Infrastructure as Code ?

A. Jenkins
B. Git
C. Terraform
D. Selenium

Q20. Docker est principalement utilisé pour :

A. La gestion de projet
B. La surveillance
C. La conteneurisation
D. Les tests unitaires

Q21. Kubernetes sert principalement à :

A. Compiler le code
B. Orchestrer des conteneurs
C. Écrire des tests
D. Gérer des tickets

Q22. Quel outil est associé au monitoring ?

A. Maven
B. Git
C. Prometheus
D. Jira

🟦 PARTIE 7 — Agile, Lean et DevOps

Q23. Agile se concentre principalement sur :

A. L’infrastructure
B. La valeur client et les itérations
C. La sécurité réseau
D. Le monitoring
Q24. Lean vise principalement à :

A. Ajouter des fonctionnalités


B. Éliminer le gaspillage
C. Automatiser uniquement
D. Supprimer les tests

Q25. DevOps étend Agile et Lean en :

A. Les remplaçant
B. Les limitant au Dev
C. Couvrant toute la chaîne de livraison
D. Supprimant les Ops

🟩 CORRIGÉ + EXPLICATIONS

1. C — DevOps = culture + pratiques + outils


2. B — Réduction du cycle + qualité
3. C — Problème clé : silos
4. C — Mauvaise intégration et communication

5. C — 80 % culture
6. C — DevOps est sans blâme
7. B — Apprentissage continu

8. C — Culture
9. B — Automatiser les tâches répétitives
10. C — Measurement
11. B — MTTR est un KPI clé

12. C — Tests tardifs


13. C — Rollbacks compliqués
14. C — Boucle infinie Dev ↔ Ops

15. B — Continuous Integration


16. B — Détection précoce
17. C — Déploiement automatique
18. B — Pipeline standard

19. C — Terraform = IaC


20. C — Conteneurs
21. B — Orchestration
22. C — Monitoring

23. B — Valeur client


24. B — Élimination du gaspillage
25. C — DevOps couvre tout le pipeline
🟦 PARTIE 1 — Compréhension fine de DevOps

Q1. Le DevOps cherche avant tout à optimiser :

A. Le coût du matériel
B. Le flux de livraison de bout en bout
C. Le travail individuel des développeurs
D. La documentation technique

Q2. Dans une organisation DevOps mature, la responsabilité de la stabilité du système est :

A. Uniquement celle des Ops


B. Celle de l’équipe QA
C. Partagée entre Dev et Ops
D. Externalisée

Q3. DevOps favorise principalement des déploiements :

A. Rares et volumineux
B. Fréquents et de petite taille
C. Manuels mais contrôlés
D. Réservés aux périodes creuses

🟦 PARTIE 2 — Collaboration et feedback

Q4. Le feedback rapide est important en DevOps car il :

A. Réduit la documentation
B. Permet des corrections précoces et peu coûteuses
C. Élimine le besoin de tests
D. Remplace les réunions

Q5. Quel mécanisme DevOps permet le feedback après mise en production ?

A. Tests unitaires
B. Revue de code
C. Monitoring et observabilité
D. Planification Agile

Q6. En DevOps, les incidents doivent être traités comme :

A. Des fautes individuelles


B. Des opportunités d’apprentissage
C. Des échecs du management
D. Des événements exceptionnels à ignorer

🟦 PARTIE 3 — Automatisation : portée et limites

Q7. Pourquoi l’automatisation est-elle cruciale en DevOps ?

A. Elle supprime le besoin d’humains


B. Elle garantit zéro bug
C. Elle réduit les erreurs humaines répétitives
D. Elle remplace la culture

Q8. Quel type de tâche est le MOINS pertinent à automatiser ?

A. Déploiement répétitif
B. Provisionnement d’infrastructure
C. Décisions stratégiques complexes
D. Tests unitaires

Q9. L’automatisation favorise principalement :

A. Des systèmes plus rigides


B. Des processus plus lents
C. Des changements fréquents et fiables
D. Une dépendance accrue aux managers

🟦 PARTIE 4 — Mesure et amélioration continue

Q10. Pourquoi DevOps insiste-t-il sur la mesure (Measurement) ?

A. Pour surveiller les employés


B. Pour comparer les équipes
C. Pour améliorer en continu sur la base de données réelles
D. Pour satisfaire les audits

Q11. Le MTTR mesure :

A. Le temps moyen entre deux déploiements


B. Le temps moyen pour corriger un incident
C. Le nombre de bugs par version
D. Le temps de compilation

Q12. Quel indicateur est le PLUS cohérent avec DevOps ?


A. Nombre de lignes de code
B. Fréquence des déploiements
C. Nombre de réunions
D. Taille de l’équipe

🟦 PARTIE 5 — DevOps vs idées reçues

Q13. « DevOps est réservé aux grandes entreprises »

Cette affirmation est :


A. Vraie
B. Vraie uniquement dans le cloud
C. Fausse
D. Vraie pour les startups

Q14. Acheter un outil CI/CD signifie :

A. Adopter DevOps automatiquement


B. Améliorer la culture d’équipe
C. Mettre en place DevOps partiellement au mieux
D. Supprimer les silos

Q15. DevOps remplace :

A. Les développeurs
B. Les administrateurs système
C. Agile
D. Aucun des précédents

🟦 PARTIE 6 — Vision système et Big Picture

Q16. DevOps considère le logiciel comme :

A. Un produit fini
B. Un projet ponctuel
C. Un système vivant à faire évoluer
D. Un livrable figé

Q17. Quel concept DevOps est le PLUS lié à la résilience ?

A. Déploiements manuels
B. Changements rares
C. Petits changements réversibles
D. Validation tardive
Q18. Pourquoi les petits changements sont-ils préférés ?

A. Ils sont plus simples à facturer


B. Ils sont plus faciles à tester et à corriger
C. Ils éliminent les bugs
D. Ils réduisent le besoin de monitoring

🟦 PARTIE 7 — Mise en situation (raisonnement)

Q19. Une équipe déploie rarement, manuellement, avec beaucoup d’échecs.

Quelle pratique DevOps apporte le PLUS de valeur en premier ?


A. Ajouter plus de développeurs
B. Mettre en place CI/CD
C. Écrire plus de documentation
D. Réduire les tests

Q20. Une équipe a CI/CD mais beaucoup de conflits Dev/Ops.

Quel pilier CALMS est le plus faible ?


A. Automation
B. Lean
C. Culture
D. Measurement

🟩 CORRIGÉ DÉTAILLÉ

1. B — DevOps optimise tout le flux de livraison


2. C — Responsabilité partagée
3. B — Fréquent + petit = moins risqué

4. B — Correction rapide = coût réduit


5. C — Monitoring = feedback post-prod
6. B — Culture sans blâme

7. C — Moins d’erreurs humaines


8. C — Les décisions stratégiques restent humaines
9. C — Fréquence + fiabilité

10. C — Amélioration continue basée sur données


11. B — Temps de rétablissement
12. B — KPI clé DevOps

13. C — Mythe courant


14. C — Outil ≠ culture
15. D — DevOps relie, ne remplace pas
16. C — Système vivant
17. C — Réversibilité = résilience
18. B — Moins risqué, plus contrôlable

19. B — CI/CD réduit erreurs et lenteur


20. C — Problème humain, pas technique

Ch2

1️⃣ Objectif du cours

Ce cours a pour but de te faire comprendre :

 Pourquoi le contrôle de version est indispensable en DevOps

 Comment Git fonctionne (concepts + commandes)

 Comment collaborer efficacement à plusieurs développeurs

 Comment organiser le travail avec des workflows professionnels (Feature Branching,


GitFlow)

 Comment gérer l’historique du code proprement (merge vs rebase)

👉 C’est un cours fondamental : Git est la base de CI/CD, DevOps et du travail en équipe.

2️⃣ Contrôle de version (Version Control System – VCS)

🔹 Définition

Un système de contrôle de version (VCS) permet de :

 suivre l’évolution du code dans le temps,

 conserver un historique,

 faciliter la collaboration,

 revenir à une version précédente en cas d’erreur.

🔹 Avantages clés

 Travail simultané de plusieurs développeurs

 Traçabilité : qui a modifié quoi, quand et pourquoi

 Développement parallèle via les branches

 Sécurité : retour arrière possible (rollback)


👉 Sans VCS, le travail collaboratif est chaotique .

3️⃣ Concepts fondamentaux de Git

📦 Repository (repo)

 Dossier contenant :

o le code du projet

o l’historique complet des modifications

🧩 Commit

 Une photo (snapshot) de l’état du projet à un instant donné

 Contient :

o les changements

o un message explicatif

🌿 Branch

 Ligne de développement indépendante

 Permet de travailler sur une fonctionnalité sans casser la branche principale

🔀 Merge

 Fusion de deux branches

 Conserve l’historique complet

🔁 Rebase

 Réécrit l’historique en replaçant les commits sur une nouvelle base

 Utilisé pour avoir un historique plus linéaire et propre

4️⃣ Architecture Git : local vs remote

Git fonctionne avec deux niveaux :

🔹 Local

 Working Directory : fichiers modifiés

 Staging Area : fichiers prêts à être commités

 Local Repository : commits locaux

🔹 Remote

 Dépôt distant (GitHub, GitLab, etc.)

 Utilisé pour la collaboration


🔹 Flux typique (schéma clé du cours)

1. Modifier un fichier

2. git add → staging

3. git commit → repo local

4. git push → repo distant

5. git pull / git fetch → récupérer les changements

👉 Ce schéma est TRÈS important pour l’examen .

5️⃣ Commandes Git essentielles

🔧 Initialisation & clonage

 git init : créer un nouveau dépôt

 git clone <url> : copier un dépôt existant

 git clone --bare : dépôt sans working directory (serveur)

📝 Gestion des changements

 git status : état des fichiers

 git add . : ajouter les changements

 git commit -m "msg" : valider

 git commit --amend : modifier le dernier commit

 git reset HEAD~1 : annuler un commit

🌿 Branches

 git branch : lister

 git branch feature-x : créer

 git checkout feature-x : changer de branche

 git merge feature-x : fusionner

🔄 Synchronisation

 git fetch : récupérer sans fusion

 git pull : récupérer + fusionner

 git push : envoyer au remote

 git push --force-with-lease : forcer (avec sécurité)

6️⃣ Git Workflows


🟦 Feature Branching

Chaque fonctionnalité ou bug :

 est développée dans une branche dédiée

 est fusionnée dans main après revue

Avantages :

 Isolation des fonctionnalités

 Revue de code facilitée

 Branche principale toujours stable

👉 Workflow simple et très utilisé .

🟦 GitFlow (workflow avancé)

Branches principales :

 main : code en production

 develop : intégration des fonctionnalités

Branches de support :

 feature/* : nouvelles fonctionnalités

 release/* : préparation d’une version

 hotfix/* : correction urgente en production

Avantages :

 Organisation claire

 Support du développement parallèle

 Séparation production / développement

👉 Très populaire dans les équipes structurées .

7️⃣ Merge vs Rebase (concept clé)

🔀 Merge

 Conserve tout l’historique

 Crée un commit de fusion

 Plus sûr pour le travail collaboratif

🔁 Rebase

 Réécrit l’historique
 Historique linéaire et propre

 À éviter sur des branches partagées

👉 Le schéma comparatif du cours est fondamental pour comprendre la différence .

8️⃣ Outils de diagnostic et maintenance Git

📜 Historique

 git log --oneline --graph

 git show <commit>

🔍 Comparaison

 git diff

 git diff main..feature

Analyse

 git blame <fichier> : qui a écrit quoi

 git reflog : historique interne

 git fsck : vérification du dépôt

🧹 Nettoyage

 git gc

 git prune

9️⃣ Lien avec DevOps

Git est :

 le point de départ du CI/CD

 la base de l’automatisation

 l’outil central de la collaboration DevOps

👉 Pas de Git propre = pas de DevOps efficace

🎯 Ce que tu dois absolument maîtriser pour l’examen

 Concepts : repo, commit, branch, merge, rebase

 Différence fetch vs pull

 Feature Branching vs GitFlow

 Quand utiliser merge ou rebase


 Rôle de Git dans DevOps

📘 QCM – DevOps 2

Software Versioning & Collaboration (Git)

🟦 PARTIE 1 — Contrôle de version (VCS)

Q1. Un système de contrôle de version (VCS) permet principalement de :

A. Compiler le code
B. Déployer des applications
C. Suivre les modifications du code dans le temps
D. Tester automatiquement le logiciel

Q2. Quel problème majeur le VCS résout-il ?

A. Le manque de documentation
B. Le travail collaboratif non contrôlé
C. La lenteur des compilations
D. Les conflits matériels

Q3. Le retour à une version précédente est possible grâce :

A. Aux branches
B. Aux commits
C. Au staging
D. Au monitoring

🟦 PARTIE 2 — Concepts fondamentaux Git

Q4. Un repository Git contient :

A. Uniquement le code source


B. Le code et l’historique des modifications
C. Seulement les fichiers compilés
D. Les pipelines CI/CD

Q5. Un commit correspond à :

A. Une sauvegarde automatique


B. Une copie du dépôt distant
C. Une image de l’état du projet à un instant donné
D. Une branche temporaire
Q6. Une branche permet principalement de :

A. Supprimer des commits


B. Travailler en parallèle sans affecter la branche principale
C. Forcer la synchronisation avec le remote
D. Compiler le code

Q7. Quelle affirmation est correcte ?

A. Une branche remplace un dépôt


B. Une branche est une ligne de développement indépendante
C. Une branche est toujours distante
D. Une branche empêche les conflits

🟦 PARTIE 3 — Architecture Git (Local / Remote)

Q8. Quel élément fait partie de l’environnement local ?

A. Remote repository
B. GitHub
C. Staging area
D. Serveur GitLab

Q9. L’ordre correct du flux Git local est :

A. Commit → Add → Push


B. Working directory → Staging → Local repository
C. Staging → Working directory → Commit
D. Push → Commit → Add

Q10. Quelle commande place les fichiers dans la staging area ?

A. git commit
B. git push
C. git add
D. git pull

Q11. Quelle commande envoie les commits vers le dépôt distant ?

A. git fetch
B. git pull
C. git push
D. git clone
🟦 PARTIE 4 — Commandes Git essentielles

Q12. git init permet de :

A. Télécharger un dépôt
B. Créer un nouveau dépôt local
C. Synchroniser avec le remote
D. Créer une branche

Q13. git clone permet de :

A. Créer un commit
B. Copier un dépôt existant
C. Supprimer un dépôt
D. Rebaser une branche

Q14. git status sert à :

A. Modifier l’historique
B. Voir l’état des fichiers
C. Fusionner des branches
D. Forcer un push

Q15. git commit --amend permet de :

A. Supprimer tous les commits


B. Modifier le dernier commit
C. Revenir à une ancienne version
D. Créer une branche

Q16. git reset HEAD~1 permet de :

A. Supprimer le dépôt
B. Annuler le dernier commit
C. Rebaser la branche
D. Forcer un push

🟦 PARTIE 5 — Branches et fusion

Q17. Quelle commande crée une branche ?

A. git checkout
B. git branch feature-x
C. git merge
D. git rebase
Q18. Quelle commande change de branche ?

A. git branch
B. git merge
C. git checkout
D. git push

Q19. Le merge :

A. Réécrit l’historique
B. Supprime les commits
C. Combine les modifications de plusieurs branches
D. Ne peut être utilisé que sur main

🟦 PARTIE 6 — Git Workflows

Q20. Le Feature Branching consiste à :

A. Travailler directement sur main


B. Développer chaque fonctionnalité dans une branche dédiée
C. Utiliser uniquement develop
D. Supprimer les branches après chaque commit

Q21. L’avantage principal du Feature Branching est :

A. Moins de commits
B. Une branche principale toujours stable
C. Moins de tests
D. Plus de conflits

Q22. Dans GitFlow, la branche main contient :

A. Le code expérimental
B. Le code prêt pour la production
C. Les fonctionnalités en cours
D. Les tests unitaires

Q23. La branche develop sert à :

A. Corriger les bugs urgents


B. Intégrer les nouvelles fonctionnalités
C. Héberger la production
D. Archiver le code
Q24. Quelle branche est utilisée pour un correctif urgent en production ?

A. feature/*
B. release/*
C. hotfix/*
D. develop

🟦 PARTIE 7 — Merge vs Rebase (TRÈS IMPORTANT)

Q25. Le merge :

A. Supprime l’historique
B. Conserve l’historique complet
C. Réécrit les commits
D. Est dangereux en équipe

Q26. Le rebase :

A. Crée un commit de merge


B. Réécrit l’historique
C. Est recommandé sur les branches partagées
D. Supprime les branches

Q27. Le rebase est principalement utilisé pour :

A. Déployer en production
B. Obtenir un historique linéaire et propre
C. Éviter les conflits
D. Supprimer des commits distants

Q28. Quelle bonne pratique est correcte ?

A. Rebaser une branche partagée


B. Rebaser uniquement des branches locales
C. Toujours préférer rebase à merge
D. Ne jamais utiliser merge

🟦 PARTIE 8 — Synchronisation et collaboration

Q29. git fetch :

A. Récupère et fusionne automatiquement


B. Récupère sans fusionner
C. Supprime les branches distantes
D. Modifie l’historique

Q30. git pull équivaut à :

A. fetch + rebase
B. fetch + merge
C. push + merge
D. commit + push

Q31. git push --force-with-lease :

A. Force sans aucune sécurité


B. Force avec vérification minimale
C. Supprime le remote
D. Est identique à git push

🟦 PARTIE 9 — Historique, analyse et maintenance

Q32. Quelle commande affiche l’historique détaillé ?

A. git diff
B. git log
C. git status
D. git blame

Q33. git blame permet de :

A. Supprimer un commit
B. Identifier qui a modifié chaque ligne
C. Fusionner des branches
D. Réécrire l’historique

Q34. git diff permet de :

A. Comparer des versions


B. Déployer le code
C. Nettoyer le dépôt
D. Configurer Git

Q35. git reflog est utile pour :

A. Nettoyer le dépôt
B. Voir l’historique interne des actions
C. Tester le code
D. Compiler

🟩 CORRIGÉ FINAL (AVEC EXPLICATIONS)

1. C — Suivi des modifications

2. B — Collaboration maîtrisée

3. B — Les commits permettent le rollback

4. B — Code + historique

5. C — Snapshot du projet

6. B — Travail parallèle

7. B — Ligne indépendante

8. C — Staging = local

9. B — Flux correct

10. C — git add

11. C — git push

12. B — Initialisation

13. B — Copie du dépôt

14. B — État des fichiers

15. B — Modifier dernier commit

16. B — Annuler dernier commit

17. B — Création de branche

18. C — Changement de branche

19. C — Fusion

20. B — Feature dédiée

21. B — Main stable

22. B — Production

23. B — Intégration

24. C — Hotfix

25. B — Historique conservé

26. B — Historique réécrit


27. B — Historique propre

28. B — Branches locales uniquement

29. B — Sans fusion

30. B — fetch + merge

31. B — Force sécurisé

32. B — Historique

33. B — Traçabilité

34. A — Comparaison

35. B — Historique interne

CH4

📝 QCM – Network Security (Chapter 4)

🔹 Partie 1 : Concepts réseaux & modèles

Q1. Internet est décrit comme :


A. Un réseau centralisé
B. Un réseau privé
C. Un réseau de réseaux
D. Un réseau local

Q2. Pourquoi Internet est-il difficile à sécuriser ?


A. Les données ne sont jamais chiffrées
B. Il est géré par une seule autorité
C. Les paquets passent par plusieurs nœuds indépendants
D. Les protocoles sont secrets

Q3. Le modèle OSI est :


A. Une architecture réelle d’Internet
B. Un modèle théorique en 7 couches
C. Une implémentation de TCP/IP
D. Un protocole de sécurité

Q4. Le principe d’encapsulation signifie que :


A. Les données sont chiffrées
B. Chaque couche ajoute un en-tête
C. Les données sont compressées
D. Les paquets suivent le même chemin
Q5. TCP/IP a été conçu à l’origine pour :
A. Résister aux attaques malveillantes
B. Sécuriser les communications web
C. Connecter des réseaux de confiance
D. Bloquer les intrusions

🔹 Partie 2 : Menaces réseau & attaques

Q6. Le port 80 est généralement utilisé pour :


A. SSH
B. HTTPS
C. FTP
D. HTTP

Q7. Le but principal du port scanning est :


A. Supprimer des fichiers
B. Trouver des services vulnérables
C. Chiffrer le trafic
D. Accélérer le réseau

Q8. Nmap est principalement utilisé pour :


A. Chiffrer les données
B. Scanner les ports
C. Bloquer les attaques
D. Gérer les firewalls

Q9. Le social engineering cible principalement :


A. Les protocoles réseau
B. Le matériel
C. Les humains
D. Les routeurs

Q10. L’écoute passive du trafic est appelée :


A. Spoofing
B. Eavesdropping
C. Flooding
D. Hijacking

Q11. Pourquoi le Wi-Fi est-il plus vulnérable ?


A. Il est lent
B. Il utilise TCP
C. Le signal est diffusé dans l’air
D. Il n’utilise pas d’adresses IP

Q12. Une attaque “Evil Twin” concerne :


A. DNS
B. Email
C. Wi-Fi
D. HTTP

Q13. Le vol de cookies permet principalement :


A. Le DoS
B. Le session hijacking
C. Le port scanning
D. Le spoofing DNS

Q14. Le DNS cache poisoning est une attaque sur :


A. La confidentialité
B. L’intégrité
C. La disponibilité
D. L’authentification

Q15. TCP ne protège pas contre les attaques intentionnelles car :


A. Il n’utilise pas de checksum
B. Il fait confiance aux nœuds
C. Il chiffre mal
D. Il bloque trop de paquets

🔹 Partie 3 : Vulnérabilités Web

Q16. L’attaque utilisant ../ dans une URL est appelée :


A. XSS
B. CSRF
C. Directory traversal
D. SQL injection

Q17. Le HTTP est considéré comme stateless car :


A. Il chiffre les données
B. Il n’utilise pas TCP
C. Il ne mémorise pas les requêtes précédentes
D. Il bloque les cookies
Q18. XSS permet principalement de :
A. Bloquer un serveur
B. Modifier le DNS
C. Voler des cookies
D. Saturer la bande passante

Q19. CSRF permet :


A. D’exécuter une action à l’insu de l’utilisateur
B. D’écouter le trafic
C. De scanner des ports
D. De modifier des paquets IP

🔹 Partie 4 : DoS, DDoS & Botnets

Q20. Une attaque DoS vise à :


A. Voler des données
B. Modifier des paquets
C. Rendre un service indisponible
D. Usurper une identité

Q21. Le SYN flood exploite :


A. Le chiffrement SSL
B. Le handshake TCP
C. Le protocole DNS
D. Le routage IP

Q22. Une attaque DDoS se distingue par :


A. Un seul attaquant
B. Des paquets chiffrés
C. De multiples machines attaquantes
D. Une attaque interne

Q23. Un botnet est :


A. Un firewall
B. Un IDS
C. Un réseau de machines compromises
D. Un protocole réseau

Q24. Mirai est célèbre car il ciblait surtout :


A. Les serveurs web
B. Les smartphones
C. Les objets connectés (IoT)
D. Les bases de données

🔹 Partie 5 : Sécurité réseau & défenses

Q25. Une DMZ sert à :


A. Protéger le Wi-Fi
B. Isoler les services publics
C. Chiffrer le trafic
D. Scanner les ports

Q26. Quelle stratégie firewall est la plus sûre ?


A. Tout autoriser
B. Bloquer seulement SSH
C. Tout bloquer sauf autorisé
D. Ne rien filtrer

Q27. Un firewall ne protège PAS contre :


A. Les attaques externes
B. Le trafic suspect
C. Les attaques internes
D. Le port scanning

Q28. Un firewall à inspection avec état :


A. Ignore les connexions
B. Analyse uniquement les ports
C. Suit l’état des connexions
D. Fonctionne uniquement sur HTTP

Q29. Un honeypot est :


A. Un vrai serveur critique
B. Un système leurre
C. Un IDS
D. Un routeur sécurisé

Q30. Un IDS basé sur les anomalies :


A. Détecte seulement les attaques connues
B. Analyse les comportements inhabituels
C. Bloque automatiquement le trafic
D. Remplace un firewall
✅ Corrigé

1. C

2. C

3. B

4. B

5. C

6. D

7. B

8. B

9. C

10. B

11. C

12. C

13. B

14. B

15. B

16. C

17. C

18. C

19. A

20. C

21. B

22. C

23. C

24. C

25. B

26. C

27. C

28. C

29. B
30. B

Si tu veux, je peux maintenant :

 🔥 te faire un QCM chronométré comme un vrai examen

 🧠 transformer ce QCM en fiche de révision intelligente

 📊 te générer des exercices corrigés ou des études de cas

Dis-moi ce qui t’aiderait le plus 💪

CH3 conteneurisation avec docker

Avec plaisir 😄 Voici un QCM complet (bien long, bien carré) qui couvre TOUS les aspects du chapitre
Docker : conteneurs, VM vs containers, composants, architecture (namespaces), networking,
volumes, Dockerfile, commandes, et Docker Compose.

✅ QCM COMPLET — Containerization with Docker (BD2C)

Partie 1 — Concepts de base (Conteneurs)

Q1. Un conteneur est :

A. Une machine virtuelle complète


B. Un environnement léger contenant une application et ses dépendances
C. Un système d’exploitation indépendant
D. Un disque dur virtuel

Q2. Le but principal d’un conteneur est :

A. Accélérer le processeur
B. Exécuter une application de façon cohérente sur plusieurs environnements
C. Remplacer les réseaux
D. Stocker des fichiers permanents

Q3. Une caractéristique “Immutable” signifie :

A. Le conteneur peut être modifié à volonté


B. Le conteneur démarre toujours depuis une image fixe
C. Le conteneur garde ses données après suppression
D. Le conteneur peut changer de noyau

Q4. Une caractéristique “Éphémère” signifie :


A. Le conteneur est conçu pour être remplacé, pas modifié manuellement
B. Le conteneur est très lourd
C. Le conteneur ne démarre jamais
D. Le conteneur nécessite une VM

Partie 2 — VM vs Containers

Q5. La virtualisation dans une VM se fait via :

A. Container engine
B. Hyperviseur
C. Docker daemon
D. Registry

Q6. Dans un conteneur, l’isolation se fait par :

A. OS complet
B. Noyau du système hôte partagé
C. Hyperviseur type 1
D. BIOS dédié

Q7. Le temps de démarrage typique d’un conteneur est :

A. Plusieurs minutes
B. Plusieurs heures
C. Quelques secondes
D. Impossible à démarrer

Q8. La taille typique d’une VM est :

A. Quelques Ko
B. MB
C. GB
D. TB

Q9. La performance d’un conteneur est généralement :

A. Très lente
B. Quasi-native
C. Toujours plus lente qu’une VM
D. Nulle

Q10. La portabilité d’un conteneur est :


A. Basse
B. Moyenne
C. Haute
D. Impossible

Partie 3 — Composants Docker

Q11. Le Docker Client (CLI) sert à :

A. Exécuter les conteneurs directement


B. Envoyer des commandes au Docker daemon
C. Stocker les images
D. Compiler le noyau Linux

Q12. Le Docker daemon (dockerd) :

A. Est une interface graphique


B. S’exécute sur l’hôte et gère images + conteneurs
C. Sert uniquement à écrire Dockerfile
D. Sert uniquement au réseau

Q13. Une Docker image est :

A. Une instance en exécution


B. Un modèle en lecture seule
C. Une base de données
D. Un volume

Q14. Un Docker container est :

A. Une image en lecture seule


B. Une image stockée dans un registry
C. Une instance en exécution d’une image
D. Un fichier YAML

Q15. Un Docker registry sert à :

A. Exécuter les conteneurs


B. Stocker des images Docker
C. Gérer les namespaces
D. Remplacer Docker daemon

Partie 4 — Architecture : Namespaces (Isolation)


Q16. Le namespace PID isole :

A. Le réseau
B. Les processus
C. Les volumes
D. Les ports

Q17. Le namespace NET isole :

A. La pile réseau (interfaces, IP, routage)


B. Les utilisateurs
C. La RAM
D. Le système de fichiers

Q18. Le namespace IPC isole :

A. Le hostname
B. La communication inter-processus (mémoire partagée…)
C. Les ports
D. Les fichiers

Q19. Le namespace UTS isole :

A. Le noyau Linux
B. Le hostname et le nom de domaine
C. Les volumes
D. Les conteneurs en arrière-plan

Q20. Le namespace MNT isole :

A. Les points de montage du système de fichiers


B. Les adresses IP
C. Les registres Docker
D. Les images

Partie 5 — Docker Networking

Q21. Le driver réseau par défaut est :

A. overlay
B. none
C. bridge
D. host
Q22. Le réseau “bridge” permet :

A. Communication entre conteneurs sur le même hôte


B. Communication multi-hôtes obligatoire
C. Aucun accès réseau
D. Communication uniquement avec internet

Q23. Le mode “host” signifie :

A. Le conteneur a son propre réseau isolé


B. Le conteneur utilise directement le réseau de l’hôte
C. Le conteneur n’a pas de réseau
D. Le conteneur ne peut pas exposer de ports

Q24. Le driver “overlay” est utile pour :

A. Une seule machine locale


B. Swarm ou Kubernetes (multi-hôtes)
C. Désactiver le réseau
D. Remplacer les volumes

Q25. Le driver “none” signifie :

A. Réseau ultra rapide


B. Pas d’accès réseau
C. Réseau multi-hôtes
D. Réseau hôte

Q26. La commande pour lister les réseaux :

A. docker ps
B. docker network ls
C. docker images
D. docker volume ls

Q27. La commande pour créer un réseau :

A. docker network create mynet


B. docker network add mynet
C. docker create network mynet
D. docker run mynet

Q28. La commande pour connecter un conteneur à un réseau :


A. docker network attach
B. docker connect network
C. docker network connect mynet app
D. docker run connect

Q29. La commande pour afficher les détails JSON d’un réseau :

A. docker info
B. docker inspect mynet
C. docker network show
D. docker show mynet

Partie 6 — Docker Volumes (Storage)

Q30. Pourquoi les volumes sont importants ?

A. Parce que les conteneurs sont immuables


B. Parce que les conteneurs sont éphémères (données perdues)
C. Parce que Docker ne supporte pas le stockage
D. Parce que les images sont modifiables

Q31. La commande pour créer un volume :

A. docker create volume app_data


B. docker volume create app_data
C. docker volume add app_data
D. docker storage create app_data

Q32. La commande pour lister les volumes :

A. docker volume ls
B. docker volumes
C. docker ps -v
D. docker ls volume

Q33. docker volume inspect app_data affiche :

A. Les logs
B. La configuration JSON du volume et son chemin
C. Les images
D. Les réseaux

Q34. La commande pour supprimer un volume :


A. docker volume rm app_data
B. docker rm volume app_data
C. docker delete app_data
D. docker rmi app_data

Q35. Un “Named volume” est :

A. Un volume géré par Docker


B. Un répertoire host obligatoire
C. Un volume stocké uniquement en RAM
D. Un conteneur spécial

Q36. Un “Bind mount” est :

A. Un volume Docker automatique


B. Un mapping d’un répertoire hôte dans le conteneur
C. Un stockage en mémoire
D. Un réseau overlay

Q37. Un “Tmpfs mount” est :

A. Stockage permanent sur disque


B. Stockage temporaire en RAM
C. Stockage multi-hôtes
D. Stockage d’images

Partie 7 — Dockerfile (Image)

Q38. Dans un Dockerfile, FROM sert à :

A. Exposer un port
B. Définir l’image de base
C. Copier un fichier
D. Lancer un conteneur

Q39. WORKDIR /app signifie :

A. Copier dans /app


B. Mettre le répertoire de travail dans /app
C. Exposer le port /app
D. Créer un volume /app

Q40. COPY target/[Link] /app/[Link] sert à :


A. Télécharger un fichier depuis internet
B. Copier un fichier local dans l’image
C. Exposer un port
D. Supprimer un fichier

Q41. EXPOSE 8080 signifie :

A. Le conteneur ouvre automatiquement internet


B. Le conteneur indique qu’il utilise le port 8080
C. Le conteneur supprime le port
D. Le conteneur démarre en 8080 secondes

Q42. ENTRYPOINT ["java","-jar","[Link]"] sert à :

A. Définir la commande principale au démarrage du conteneur


B. Installer Java sur la machine hôte
C. Créer un volume
D. Créer un réseau

Partie 8 — Commandes Docker Images

Q43. Construire une image depuis un Dockerfile :

A. docker run -t myapp:1.0 .


B. docker build -t myapp:1.0 .
C. docker images -t myapp:1.0
D. docker create -t myapp:1.0

Q44. Lister les images :

A. docker images
B. docker ps
C. docker volume ls
D. docker logs

Q45. Supprimer une image :

A. docker rm myapp:1.0
B. docker stop myapp:1.0
C. docker rmi myapp:1.0
D. docker delete myapp:1.0

Partie 9 — Commandes Docker Containers


Q46. Démarrer un conteneur en arrière-plan :

A. docker run -d ...


B. docker run -f ...
C. docker start -f ...
D. docker ps -d ...

Q47. -p 8080:8080 signifie :

A. 8080 est un volume


B. 8080 est un réseau
C. Mapping port hôte:port conteneur
D. Arrêter le port

Q48. Lister les conteneurs en cours :

A. docker images
B. docker ps
C. docker logs
D. docker exec

Q49. Arrêter un conteneur :

A. docker stop
B. docker down
C. docker kill image
D. docker pause image

Q50. Supprimer un conteneur :

A. docker rm
B. docker rmi
C. docker delete
D. docker remove image

Q51. Voir les logs :

A. docker ps
B. docker logs
C. docker log
D. docker inspect logs

Q52. Entrer dans un conteneur :


A. docker exec -it bash
B. docker enter
C. docker shell
D. docker connect

Partie 10 — Docker Compose

Q53. Docker Compose sert à :

A. Gérer uniquement les images


B. Lancer plusieurs services via un fichier YAML
C. Créer des VM
D. Créer des volumes uniquement

Q54. Dans un fichier compose, services: contient :

A. Les réseaux uniquement


B. Les volumes uniquement
C. Les conteneurs/services à lancer
D. Les logs

Q55. depends_on: signifie :

A. Le service est supprimé automatiquement


B. Le service démarre après l’autre service
C. Le service est un volume
D. Le service n’a pas de réseau

Q56. Dans l’exemple, la base de données est :

A. MySQL
B. MongoDB
C. Postgres 15
D. Redis

Q57. Les variables POSTGRES_USER, POSTGRES_PASSWORD, POSTGRES_DB servent à :

A. Configurer la base Postgres au démarrage


B. Créer un réseau
C. Exposer le port 8080
D. Lancer l’application Java

Q58. Le volume db_data:/var/lib/postgresql/data sert à :


A. Stocker les logs de docker
B. Rendre les données Postgres persistantes
C. Créer un réseau overlay
D. Accélérer le CPU

Q59. Démarrer tous les services en arrière-plan :

A. docker-compose run
B. docker-compose up -d
C. docker-compose start -f
D. docker-compose build -d

Q60. Arrêter et supprimer conteneurs/réseaux/volumes du projet :

A. docker-compose down
B. docker-compose stop
C. docker-compose rm
D. docker-compose kill

Q61. Lister les conteneurs associés au projet compose :

A. docker-compose ps
B. docker ps
C. docker-compose logs
D. docker-compose images

Q62. Suivre les logs d’un service précis (app) :

A. docker-compose logs -f app


B. docker-compose ps -f app
C. docker logs -f app
D. docker-compose follow app

✅ CORRIGÉ (Réponses)

1B, 2B, 3B, 4A, 5B, 6B, 7C, 8C, 9B, 10C,
11B, 12B, 13B, 14C, 15B, 16B, 17A, 18B, 19B, 20A,
21C, 22A, 23B, 24B, 25B, 26B, 27A, 28C, 29B,
30B, 31B, 32A, 33B, 34A, 35A, 36B, 37B,
38B, 39B, 40B, 41B, 42A,
43B, 44A, 45C,
46A, 47C, 48B, 49A, 50A, 51B, 52A,
53B, 54C, 55B, 56C, 57A, 58B, 59B, 60A, 61A, 62A.
✅ QCM Kubernetes — Container Orchestration (Cours BD2C)

A) QCM (1 seule bonne réponse)

1) Kubernetes est principalement :

A. Un langage de programmation
B. Un système d’orchestration de conteneurs
C. Une base de données distribuée
D. Un serveur web

2) Kubernetes est maintenu aujourd’hui par :

A. Microsoft
B. Amazon
C. CNCF
D. Docker Inc

3) Kubernetes automatise :

A. Déploiement et scaling
B. Load balancing
C. Auto-réparation
D. Toutes les réponses

4) Dans Kubernetes, la plus petite unité déployable est :

A. Node
B. Pod
C. Service
D. Deployment

5) Un Pod peut contenir :

A. Un seul conteneur uniquement


B. Plusieurs conteneurs partageant réseau et stockage
C. Un Service et un ReplicaSet
D. Plusieurs nodes
6) Les Pods sont :

A. Persistants
B. Éphémères
C. Des machines physiques
D. Des services cloud

7) En production, on recommande d’utiliser :

A. Pod directement
B. Deployment
C. NodePort uniquement
D. kubelet

8) Quel composant est le point d’entrée des appels kubectl ?

A. etcd
B. API Server
C. Scheduler
D. kube-proxy

9) Quel composant stocke l’état du cluster ?

A. kubelet
B. etcd
C. Controller Manager
D. ReplicaSet

10) Le Scheduler sert à :

A. Stocker les données


B. Gérer le réseau
C. Attribuer des pods aux nodes
D. Exposer les services

11) Le kubelet :

A. Tourne sur le control plane uniquement


B. Tourne sur chaque node et gère les pods
C. Expose les pods au public
D. Remplace etcd

12) kube-proxy s’occupe surtout :


A. De la base de données
B. Du routage réseau et load balancing des services
C. De l’exécution des conteneurs
D. De la planification des pods

13) Le container runtime sert à :

A. Planifier les pods


B. Exécuter les conteneurs
C. Remplacer les services
D. Créer les namespaces

14) Un ReplicaSet sert à :

A. Faire du rollback
B. Garantir un nombre identique de pods
C. Exposer les pods à l’extérieur
D. Gérer la base etcd

15) Un Deployment :

A. Crée automatiquement des ReplicaSets


B. Permet rollout et rollback
C. Gère le scaling
D. Toutes les réponses

16) Un Service sert à :

A. Mettre à jour les pods


B. Exposer les pods
C. Créer des nodes
D. Stocker l’état

17) Le type de Service par défaut est :

A. NodePort
B. ClusterIP
C. LoadBalancer
D. ExternalName

18) NodePort expose un service :

A. Uniquement dans le cluster


B. Sur chaque node via un port spécifique
C. Avec un load balancer cloud automatiquement
D. Uniquement sur le control plane

19) La plage des ports NodePort est :

A. 80–443
B. 1024–65535
C. 30000–32767
D. 1–1024

20) LoadBalancer :

A. N’existe que sur bare-metal


B. Intègre des load balancers externes (cloud)
C. Est le type par défaut
D. Remplace kube-proxy

21) Un Namespace sert à :

A. Remplacer etcd
B. Faire du partitionnement logique du cluster
C. Remplacer un Service
D. Exécuter les conteneurs

B) QCM à réponses multiples (plusieurs bonnes réponses)

22) Kubernetes automatise :

(Choisir toutes les bonnes réponses)


A. Déploiement
B. Scaling
C. Load balancing
D. Auto-réparation
E. Compilation du code

23) Font partie du Control Plane :

A. API Server
B. etcd
C. Scheduler
D. kubelet
E. Controller Manager

24) Font partie des composants Node :


A. kubelet
B. kube-proxy
C. container runtime
D. etcd

25) Commandes utiles pour un Pod :

A. kubectl get pods


B. kubectl describe pod ...
C. kubectl logs ...
D. kubectl exec -it ... -- bash
E. kubectl rollback pod ...

26) Commandes liées au rollout d’un Deployment :

A. kubectl rollout status ...


B. kubectl rollout undo ...
C. kubectl restart ...
D. kubectl apply -f ...

27) Bonnes pratiques du cours :

A. Utiliser Deployments
B. Toujours utiliser latest
C. Versionner les images
D. Utiliser Pods directement en production

28) Les ressources “core” vues dans le cours :

A. Pod
B. ReplicaSet
C. Deployment
D. Service
E. Ingress

29) Un Service a besoin de :

A. selector
B. ports
C. replicas
D. type

30) Un Deployment contient :


A. replicas
B. selector
C. template
D. ports obligatoirement

C) Vrai / Faux

31) V/F : Un Pod est persistant et garde toujours la même IP.

 Vrai

 Faux

32) V/F : Le Deployment est recommandé en production plutôt qu’un Pod direct.

 Vrai

 Faux

33) V/F : etcd est une base clé-valeur distribuée.

 Vrai

 Faux

34) V/F : kubelet tourne sur chaque worker node.

 Vrai

 Faux

35) V/F : kube-proxy gère le routage réseau des services.

 Vrai

 Faux

36) V/F : NodePort est un service interne uniquement.

 Vrai

 Faux

37) V/F : LoadBalancer est surtout utile sur cloud.

 Vrai
 Faux

38) V/F : Un ReplicaSet est généralement géré par un Deployment.

 Vrai

 Faux

D) Questions pièges / examen

39) Pourquoi un Service est-il nécessaire dans Kubernetes ?

A. Parce que les pods ont des IP stables


B. Parce que les pods changent souvent (éphémères)
C. Parce que etcd n’est pas fiable
D. Parce que kubelet ne fonctionne pas sans Service

40) Quel est le meilleur choix pour déployer nginx en production ?

A. Pod nginx avec nginx:latest


B. Deployment nginx avec nginx:1.25
C. ReplicaSet nginx avec nginx:latest
D. Service LoadBalancer seul

✅ CORRECTION

A) QCM (1 réponse)

1. B

2. C

3. D

4. B

5. B

6. B

7. B

8. B

9. B

10. C

11. B
12. B

13. B

14. B

15. D

16. B

17. B

18. B

19. C

20. B

21. B

B) Réponses multiples

22. A B C D

23. A B C E

24. A B C

25. A B C D

26. A B B? (Non) → A B (+ D est vrai mais pas rollout spécifique)

27. A C

28. A B C D

29. A B D

30. A B C

C) Vrai/Faux

31. Faux

32. Vrai

33. Vrai

34. Vrai

35. Vrai

36. Faux

37. Vrai

38. Vrai
D) Pièges

39. B

40. B

✅ QCM COMPLET – CI/CD (GitLab, Docker, Helm, Sonar)

📌 Consigne

➡️Choisis une seule bonne réponse (sauf si indiqué “plusieurs réponses”).

1) CI signifie :

A. Continuous Internet
B. Continuous Integration
C. Continuous Install
D. Cloud Integration

✅ Réponse : B

2) Le principe principal de la CI est :

A. Faire des commits rares mais gros


B. Faire des commits fréquents et automatiser build + tests
C. Déployer directement en prod
D. Supprimer les tests

✅ Réponse : B

3) Un bénéfice direct de la CI est :

A. Augmenter les conflits de merge


B. Réduire les conflits de merge
C. Supprimer Git
D. Ne plus faire de tests

✅ Réponse : B

4) Continuous Delivery signifie :

A. Le code est toujours déployé automatiquement en prod


B. Le code est toujours déployable mais prod = validation humaine
C. Le code est jamais déployable
D. Le code est livré sans tests

✅ Réponse : B

5) Continuous Deployment signifie :

A. Déploiement automatique dès que les tests passent


B. Déploiement manuel seulement
C. Déploiement une fois par an
D. Déploiement sans build

✅ Réponse : A

6) Le fichier GitLab CI doit s’appeler :

A. [Link]
B. [Link]
C. .[Link]
D. .[Link]

✅ Réponse : C

7) Dans GitLab CI, un pipeline est composé de :

A. stages, jobs, runners, artifacts, environments


B. uniquement des tests
C. uniquement Docker
D. uniquement Kubernetes

✅ Réponse : A

8) Les stages servent à :

A. Définir l’ordre des grandes étapes (build/test/deploy)


B. Stocker les images Docker
C. Remplacer Git
D. Écrire du code Java

✅ Réponse : A

9) Un job dans GitLab CI est :

A. Une étape générale


B. Une tâche exécutée dans un stage
C. Un commit Git
D. Un container Docker
✅ Réponse : B

10) Les runners sont :

A. Les développeurs
B. Les machines qui exécutent les jobs
C. Les branches Git
D. Les fichiers artifacts

✅ Réponse : B

11) Les artifacts sont :

A. Des fichiers produits par un job (jar, rapports tests, etc.)


B. Des erreurs Git
C. Des branches
D. Des containers Kubernetes

✅ Réponse : A

12) Les environments représentent :

A. Un stage build
B. Des environnements dev/staging/prod
C. Un runner
D. Un job test

✅ Réponse : B

13) Bonne pratique CI/CD concernant les commits :

A. Commits longs et rares


B. Commits courts et fréquents
C. Pas de commits
D. Un commit par semestre

✅ Réponse : B

14) Bonne pratique CI/CD concernant les pipelines :

A. Pipelines lents
B. Pipelines rapides + caching efficace
C. Pipelines sans tests
D. Pipelines manuels

✅ Réponse : B
15) Un test unitaire est :

A. Un test qui vérifie une petite partie du code (fonction, classe)


B. Un test Kubernetes
C. Un test Docker Registry
D. Un test SonarQube

✅ Réponse : A

16) Dans l’exemple Maven, la commande pour exécuter les tests est :

A. mvn deploy
B. mvn clean install
C. mvn test
D. mvn docker

✅ Réponse : C

17) Le rapport JUnit dans GitLab est généralement stocké via :

A. artifacts reports junit


B. helm upgrade
C. docker push
D. sonar login

✅ Réponse : A

18) SonarQube sert à :

A. Construire des images Docker


B. Déployer sur Kubernetes
C. Analyser la qualité du code
D. Héberger des runners

✅ Réponse : C

19) Pour SonarQube, on utilise souvent :

A. SONAR_HOST_URL et SONAR_TOKEN
B. DOCKER_TLS_CERTDIR
C. KUBE_NAMESPACE
D. CI_COMMIT_BRANCH

✅ Réponse : A
20) Dans le cours, le job Sonar est exécuté :

A. Toujours sur main


B. Seulement sur merge_requests
C. Seulement sur staging
D. Jamais

✅ Réponse : B

21) GitLab Registry est utilisé pour :

A. Stocker des bases de données


B. Stocker des images Docker
C. Stocker des commits Git
D. Stocker des logs Kubernetes

✅ Réponse : B

22) Le format de l’URL du registry GitLab est :

A. [Link]/<project>
B. [Link]/<group>/<project>
C. [Link]/<namespace>
D. [Link]/<project>

✅ Réponse : B

23) Pour se connecter au registry dans GitLab CI on utilise :

A. login = root
B. login = gitlab-ci-token + password = CI_JOB_TOKEN
C. login = admin + password = admin
D. login = docker + password = docker

✅ Réponse : B

24) Le tag $CI_COMMIT_SHA correspond à :

A. Le nom du développeur
B. Le hash du commit (version unique)
C. Le nom du projet
D. Le nom du namespace Kubernetes

✅ Réponse : B

25) Docker-in-Docker (docker:dind) sert à :


A. Exécuter Docker dans le job GitLab CI
B. Remplacer Kubernetes
C. Exécuter SonarQube
D. Compiler du Java

✅ Réponse : A

26) Helm est utilisé pour :

A. Tester du code Java


B. Déployer sur Kubernetes
C. Scanner les dépendances
D. Faire des commits Git

✅ Réponse : B

27) Le rôle de KUBE_CONFIG est :

A. Stocker le token SonarQube


B. Stocker le kubeconfig (accès au cluster)
C. Stocker l’image Docker
D. Stocker les artifacts

✅ Réponse : B

28) KUBE_NAMESPACE sert à :

A. Choisir le namespace Kubernetes cible


B. Choisir le runner GitLab
C. Choisir le stage test
D. Choisir le registry

✅ Réponse : A

29) La commande principale de déploiement Helm est :

A. helm upgrade --install


B. helm push
C. helm build
D. helm test

✅ Réponse : A

30) Dans le pipeline complet du cours, l’ordre correct est :

A. Deploy → Docker → Test → Build


B. Build → Test → Quality → Docker → Deploy
C. Test → Build → Deploy → Quality
D. Docker → Deploy → Build → Test

✅ Réponse : B

⭐ BONUS : Questions “plusieurs réponses”

31) (Plusieurs réponses) Une bonne pipeline CI/CD doit inclure :

A. Tests unitaires
B. Scan qualité
C. Déploiement automatisé
D. Aucun test

✅ Réponses : A, B, C

32) (Plusieurs réponses) Les éléments GitLab CI/CD sont :

A. stages
B. jobs
C. runners
D. commits Git

✅ Réponses : A, B, C

33) (Plusieurs réponses) Les bonnes pratiques CI/CD incluent :

A. Commits courts et fréquents


B. Scan dépendances
C. Monitoring post-déploiement
D. Pipeline lent

✅ Réponses : A, B, C

Vous aimerez peut-être aussi