Que signifie « Kubernetes est déclaratif » ?
On décrit l'état désiré, pas les actions ; le cluster converge vers cet état tout seul
On décrit l'état désiré, pas les actions ; le cluster converge vers cet état tout seul
Un outil d'infrastructure as code déclaratif : on décrit l'infra en HCL, il applique les changements
Le fichier qui associe chaque ressource de la config à son identifiant réel chez le fournisseur
Un plan plus rapide, un rayon d'explosion limité, et des équipes qui n'attendent pas le même verrou
Le gestionnaire de paquets de Kubernetes : des charts, templates YAML paramétrables
La référencer par son digest : image@sha256:…
Une identité sans clé fixe, assumée par un service ou un utilisateur pour des identifiants temporaires
Kubernetes managé par AWS : control plane hébergé et opéré par AWS, nœuds à toi (ou Fargate)
Une couche d'identité au-dessus d'OAuth 2.0 : elle ajoute l'authentification et l'ID token
Une façon de travailler où dev et ops partagent outils, responsabilités et boucle de feedback
Chaque commit poussé est automatiquement construit et testé
L'artefact est toujours prêt à être déployé en production ; le déploiement reste une décision humaine
Chaque commit qui passe le pipeline part en production, sans intervention humaine
Pour déployer en prod exactement ce qui a été testé : même digest, zéro variation de build
1. Build : `docker build` de l'image, tests, tag par SHA du commit 2. Push : l'image part dans le registre (ECR, GHCR) 3. Deploy : la config de déploiement (manifest, Helm values) est mise à jour pour pointer vers le nouveau tag, puis appliquée au cluster
L'infrastructure sous le cluster : réseau, cluster lui-même, nœuds, IAM, bases, DNS, registre
Helm (ou kubectl, Kustomize, Argo CD) : des manifests Kubernetes, pas du Terraform
Le provider se configure depuis des attributs du cluster inconnus au plan : ça marche parfois, puis casse
1. Réseau : VPC, sous-réseaux, DNS (Terraform) 2. Cluster : EKS, nœuds, IAM (Terraform) 3. Plateforme : ingress controller, cert-manager, external-dns, monitoring (Helm, souvent via Terraform ou Argo) 4. Applications : les services métier (Helm / GitOps)
Hors de l'image si ça change sans rebuild ; dans les values si ça dépend de l'environnement
Une instance installée d'un chart dans un namespace, avec un historique de révisions
Terraform l'expose en output, le pipeline ou le state suivant la lit et l'injecte dans les values Helm
L'état désiré du cluster vit dans Git ; un agent dans le cluster réconcilie en continu avec ce qui est commité
En push, la CI détient les identifiants du cluster ; en pull, l'agent n'a besoin que de lire Git
Par un commit qui change le tag d'image dans les values de prod, souvent via une pull request
Kubernetes, via le AWS Load Balancer Controller, à la création d'un Service LoadBalancer ou d'un Ingress
Il crée les enregistrements DNS (Route 53…) à partir des Ingress et Services du cluster
Il obtient et renouvelle automatiquement les certificats TLS (Let's Encrypt ou autre) pour les Ingress
Au load balancer ou à l'ingress controller ; derrière, les pods parlent en HTTP clair sur le réseau interne
1. HPA : plus de pods quand la charge monte 2. Cluster Autoscaler / Karpenter : plus de nœuds quand des pods restent Pending faute de place 3. Auto Scaling Group / API EC2 : les machines réellement créées
Secrets Manager / Vault → External Secrets Operator (dans le cluster, avec un rôle IAM en lecture) → objet Secret Kubernetes → variable d'env ou fichier dans le pod
Par OIDC : le job présente un jeton signé par GitHub, échangé contre les identifiants temporaires d'un rôle
Par IRSA ou Pod Identity : son ServiceAccount est associé à un rôle IAM
Deux environnements complets ; on bascule le trafic de l'ancien (blue) vers le nouveau (green) d'un coup
La nouvelle version reçoit une petite part du trafic (1 à 10 %) ; on mesure, puis on augmente ou on annule
L'ancienne version ne sait pas lire le nouveau schéma : la migration doit rester compatible avec N-1
Un interrupteur de configuration qui active une fonctionnalité sans redéployer
Tout le monde commite sur une branche principale unique, via des branches qui vivent des heures
La capacité à comprendre l'état interne d'un système à partir de ce qu'il émet : métriques, logs, traces
Le standard ouvert (CNCF) pour instrumenter une application : métriques, logs et traces
Un objectif chiffré de fiabilité sur une métrique vue par l'utilisateur, sur une période donnée
La marge d'indisponibilité que le SLO autorise : avec 99,9 % sur 30 jours, 43 minutes de panne
Le temps entre un commit et sa mise en production
La part des déploiements en production qui provoquent un incident ou un rollback
Déplacer les contrôles de sécurité dans la CI, au plus près du commit, plutôt qu'en audit final
La machine (ou le conteneur) qui exécute les jobs du pipeline
C'est le seul canal que tous les environnements fournissent sans rebuild : règle III des 12 facteurs
Les serveurs sont interchangeables et remplaçables, pas soignés un par un
On ne modifie jamais un serveur en place : on construit une nouvelle image et on remplace
Presque rien : Terraform provisionne, image et manifests configurent ; Ansible reste aux serveurs mutables
La même image garantit le même comportement ; seul l'orchestrateur change, adapté à l'échelle
Namespaces pour les environnements de même criticité ; un cluster séparé pour la prod
Un tag peut être déplacé par son auteur, ou par un attaquant : le SHA, non
L'agent détecte l'écart avec Git et remet le manifest en place (self-heal), le changement manuel disparaît
Pod prêt → endpoint du Service → cible saine de l'ingress ou du LB ; pod pas prêt → retiré de toute la chaîne
L'analyse d'un incident centrée sur les causes systémiques et les actions, pas sur la faute d'une personne
Par une access entry EKS, créée par Terraform, qui associe le rôle IAM à des droits RBAC Kubernetes
Le nœud, via son rôle IAM (lecture ECR) ; pour un registre tiers, un imagePullSecret dans le namespace
La CI commite dans le dépôt de config, ou un outil du cluster (Image Updater, Flux) qui surveille le registre
Un Job lancé avant le rollout par un hook (Helm pre-upgrade, Argo PreSync), jamais l'appli au démarrage