Glossaire
- Agent
- Une machine (ou un conteneur) qui exécute les étapes de build pour le controller. Les agents portent des labels, comme
linuxoudocker. - Jenkins : controller, agents et Jenkinsfile
- Ancre et alias
&nameétiquette un nœud,*namele réutilise ailleurs. La clé de fusion<<: *namecopie les clés d’un mapping dans un autre mapping.- YAML : la syntaxe et les types devinés
- Application Argo CD
- Un objet Kubernetes qui dit : prends les manifestes de ce repo, cette révision et ce chemin, et garde-les appliqués dans ce cluster et ce namespace.
- GitOps : Git est la source de vérité
- Artefact
- Un fichier qu’un job produit et transmet aux jobs suivants : un binaire, une archive, un rapport de tests.
- Les pipelines : la procédure de déploiement lancée à chaque push
- Artefact de release
- Le résultat construit que les utilisateurs installent : un paquet, un binaire, une image de conteneur. Construit une seule fois à partir du commit tagué.
- Tags, versions et releases
- Artefacts
- Des fichiers qu’un job produit et que GitLab stocke, comme un résultat de build ou un rapport. Les stages suivants du même pipeline les téléchargent.
- GitLab CI : stages, runners, cache et artefacts
- Backend
- Là où le state est stocké. En local par défaut. Un backend distant, comme un bucket S3 ou HCP Terraform, permet à l’équipe de partager un seul state.
- State, backends et modules Terraform
- Bloc scalaire
- Du texte sur plusieurs lignes.
|garde les retours à la ligne,>les replie en espaces. Ajoute-(|-) pour supprimer le retour à la ligne final. - YAML : la syntaxe et les types devinés
- Blue-green
- Faire tourner la nouvelle version (green) à côté de celle en ligne (blue), puis basculer le routeur. Pour le rollback, tu rebascules le routeur vers blue.
- Les stratégies de déploiement : remplacer la version en production
- Branche
- Un pointeur mobile vers un commit. Chaque nouveau commit sur la branche fait avancer le pointeur.
- Branches, merge et rebase
- Branche courte
- Une branche qui vit quelques heures, un ou deux jours au maximum, puis est mergée et supprimée.
- Trunk-based development ou GitFlow
- Branche protégée
- Une branche avec des règles : par défaut pas de force push ni de suppression, plus des règles en option comme les revues et les checks obligatoires.
- Pull requests, branches protégées et CODEOWNERS
- Build multi-stage
- Un Dockerfile avec plusieurs lignes
FROM. Les premiers stages compilent, le dernier copie seulement le résultat avecCOPY --from. Les outils de build restent derrière. - Des images petites et sûres
- Cache
- Des fichiers qu’un job garde pour accélérer les runs suivants, comme les paquets téléchargés. Le job doit quand même marcher quand le cache est vide.
- GitLab CI : stages, runners, cache et artefacts
- Cache de build
- Les couches gardées des builds précédents. Si une instruction et ses entrées sont identiques, le builder réutilise la couche au lieu de la relancer.
- Le Dockerfile et son cache de build
- CALMS
- Culture, Automation, Lean, Measurement, Sharing. Une grille pour voir jusqu’où une équipe est vraiment allée vers DevOps.
- Ce qu’est DevOps : dev et ops responsables d’un même service
- Canary
- Envoyer une petite part du vrai trafic vers la nouvelle version, l’observer, puis augmenter par paliers.
- Les stratégies de déploiement : remplacer la version en production
- Cattle
- Des serveurs construits par automatisation, tous pareils, conçus pour que n’importe lequel puisse tomber ou être remplacé sans que personne ne le remarque.
- Pets vs cattle : remplacer les serveurs au lieu de les réparer
- Certificat TLS
- Un fichier qui prouve qu’un serveur possède un nom. Le client vérifie que le nom correspond à l’URL, qu’une CA de confiance l’a signé, et qu’il n’a pas expiré.
- Le réseau : déboguer une couche à la fois
- cgroup
- Control group. Une fonction du noyau qui compte et limite ce qu’un groupe de processus consomme : mémoire, CPU, I/O.
- Conteneurs et machines virtuelles
- Chaîne de valeur
- Toutes les étapes que traverse un changement, de l’idée jusqu’à la prod, devant les utilisateurs.
- Petits lots, feedback rapide
- Change fail rate
- La part des déploiements qui demandent une intervention immédiate juste après, en général un rollback ou un hotfix.
- Les métriques DORA : est-ce que la livraison s’améliore ?
- Change lead time
- Le temps entre le commit d’un changement dans le gestionnaire de versions et ce changement en prod.
- Les métriques DORA : est-ce que la livraison s’améliore ?
- Changelog
- Un fichier qui liste les changements notables de chaque version, du plus récent au plus ancien, pour les gens qui utilisent ton logiciel.
- Tags, versions et releases
- Chart
- Un paquet Helm : un
Chart.yaml, unvalues.yamlavec les valeurs par défaut, et un dossiertemplates/de YAML Kubernetes à trous. - Helm : un gestionnaire de paquets pour Kubernetes
- Cluster autoscaler
- Ajoute des nœuds quand des pods restent en attente faute de place, et retire les nœuds sous-utilisés.
- Gérer un cluster : mettre à jour sans coupure
- Code de sortie
- Le nombre qu’un processus renvoie quand il se termine.
0veut dire succès. Tout ce qui va de 1 à 255 veut dire échec, et c’est le programme qui choisit le nombre. - Codes de sortie, flux et systemd : comment les outils se parlent
- CODEOWNERS
- Un fichier qui associe des chemins à des personnes ou des équipes. Les owners sont sollicités automatiquement en revue quand une PR, une fois sortie du brouillon, touche leurs fichiers.
- Pull requests, branches protégées et CODEOWNERS
- Commit
- Un snapshot du projet entier, nommé par son hash (par défaut SHA-1, 40 caractères hexadécimaux), avec auteur, message et un pointeur vers son commit parent.
- Git : des snapshots, trois zones et HEAD
- Commit de merge
- Un commit avec deux parents, écrit par un merge à trois points : les deux bouts de branche plus leur ancêtre commun.
- Branches, merge et rebase
- ConfigMap
- Un objet qui contient des réglages en clair, sous forme de clés et de valeurs. Monté en fichiers ou passé en variables d’environnement. Pas pour les secrets, et 1 MiB au plus.
- Config, health checks et ressources
- Conteneur
- Un processus (ou un groupe de processus) que le noyau isole avec des namespaces et limite avec des cgroups. Il tourne sur le noyau de l’hôte.
- Conteneurs et machines virtuelles
- Contrôleur
- Une boucle de contrôle qui surveille un type d’objet et agit pour rapprocher l’état actuel de l’état désiré.
- Pourquoi Kubernetes : contrôleurs et état désiré
- Controller
- Le service Jenkins lui-même : interface web, configuration, et le planificateur qui décide où et quand les builds tournent.
- Jenkins : controller, agents et Jenkinsfile
- Couche
- L’ensemble des changements de fichiers faits par une instruction.
RUN,COPYetADDajoutent des couches,CMDouEXPOSEne changent que des réglages. - Le Dockerfile et son cache de build
- Data source
- Une lecture seule, comme
data "aws_ami" "ubuntu": trouver quelque chose qui existe, sans le gérer. - Terraform : plan et apply
- Defaults du rôle
defaults/main.yml: les variables que l’utilisateur du rôle est censé changer, à la priorité la plus basse. Presque n’importe quelle autre variable les écrase.- Les rôles Ansible : un dossier par métier
- depends_on
- L’ordre de démarrage entre services. Avec
condition: service_healthy, Compose attend que le healthcheck de la dépendance passe. - Docker Compose : toute la stack dans un seul fichier
- Déploiement continu
- Chaque changement qui passe le pipeline part en production, sans humain au milieu.
- Les pipelines : la procédure de déploiement lancée à chaque push
- Déploiement pull
- Un agent qui tourne dans le cluster surveille Git et applique les changements lui-même. La CI ne touche jamais le cluster.
- GitOps : Git est la source de vérité
- Deployment
- Gère les ReplicaSets pour toi, et déploie une nouvelle version en créant un nouveau ReplicaSet et en réduisant l’ancien.
- Pods, Deployments et Services
- Deployment rework rate
- La part des déploiements faits sans être prévus, à cause d’un incident en prod.
- Les métriques DORA : est-ce que la livraison s’améliore ?
- Dérive de configuration
- Des changements ponctuels de la configuration d’un serveur que personne n’enregistre. Au bout d’un moment, plus personne ne sait reconstruire le serveur.
- Pets vs cattle : remplacer les serveurs au lieu de les réparer
- DevOps
- Un mélange de culture, de pratiques et d’outils qui permet à une organisation de livrer et d’exploiter du logiciel vite et de façon fiable. Dev et ops partagent l’objectif au lieu de se passer le travail par-dessus un mur.
- Ce qu’est DevOps : dev et ops responsables d’un même service
- Digest
- Un hash
sha256:...du contenu de l’image. Deux images au même digest ont les mêmes octets. Un digest ne peut pas être déplacé vers un autre contenu. - Registries, tags et digests
- Dockerfile
- Un fichier texte d’instructions (
FROM,COPY,RUN,CMD...) que le builder exécute de haut en bas pour produire une image. - Le Dockerfile et son cache de build
- Drain
- Marquer un nœud non planifiable (cordon), pour qu’aucun nouveau pod n’y arrive, puis évincer ses pods pour qu’ils redémarrent ailleurs.
kubectl drainattend que chaque pod s’arrête proprement. - Gérer un cluster : mettre à jour sans coupure
- Drift
- L’état réel du cluster ne correspond plus à Git. Argo CD affiche l’appli en OutOfSync.
- GitOps : Git est la source de vérité
- Enregistrement DNS
- Une correspondance entre un nom et une valeur.
Adonne une adresse IPv4,AAAAune adresse IPv6,CNAMEun autre nom. Le TTL dit combien de temps les résolveurs peuvent garder la réponse en cache. - Le réseau : déboguer une couche à la fois
- errexit (`set -e`)
- Arrête le script quand une commande échoue. Il y a des exceptions : les commandes testées par
if,whileouuntil, toute partie d’un&&ou||sauf la dernière, tout ce qui est inversé avec!, et, sans pipefail, chaque commande d’un pipeline sauf la dernière. - Des scripts shell qui s’arrêtent à la première erreur
- État actuel
- Ce qui tourne vraiment, remonté dans le
statusde l’objet. - Pourquoi Kubernetes : contrôleurs et état désiré
- État désiré
- Ce que tu as demandé, écrit dans le
specd’un objet. Par exemple : trois réplicas de cette image. - Pourquoi Kubernetes : contrôleurs et état désiré
- Failed deployment recovery time
- Le temps pour se remettre d’un déploiement qui échoue et demande une intervention immédiate.
- Les métriques DORA : est-ce que la livraison s’améliore ?
- Fast-forward
- Un merge où la branche cible n’a pas bougé depuis la séparation. Git déplace juste le pointeur, sans nouveau commit.
- Branches, merge et rebase
- Feature flag
- Un interrupteur dans le code qui active ou désactive une fonctionnalité sans déploiement. Un release toggle cache le travail pas fini.
- Trunk-based development ou GitFlow
- Feature flag
- Un interrupteur dans le code qui active ou désactive une fonctionnalité sans nouveau déploiement. Déployer met le code sur les serveurs, et mettre en service active la fonctionnalité pour les utilisateurs.
- Les stratégies de déploiement : remplacer la version en production
- GitFlow
- Un modèle de 2010 avec deux branches permanentes,
master(souvent renomméemainaujourd’hui) etdevelop, plus des branches feature, release et hotfix. - Trunk-based development ou GitFlow
- Graphe de dépendances
- Qui doit exister avant qui. Terraform le construit à partir des références entre les blocs.
- Terraform : plan et apply
- Handler
- Une tâche qui ne tourne que si une autre tâche la notifie et répond
changed. Usage typique : recharger un service après un changement de sa config. - Les rôles Ansible : un dossier par métier
- HEAD
- La ref sur laquelle tu es en ce moment. En général il contient un nom de branche comme
refs/heads/main; en detached HEAD, il contient un hash de commit. - Git : des snapshots, trois zones et HEAD
- Healthcheck
- Une commande que le conteneur lance à intervalle régulier pour dire « je suis prêt ». Son résultat donne l’état de santé du conteneur.
- Docker Compose : toute la stack dans un seul fichier
- HPA
- HorizontalPodAutoscaler : ajoute ou retire des pods d’un Deployment selon une métrique, en général l’usage CPU comparé aux requests des pods.
- Gérer un cluster : mettre à jour sans coupure
- Idempotent
- Le lancer deux fois donne le même résultat que le lancer une fois. Un pipeline peut relancer sans risque un script idempotent.
- Des scripts shell qui s’arrêtent à la première erreur
- Idempotent
- Le lancer deux fois donne le même résultat que le lancer une fois. Une bonne tâche répond
okquand il n’y a rien à faire. - Ansible : des playbooks en SSH
- Image
- Une pile de couches de fichiers en lecture seule, plus des réglages (commande, utilisateur, env). Elle ne change plus une fois construite.
- Conteneurs et machines virtuelles
- Image de base minimale
- Une base qui ne contient presque rien d’autre que ce dont l’appli a besoin :
scratch(vide), distroless (ni shell ni gestionnaire de paquets), ou une variante slim. - Des images petites et sûres
- Index
- Aussi appelé staging area. Un fichier dans
.gitqui contient ce qui ira dans ton prochain commit. - Git : des snapshots, trois zones et HEAD
- Ingress
- Des règles de routage HTTP et HTTPS (hôte, chemin) depuis l’extérieur du cluster vers des Services. Ne fait rien tout seul.
- Ingress et stockage persistant
- Ingress controller
- Le proxy qui lit les objets Ingress et fait le routage. Tu dois en installer un. Créer un Ingress sans controller n’a aucun effet.
- Ingress et stockage persistant
- Instruction
- Une ligne du Dockerfile.
FROMchoisit l’image de base,COPYajoute des fichiers,RUNlance une commande,CMDfixe la commande par défaut. - Le Dockerfile et son cache de build
- Inventaire
- La liste des nœuds gérés, rangés en groupes comme
[app]et[db]. Ansible ajoute toujours les groupesalletungrouped. - Ansible : des playbooks en SSH
- Jenkinsfile
- Un fichier texte dans le dépôt qui définit le pipeline, et que tu relis et versionnes comme du code.
- Jenkins : controller, agents et Jenkinsfile
- Job et step
- Un job est une liste de steps exécutés dans l’ordre sur le même runner. Les jobs tournent en parallèle, sauf si l’un a besoin (
needs) d’un autre. - GitHub Actions : un pipeline dans le dépôt
- Journal
- Le stockage des logs de systemd, géré par journald. Tu le lis avec
journalctl, filtré par unit, par boot, par période ou par priorité. - Codes de sortie, flux et systemd : comment les outils se parlent
- Label et selector
- Un label est une clé et une valeur posées sur un objet, comme
app: guestbook. Un selector est une requête sur les labels, comme « tous les Pods avecapp: guestbookettier: frontend». - Pods, Deployments et Services
- Les Three Ways
- Les trois principes de Gene Kim derrière DevOps : le flux, le feedback, et l’expérimentation et l’apprentissage continus.
- Petits lots, feedback rapide
- Livraison continue
- Chaque changement qui passe le pipeline pourrait partir en production à tout moment. Un humain décide quand.
- Les pipelines : la procédure de déploiement lancée à chaque push
- Mapping
- Des paires clé et valeur,
key: value. L’imbrication se lit à l’indentation, avec des espaces uniquement : les tabulations sont interdites pour indenter. - YAML : la syntaxe et les types devinés
- Matrice
- Une liste de valeurs pour laquelle GitHub lance le même job une fois par valeur, par exemple trois versions de Node.js, sans que tu copies le job.
- GitHub Actions : un pipeline dans le dépôt
- Module
- Un petit programme qui fait un seul travail, comme
dnf,serviceoucopy. Ansible le copie sur le nœud géré et l’exécute là-bas. - Ansible : des playbooks en SSH
- Module
- Un dossier de code Terraform que tu appelles avec un bloc
module. Ton propre dossier est le root module, et ceux que tu appelles sont des child modules. - State, backends et modules Terraform
- Namespace
- Une fonction du noyau qui donne à un processus sa propre copie privée d’une ressource : PID, pile réseau, points de montage, nom d’hôte, utilisateurs.
- Conteneurs et machines virtuelles
- Namespace
- Un dossier nommé pour des ressources, à l’intérieur d’un cluster. Les noms doivent être uniques dans un namespace, pas entre namespaces. Les nœuds et les PersistentVolumes sont globaux au cluster, dans aucun namespace.
- Namespaces et RBAC : partager un cluster entre équipes
- Node
- Une machine de travail. Son kubelet s’assure que les Pods qui lui sont attribués tournent.
- Pourquoi Kubernetes : contrôleurs et état désiré
- nounset (`set -u`)
- Traite une variable non définie comme une erreur. Un shell non interactif affiche un message et s’arrête.
- Des scripts shell qui s’arrêtent à la première erreur
- Overhead
- Le travail administratif qui n’est pas lié à l’exploitation du service : réunions, paperasse RH, fixation d’objectifs. Tu dois quand même le faire, et il ne compte pas comme du toil.
- Le toil : repérer et automatiser le travail ops répétitif
- Paire de clés
- Une clé privée qui reste chez toi et une clé publique que tu poses sur les serveurs, dans
~/.ssh/authorized_keys. Crée-la avecssh-keygen -t ed25519 -C "toi@portable". - Clés SSH et secrets : hors de Git
- PersistentVolume (PV)
- Un morceau de stockage du cluster (un disque cloud, un partage NFS), avec sa propre vie, indépendante de tout Pod.
- Ingress et stockage persistant
- PersistentVolumeClaim (PVC)
- Une demande de stockage : une taille et un mode d’accès. Kubernetes la lie à un PV qui correspond.
- Ingress et stockage persistant
- Pet
- Un serveur traité comme unique et indispensable, construit et réparé à la main. Quand il tombe, l’équipe lâche tout pour le sauver.
- Pets vs cattle : remplacer les serveurs au lieu de les réparer
- Pinning
- Désigner une image par une version exacte, idéalement par digest (
myapp@sha256:...), pour que chaque pull récupère la même image. - Registries, tags et digests
- pipefail
- Un pipeline renvoie le code de la commande la plus à droite qui a échoué, et pas seulement celui de la dernière commande. Désactivé par défaut.
- Des scripts shell qui s’arrêtent à la première erreur
- Plan
terraform plan: compare la configuration avec ce qui existe, et liste les changements. Il ne change rien.- Terraform : plan et apply
- Playbook
- Un fichier YAML avec un ou plusieurs plays. Un play associe un groupe d’hôtes à une liste de tâches. Chaque tâche appelle un module.
- Ansible : des playbooks en SSH
- Plugin
- Un module ajouté au controller. Git, les rapports JUnit, les credentials et le pipeline lui-même sont tous des plugins.
- Jenkins : controller, agents et Jenkinsfile
- Pod
- La plus petite chose que Kubernetes fait tourner : un ou plusieurs conteneurs qui partagent réseau et stockage, toujours placés sur le même node.
- Pods, Deployments et Services
- PodDisruptionBudget (PDB)
- Une règle pour une appli : combien de ses pods doivent rester debout (
minAvailable) ou peuvent être absents (maxUnavailable) pendant une interruption volontaire comme un drain. - Gérer un cluster : mettre à jour sans coupure
- Port
- Un numéro qui désigne un programme en écoute sur une machine. Sous Linux, par défaut, un processus a besoin d’être root ou d’avoir la capability
CAP_NET_BIND_SERVICEpour utiliser un port sous 1024. - Le réseau : déboguer une couche à la fois
- Postmortem sans reproche
- Une analyse écrite d’un incident qui cherche les causes contributives sans accuser personne. Elle part du principe que chacun a agi de bonne foi avec ce qu’il savait.
- Observabilité et incidents : alerter sur ce que vivent les utilisateurs
- Probe
- Un test que le kubelet lance sur un conteneur : un HTTP GET, une connexion TCP, un appel gRPC ou une commande.
- Config, health checks et ressources
- Promotion
- Faire passer la même image de staging à la production en changeant une valeur dans Git, jamais en la reconstruisant.
- Projet final : du git push à l’alerte
- Pull request
- Une demande de merge d’une branche dans une autre, avec le diff, la discussion, les revues et les résultats de CI au même endroit.
- Pull requests, branches protégées et CODEOWNERS
- Quatre signaux en or
- Du livre SRE de Google : latence, trafic, erreurs, saturation. Si tu ne peux mesurer que quatre choses sur un système exposé aux utilisateurs, mesure celles-là.
- Observabilité et incidents : alerter sur ce que vivent les utilisateurs
- Rebase
- Rejouer tes commits au-dessus d’une autre branche. Mêmes changements, nouveaux commits avec de nouveaux hashes.
- Branches, merge et rebase
- Ref
- Un nom pour un commit. Une branche comme
mainest une ref,refs/heads/main, qui contient le hash d’un commit. Souvent c’est un petit fichier de ce nom ; après ungit gc, elle peut se trouver dans.git/packed-refsà la place. - Git : des snapshots, trois zones et HEAD
- Region et Availability Zone (AZ)
- Une Region est une zone géographique séparée, comme
eu-west-1. Chaque Region a plusieurs emplacements isolés appelés AZ, nommés commeeu-west-1a. - L’essentiel d’AWS : régions, réseaux, pare-feu et rôles
- Registry
- Un serveur qui stocke et sert des images : Docker Hub, GitHub Container Registry (
ghcr.io), la registry de ton cloud, ou une que tu héberges. Chaque nom d’image qu’elle contient, commeghcr.io/acme/myapp, est un repository. - Registries, tags et digests
- Release
- Une installation d’un chart dans un cluster, avec son propre nom. Installe le même chart deux fois, tu as deux releases.
- Helm : un gestionnaire de paquets pour Kubernetes
- Repo de config
- Contient les values Helm par environnement. Argo CD le surveille, et chaque commit ici déclenche un déploiement.
- Projet final : du git push à l’alerte
- Repo de l’appli
- Contient le code, le Dockerfile et le workflow CI. Un push ici construit une image.
- Projet final : du git push à l’alerte
- Request et limit
- La request est le CPU et la mémoire que le scheduler réserve pour un conteneur. La limit est le maximum qu’il peut utiliser : au-delà de la limite CPU il est bridé (throttling), au-delà de la limite mémoire l’OOM killer peut le tuer.
- Config, health checks et ressources
- Resource
- Une chose que Terraform gère, comme
resource "aws_instance" "app_server": un type, un nom local, et ses arguments. - Terraform : plan et apply
- Révision
- Une version numérotée d’une release. Chaque install, upgrade ou rollback ajoute 1. La première est toujours 1.
- Helm : un gestionnaire de paquets pour Kubernetes
- Rôle
- Un dossier avec une structure connue (
tasks/,handlers/,defaults/,vars/,templates/,files/,meta/). Ansible charge chaquemain.ymlpour toi. - Les rôles Ansible : un dossier par métier
- Role / ClusterRole
- Une liste de verbes autorisés (
get,list,create,delete...) sur des ressources. Un Role vit dans un namespace. Un ClusterRole vaut pour tout le cluster. - Namespaces et RBAC : partager un cluster entre équipes
- RoleBinding / ClusterRoleBinding
- Donne un Role à des sujets : utilisateurs, groupes ou service accounts. Un RoleBinding donne des droits dans son propre namespace, même quand il pointe vers un ClusterRole.
- Namespaces et RBAC : partager un cluster entre équipes
- Rolling update
- Remplacer les copies quelques-unes à la fois. Il n’y a pas de coupure, et l’ancienne et la nouvelle version servent les utilisateurs au même moment.
- Les stratégies de déploiement : remplacer la version en production
- Rotation
- Remplacer un secret par un nouveau et révoquer l’ancien. Après une fuite, la rotation rend inutilisable la valeur qui a fuité.
- Clés SSH et secrets : hors de Git
- rules
- Des conditions que GitLab vérifie quand il crée le pipeline. Elles décident si un job est ajouté au pipeline, et comment (par exemple
when: manual). - GitLab CI : stages, runners, cache et artefacts
- Runbook
- Les étapes écrites d’une tâche ou d’une alerte récurrente : « se connecter à X, lancer ceci, vérifier la sortie, relancer Y si... ». Quelqu’un qui sait programmer y lit du pseudocode.
- Le toil : repérer et automatiser le travail ops répétitif
- Runner
- La machine qui exécute un job. Les runners hébergés par GitHub sont des machines virtuelles neuves (Ubuntu, Windows, macOS). Tu peux aussi héberger les tiens.
- GitHub Actions : un pipeline dans le dépôt
- Runner
- Le programme GitLab Runner qui prend les jobs et les exécute. Sur GitLab.com tu peux utiliser ceux hébergés par GitLab, sur ton propre GitLab tu les installes et tu les gères.
- GitLab CI : stages, runners, cache et artefacts
- Scalaire
- Une valeur unique. Sans guillemets (plain), le parseur choisit son type : chaîne, nombre, booléen ou null. Un scalaire entre guillemets est toujours une chaîne.
- YAML : la syntaxe et les types devinés
- Secret
- Tout ce qui donne un accès : un mot de passe, un token, une clé privée, une clé d’API. S’il fuit, quelqu’un d’autre peut agir à ta place.
- Clés SSH et secrets : hors de Git
- Secret
- Comme une ConfigMap, pour les valeurs sensibles. Par défaut stocké non chiffré dans etcd. Les valeurs de
datasont en base64, ce qui ne cache rien. - Config, health checks et ressources
- Security group
- Un pare-feu stateful attaché à une instance. Il n’a que des règles d’autorisation. Un nouveau n’a aucune règle entrante, donc rien n’entre tant que tu n’en ajoutes pas.
- L’essentiel d’AWS : régions, réseaux, pare-feu et rôles
- Self-heal
- Option d’Argo CD : quand l’état réel s’écarte de Git, resynchroniser tout seul. Désactivée par défaut.
- GitOps : Git est la source de vérité
- Semantic versioning
MAJOR.MINOR.PATCH: MAJOR pour les changements incompatibles, MINOR pour les nouvelles fonctionnalités rétrocompatibles, PATCH pour les corrections de bugs rétrocompatibles.- Tags, versions et releases
- Serveur immuable
- Un serveur qu’on ne modifie jamais une fois déployé. Pour le changer, tu construis une nouvelle image et tu remplaces le serveur.
- Pets vs cattle : remplacer les serveurs au lieu de les réparer
- Service
- Un composant de l’appli dans
compose.yaml(web, backend, db). Compose fait tourner un ou plusieurs conteneurs pour lui. - Docker Compose : toute la stack dans un seul fichier
- Service
- Un nom stable et une IP virtuelle devant un ensemble de Pods qui change. Le type par défaut est
ClusterIP, joignable seulement depuis le cluster. - Pods, Deployments et Services
- Service account
- Une identité pour un programme, pas pour une personne. Chaque namespace en a un nommé
default, et un pod qui n’en nomme aucun tourne avec celui-là. - Namespaces et RBAC : partager un cluster entre équipes
- Silo
- Une équipe qui travaille pour son propre objectif, avec ses outils et son vocabulaire, et ne parle aux autres équipes que par tickets.
- Ce qu’est DevOps : dev et ops responsables d’un même service
- Silo d’équipe DevOps
- L’anti-pattern : une nouvelle équipe appelée « DevOps » placée entre dev et ops. Elle ajoute un deuxième mur et éloigne encore dev et ops.
- Ce qu’est DevOps : dev et ops responsables d’un même service
- SLO et error budget
- Un SLO est un objectif, par exemple 99 % des requêtes réussissent et sont rapides. L’error budget, c’est ce qui reste : 1 % peut échouer. Le burn rate dit à quelle vitesse tu le dépenses.
- Observabilité et incidents : alerter sur ce que vivent les utilisateurs
- SNI
- Server Name Indication : le client envoie le nom d’hôte dans le handshake TLS, ce qui permet à une seule IP de servir plusieurs certificats.
- Le réseau : déboguer une couche à la fois
- ssh-agent
- Un processus qui garde tes clés déverrouillées en mémoire, pour que tu tapes la passphrase une fois par session, pas une fois par connexion.
- Clés SSH et secrets : hors de Git
- Stage
- Tout ce qui va d’un
FROMau suivant. Tu peux le nommer avecAS builderet ne construire que jusqu’à lui avec--target. - Des images petites et sûres
- Stage
- Une étape du pipeline, comme build, test ou deploy. Les jobs d’un même stage peuvent tourner en parallèle. Le stage suivant attend que celui-ci passe.
- Les pipelines : la procédure de déploiement lancée à chaque push
- State
- L’enregistrement qui relie chaque objet réel à son bloc. Un fichier JSON,
terraform.tfstatepar défaut. Ne l’édite jamais à la main. - State, backends et modules Terraform
- Status check obligatoire
- Un job de CI qui doit finir en succès, skipped ou neutral avant que la PR puisse être mergée.
- Pull requests, branches protégées et CODEOWNERS
- stdout et stderr
- Deux flux de sortie : stdout (descripteur de fichier 1) pour les résultats, stderr (descripteur 2) pour les erreurs et les messages. stdin (descripteur 0) est l’entrée.
- Codes de sortie, flux et systemd : comment les outils se parlent
- Symptôme ou cause
- Le symptôme, c’est ce qui est cassé pour les utilisateurs (« des HTTP 500 »). La cause, c’est pourquoi (« la base refuse les connexions »). Alerte sur les symptômes, cherche les causes sur les tableaux de bord.
- Observabilité et incidents : alerter sur ce que vivent les utilisateurs
- Tag
- Un nom lisible pour une version, comme
1.4.2oulatest. Les tags sont modifiables : un push peut faire pointer le même tag vers une nouvelle image. - Registries, tags et digests
- Tag annoté
- Un objet tag avec le nom et l’email de la personne qui tague, une date et un message. Créé avec
git tag -a. Fait pour les releases. Un tag léger n’est qu’un nom qui pointe vers un commit, pour des étiquettes privées ou temporaires. - Tags, versions et releases
- Tag immuable
- Un tag d’image qui ne bouge jamais, comme
sha-ad132f5. Contrairement àmainoulatest, il désigne toujours la même image. - Projet final : du git push à l’alerte
- Taille de lot
- La quantité de changements que tu livres d’un coup. Un commit, c’est un petit lot. Une release trimestrielle, un lot énorme.
- Petits lots, feedback rapide
- Template
- Un fichier Jinja2 (
.j2) où Ansible remplace{{ nginx_worker_processes }}par la valeur de chaque hôte. Le moduletemplatele génère sur le serveur. - Les rôles Ansible : un dossier par métier
- Toil
- Du travail lié à l’exploitation d’un service en prod qui tend à être manuel, répétitif, automatisable, tactique (déclenché par des interruptions, réactif), sans amélioration durable, et qui grandit avec la taille du service. Une tâche n’a pas besoin des six traits pour être du toil.
- Le toil : repérer et automatiser le travail ops répétitif
- Travail d’ingénierie
- Du travail qui demande du jugement humain et apporte une amélioration durable : écrire de l’automatisation, corriger une cause racine, améliorer le monitoring.
- Le toil : repérer et automatiser le travail ops répétitif
- Travail en cours (WIP)
- Le travail que quelqu’un a commencé sans le finir. Une limite de WIP plafonne le nombre d’éléments dans une même étape au même moment.
- Petits lots, feedback rapide
- Trunk
- La branche partagée unique dans laquelle tout le monde merge, en général
main. - Trunk-based development ou GitFlow
- Unit
- Un fichier qui dit à systemd comment lancer quelque chose. Une unit
.serviceindique quelle commande démarrer, sous quel utilisateur, et quoi faire quand elle se termine. - Codes de sortie, flux et systemd : comment les outils se parlent
- Utilisateur IAM ou rôle IAM
- Un utilisateur a des identifiants permanents (un mot de passe, des access keys). Un rôle n’en a aucun : celui qui l’endosse reçoit des identifiants temporaires. Les humains et les applis devraient utiliser des rôles.
- L’essentiel d’AWS : régions, réseaux, pare-feu et rôles
- Utilisateur non root
- Une ligne
USERpour que l’appli ne tourne pas en UID 0. Sans elle, ni dans ton Dockerfile ni dans l’image de base, l’utilisateur par défaut dans un conteneur est root. - Des images petites et sûres
- Values
- Les réglages injectés dans les templates. Les défauts viennent de
values.yaml, les surcharges de-f file.yamlou--set key=value. - Helm : un gestionnaire de paquets pour Kubernetes
- Verrou de state
- Si le backend gère le verrou (et qu’il est activé), Terraform le prend automatiquement à chaque opération qui pourrait écrire le state. Un deuxième
applyattend ou échoue au lieu d’écraser le premier. - State, backends et modules Terraform
- Volume
- Un stockage qui survit au conteneur. Un volume nommé (
db-data) survit àdocker compose down.down -vle supprime. - Docker Compose : toute la stack dans un seul fichier
- VPC et subnet
- Un VPC est ton réseau privé, comme
10.0.0.0/16. Un subnet en est une tranche qui vit dans exactement une AZ. Public si sa table de routage envoie le trafic vers une internet gateway, privé sinon. - L’essentiel d’AWS : régions, réseaux, pare-feu et rôles
- Workflow
- Un fichier YAML dans
.github/workflows/. Il dit quand tourner (on:) et quoi exécuter (jobs:). - GitHub Actions : un pipeline dans le dépôt