1. INTERVENANTS
DJEBBOURI Younes
Architecte Azure et DevOps đđ»âš
2. PROBLĂMATIQUE
â Mettre Ă jour un cluster Kubernetes, ce nâest pas du ânext next finishâ.
Avec AKS, chaque upgrade ne se limite pas Ă passer dâune version Ă une autre de Kubernetes.
Câest tout un Ă©cosystĂšme qui bouge : kubelet, kube-proxy, DNS, CNI, CSI, Metrics Server, Secret Provider, autoscaler, etc.
đ Et parfois, un simple clic sur âUpgradeâ peut dĂ©clencher des breaking changes invisibles⊠jusquâĂ ce que ton cluster tombe.
Les 3 grandes problématiques
1. Comment faire les mises Ă niveau sans faire sauter le cluster ?
đ Cycle de vie Kubernetes â Risques de breaking change, stratĂ©gies dâupgrade (canary, blue/green, LTSâŠ)
2. Comment assurer la rĂ©silience de lâinfrastructure sous-jacente ?
đ Haute disponibilitĂ© â Zones, redondance, autoscaler, Node Auto-Provisioning (NAP), etc
3. Comment garantir la résilience des applications ?
đ RĂ©silience applicative â HPA, Dapr, probes, tolerations⊠Les bonnes pratiques doivent ĂȘtre codĂ©es dĂšs le dĂ©part
3. AKS UPGRADE
StratĂ©gies d’Upgrade AKS
Sur AKS, tu choisis la version de Kubernetes que tu veux utiliser, mais tu dois respecter la logique de progression imposée par Azure :
- đą 1.30 vers 1.31
- đą 1.32 vers 1.33
- đŽ 1.29 vers 1.32
Tu es donc obligé de passer par chaque version intermédiaire, avec tous les impacts que cela implique.
Cinq approches pour gérer tes upgrades
StratĂ©gie 1 â Mise Ă jour automatique (Automatic Update)
Laisser AKS faire les mises Ă jour tout seul ?
Ce nâest pas une option recommandĂ© en prod
Tu ne sais pas quand ça démarre, ni combien de temps ça prendra.
Et le dĂ©placement des workloads peut se faire sans contrĂŽle prĂ©cis sur la fenĂȘtre dâimpact.
â On Ă©carte tout de suite

StratĂ©gie 2 â Suivre le rythme des releases Kubernetes
Une mise à jour réguliÚre, version aprÚs version.
Tu restes dans la zone de support AKS (N, N-1, N-2), maisâŠ
Tu dois gérer les changements fréquents, les tests, les éventuelles régressions.
Et plus lâenvironnement est complexe, plus câest tendu
StratĂ©gie 3 â Faire des sauts de version en chaĂźne
Tu attends 12 Ă 18 mois, puis tu fais plusieurs upgrades successives pour rattraper.
Mais ce genre de mise à niveau combinée est plus risquée :
- Tu accumules les breaking changes, et ton rollback devient plus difficile Ă maĂźtriser
StratĂ©gie 4 â Upgrade progressif par Node Pool (type Canary)
Tu isoles les workloads dans des Node Pools séparés ( userpool )
et tu mets Ă jour un Node Pool Ă la fois.
Tu réduis la surface à risque, tu peux tester avant de généraliser
đ Et si problĂšme il y a : tu peux toujours recrĂ©er un Node Pool avec une version antĂ©rieure
StratĂ©gie 5 â Cluster Ă©phĂ©mĂšre (Blue/Green)

Tu reconstruis ton cluster dans un environnement parallÚle (le « Green« ),
pendant que le « Blue » continue de tourner.
Une fois validé, tu fais basculer la prod vers le Green,
et tu peux dĂ©sactiver ou supprimer lâancien.
đą Meilleure maĂźtrise
đą Moins dâinterruption
| Depuis la version 1.28, bonne nouvelle : âĄïž Les workloads peuvent exprimer une exigence minimale de compatibilitĂ© Kubernetes, ce qui permet Ă AKS de bloquer un upgrade si nĂ©cessaire. Et si lâupgrade Ă©choue, AKS peut revenir en arriĂšre automatiquement |
| âł Le meilleur choix reste de prĂ©voir le Blue/Green dĂšs lâarchitecture initiale, via Terraform. Tu gagneras en sĂ©curitĂ©, en lisibilitĂ©, et en autonomie |
5. RESILIENCE
Quels risques veut-on vraiment adresser ?
Avant dâacheter des options de haute dispo Ă tout-va, il faut qualifier les types de pannes que tu souhaites absorber, et Ă quel niveau :
| Risque | PérimÚtre concerné | Réponse disponible |
|---|---|---|
| Perte dâun Pod | RĂ©silience applicative | Kubernetes recrĂ©e automatiquement le Pod sur un autre nĆud. |
| Perte dâun nĆud | RĂ©silience infrastructure | Un nouveau nĆud est provisionnĂ©, le dĂ©faillant est Ă©vacuĂ©. |
| Panne régionale Azure | Résilience business | Si anticipée, tu peux redéployer dans une autre région. |
| Panne dâune gĂ©ographie entiĂšre (ex. Western Europe + North Europe) | RĂ©silience stratĂ©gique | Demande un plan DRP / Multi-Cloud, souvent lourd Ă justifier. |
| â ïž Important : AKS, câest juste une brique dans ton systĂšme. Si tu as un backend SQL, un cache Redis ou une file dâattente en single-region⊠câest probablement eux qui vont plier en premier, pas ton cluster |
Accepter quâil nâexiste pas de âzĂ©ro risqueâ

AKS est un service régional, avec une tolérance aux pannes dans la région.
Mais dĂšs quâon parle de bascule entre rĂ©gions (ou gĂ©ographies Azure), ce nâest plus automatique.
Et lĂ , tout devient plus complexe :
- Bascule de données (et pas juste du code)
- Synchronisation des secrets, certificats, configs
- Réplication entre bases, entre services, entre régions
đž Et bien sĂ»r, tout ça a un coĂ»t :
âĄïž Tu veux du chaud-froid (active/passive) ? Double les ressources.
âĄïž Tu veux du chaud-chaud ? PrĂ©vois aussi la complexitĂ© de synchro et de test.
La vraie question devient donc :
đ âMon business est-il prĂȘt Ă financer cette rĂ©silience supplĂ©mentaire ?â
Résilience Infrastructure
Maßtriser la scalabilité
Tu ne peux pas ĂȘtre rĂ©silient si ton cluster nâarrive dĂ©jĂ pas Ă scaler correctement.
AKS te propose trois stratégies de scalabilité selon le niveau de contrÎle que tu veux garder :
1. Manual Scale
- Tu fixes manuellement le nombre de nĆuds par pool
- Simple et prévisible
- Mais si ça sature, ça plante.
2. Cluster Autoscaler
- Active ou dĂ©sactive des nĆuds dans un Node Pool selon la charge rĂ©elle
- Basé sur des seuils de CPU/mémoire
- Peut réduire la facture⊠si bien configuré
3. NAP (Node Auto-Provisioning)
- Provisionne dynamiquement des VMs hors des Node Pools
- Piloté automatiquement en fonction du besoin réel
- Plus granulaire, mais encore en Preview (et avec limitations)
Le cas particulier de NAP
Le Node Auto-Provisioning (NAP), inspirĂ© de Karpenter chez AWS, vise une approche âjuste ce quâil fautâ.
đ§ IdĂ©e :
Pourquoi garder des VM tournant Ă vide si je peux les crĂ©er Ă la volĂ©e, pile au moment oĂč mes pods les rĂ©clament ?
đ Fonctionnement :
- Le scheduler observe la demande
- Si aucun nĆud existant ne peut hĂ©berger le pod, il crĂ©e une VM dĂ©diĂ©e avec les specs parfaites
- Quand plus rien ne tourne dessus, il la détruit
đš Limitations actuelles (car toujours en Preview) :
- Incompatible avec le Cluster Autoscaler
- Pas de support pour :
- Windows Node Pools
- Disk Encryption Sets
- Start/Stop des clusters (surfacturation possible)
- Zones Availability (certaines régions uniquement)
đ Ă surveiller, mais Ă ne pas dĂ©ployer en prod critique pour lâinstant.
Comparatif des approches
| CritĂšre | Manual Scale | Cluster Autoscaler | NAP / Karpenter |
|---|---|---|---|
| ComplexitĂ© | Faible â | Moyenne â | ĂlevĂ©e â |
| VisibilitĂ© sur les coĂ»ts | Excellente â | Moyenne â | OptimisĂ©e â |
| MaturitĂ© | Stable â | Stable â | En dĂ©veloppement â |
En pratique => Ce que je recommande souvent
- System Node Pools : ne bougent presque jamais.
- GĂšre-les avec du
Manual Scalebien dimensionné.
- GĂšre-les avec du
- User Node Pools : câest lĂ que vit ton applicatif.
- đ Active le
Cluster Autoscaler, mais surveille les mĂ©triques de saturation. - Si tu touches trop souvent le âmax nodesâ, il est temps de revoir ta config
- đ Active le
- đ§Ș NAP : Ă tester en environnement de hors prod
- đ Il peut tâaider Ă explorer une scalabilitĂ© ultra fine pour des workloads batch ou Ă©vĂ©nementiels
RĂ©silience â haute dispo par dĂ©faut
AKS est solide, mais il ne garantit rien au-delà de la région.
La vraie rĂ©silience, câest :
- De la redondance (multi-AZ, multi-regionâŠ)
- Du pilotage (monitoring, alerting)
- De la discipline (infra as code, tests de bascule, documentation claire)
Et comme toujours dans le cloud :
| âïž Ce que tu gagnes en scalabilitĂ©, tu dois le payer en observabilitĂ© |
Résilience Applicative
« Un cluster peut tomber, un pod peut crasher, une dĂ©pendance peut rĂ©pondre trop lentementâŠ
Mais ton appli doit tenir. La vraie résilience commence dans le deployment.yaml. »
DĂ©clarer les besoins de lâapplication
DÚs la conception, la résilience passe par des manifeste Kubernetes bien pensés.
Chaque workload devrait clairement déclarer :
- Des requests pour réserver les ressources minimales nécessaires (CPU, mémoire).
- Des limits pour éviter la consommation abusive et assurer une équité entre pods.
- Des Tolerations / Node Affinity pour imposer des contraintes de scheduling précises.
Et le classique :
resources:
requests:
cpu: "0.5"
memory: "2Gi"
limits:
cpu: "4"
memory: "16Gi"
Sans ces informations :
- Le pod peut ĂȘtre planifiĂ© nâimporte oĂč, y compris sur des nĆuds systĂšme.
- Il peut monopoliser les ressources, provoquant du throttle sur les autres workloads.
- Le recyclage ne se dĂ©clenche jamais, mĂȘme si le pod dĂ©raille.
Et si un dĂ©veloppeur dĂ©finit arbitrairement des limites Ă 4 CPU / 16Gi alors quâil consomme 10%, tu sur-provisionnes ton cluster pour rien.
Résultat : tu paies pour le silence.
Horizontal Pod Autoscaler (HPA)
HPA est un contrĂŽleur natif Kubernetes qui ajuste automatiquement le nombre de pods selon :
- Lâutilisation CPU
- Lâutilisation mĂ©moire (si le Metric Server est bien configurĂ©)
- Ou des Custom Metrics (via Prometheus Adapter, par exemple)
Exemple :
spec:
minReplicas: 3
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 60
SCALER SUR ĂVĂNEMENT
âTon backend explose Ă 20 000 messages en attente ?
KEDA te balance des pods. Sans broncher.â
KEDA ( Kubernetes Event-Driven Autoscaling )

KEDA permet de déclencher un scaling applicatif non pas selon des métriques CPU classiques, mais sur des événements concrets.
Un backlog Kafka qui grossit ? Une table SQL qui déborde ? KEDA observe, réagit⊠et scale.
Parce que le vrai pic de charge ne vient pas toujours du CPU/RAM
Exemple : Apache Kafka
Tu as une app de traitement en temps réel, branchée sur une file Apache Kafka.
Pas de surcharge tant que le flux reste fluide.
Mais dĂšs que les messages sâaccumulent dans un topic ?
âĄïž KEDA capte lâaugmentation du lag Kafka
âĄïž Et lance automatiquement des pods supplĂ©mentaires pour accĂ©lĂ©rer le traitement.
les patterns de résilience⊠sans les coder
La Résilience, intégrée by design ( Dapr )
Dapr (Distributed Application Runtime) est un projet open source initié par Microsoft, adopté largement dans la communauté cloud-native.

Son objectif est simple mais ambitieux :
âĄïž Simplifier le dĂ©veloppement dâapplications rĂ©silientes, en externalisant les mĂ©canismes complexes hors du code mĂ©tier.
Dapr agit comme une couche dâabstraction portable, disponible dans nâimporte quel langage, qui permet aux dĂ©veloppeurs de se concentrer sur la logique fonctionnelle â tout en bĂ©nĂ©ficiant de patrons de rĂ©silience Ă©prouvĂ©s.
Les Patterns Cloud-Native intégrés dans Dapr
Dapr embarque nativement plusieurs mécanismes clés de résilience :
| Pattern | RĂŽle |
|---|---|
| â±ïž Timeouts | Ăviter quâune requĂȘte nâattende indĂ©finiment une rĂ©ponse. |
| đ Retry / Backoff | RĂ©essayer automatiquement les appels externes avec une logique progressive. |
| đ§ Circuit Breaker | Couper temporairement les appels vers un service en Ă©chec pour prĂ©server lâensemble du systĂšme. |
| đ Health Monitoring | VĂ©rifier lâĂ©tat mĂ©tier dâun service via des endpoints applicatifs. |
Ces comportements peuvent ĂȘtre dĂ©finis par configuration (policies), sans ĂȘtre codĂ©s dans lâapplication.
Exemple : un microservice dâenvoi dâe-mails
Ton service notifications-api appelle un provider SMTP externe.
âĄïž Avec Dapr, tu configures :
- Timeout Ă 3 secondes
- 3 retries maximum
- Circuit breaker si 5 erreurs consécutives
- Et un endpoint
/healthz/emailpour tester la connectivité SMTP
Résultat : si le provider rame ou tombe, ton service ne sature pas, évite les boucles infinies et peut rediriger intelligemment vers un fallback.
Déploiement sur AKS
- Dapr sâinstalle comme sidecar dans ton Pod Kubernetes.
- Il est invisible pour lâinfra, mais redoutablement efficace cĂŽtĂ© applicatif.
- Tu peux lâinstaller cluster-wide via Helm ou Operator
â Il devient un agent de rĂ©silience as a service, au plus prĂšs de tes workloads.
LE SERVICE MESH QUI BLINDE TES COMMUNICATIONS
La rĂ©silience au cĆur du rĂ©seau ( ISTIO)
Istio est une solution de Service Mesh open source, conçue pour sécuriser, contrÎler et observer les communications entre tes microservices, sans modifier le code des applications
Déployé en tant que proxy sidecar (Envoy) injecté dans chaque Pod, Istio intercepte et gÚre tout le trafic est-ouest (interne au cluster), avec une finesse redoutable

Pourquoi Istio renforce ta résilience ?
En centralisant la gestion des flux rĂ©seau, Istio permet dâimplĂ©menter facilement des stratĂ©gies avancĂ©es de tolĂ©rance aux pannes, sans intervention des dĂ©veloppeurs.
Voici ce quâil peut faire pour toi :
| Fonction | Description |
|---|---|
| đ Retry / Timeout | RedĂ©clenche automatiquement des requĂȘtes en cas dâĂ©chec transitoire. |
| đ§ Circuit Breaker | Isole un service en panne pour Ă©viter dâaggraver la situation. |
| â Load Balancing | RĂ©partit le trafic entre plusieurs instances en fonction de rĂšgles avancĂ©es. |
| đ Traffic Shifting | Dirige un pourcentage du trafic vers une nouvelle version (canary, A/B). |
| đ Health-Based Routing | Ne dirige le trafic quâaux instances saines. |
Exemple :
un microservice critique qui appelle un service de facturation
Tu veux éviter que toute la chaßne plante si billing-api ne répond plus ?
Avec Istio, tu peux définir via un simple manifeste :
- 3 tentatives de retry avec timeout Ă 2 secondes
- Circuit breaker aprĂšs 5 erreurs sur une fenĂȘtre de 30s
- Fallback automatique vers une version de secours (shadow service)
- Redirection du trafic vers une version canary Ă 10%
Et tout ça, sans toucher au code du microservice.
Déploiement AKS :
- Istio est supportĂ© sur AKS, mĂȘme si non natif.
- Installation via
istioctlou Helm. - Intégration possible avec Kiali (visualisation du maillage), Jaeger (tracing), Prometheus/Grafana (metrics)
Tu gagnes une vision complĂšte du trafic + contrĂŽle dynamique sans modifier une seule ligne dâapplication
4. CONCLUSION
Un upgrade bien prĂ©parĂ©, câest dĂ©jĂ la moitiĂ© de la bataille.
Anticiper les breaking changes, choisir la bonne stratĂ©gie (canary, blue/greenâŠ), et dimensionner correctement ton cluster, câest ce qui fait la diffĂ©rence entre une mise Ă jour fluide⊠et une nuit blanche.
Mais attention : sans sauvegarde, tout ça reste fragile.
đ Tu peux avoir le meilleur design du monde, si un volume disparaĂźt ou si ton etcd est corrompu, tu nâas plus aucun filet.
PROCHAIN ARTICLE
đ La Partie 2 sera dĂ©diĂ©e Ă la sauvegarde et la restauration dans AKS
On verra :
- Comment protĂ©ger ton infrastructure via lâIaC.
- Comment capturer lâĂ©tat du cluster (etcd, RBAC, secrets, objets Kubernetes).
- Comment sécuriser les volumes persistants (PVC, snapshots, Velero, AKS Native Backup).
- Et surtout, comment tester tes plans de reprise pour éviter la panique en prod.