1. INTERVENANTS
DJEBBOURI Younes
Architecte Azure et DevOps đđ»âš
2. PROBLĂMATIQUE
« Avoir des dashboards, câest bien. Garder le contrĂŽle, câest mieux. »
Tu peux avoir Grafana, des logs, des dashboards dans tous les sensâŠ
Mais si tu ne sais pas oĂč chercher, quoi corrĂ©ler, ou comment garder ton cluster alignĂ© avec Git, tu restes dans le flou.
Et câest souvent ce qui se passe.
Trop dâoutils, trop de signaux, pas de stratĂ©gie claire.
Tu passes plus de temps Ă naviguer entre les consoles quâĂ comprendre ce quâil se passe vraiment.
Câest lĂ quâil faut faire un choix :
- Tu veux du managĂ© et bien intĂ©grĂ© ? LâĂ©cosystĂšme Azure est prĂȘt
- Tu veux tout maĂźtriser ? La stack open source (Prometheus, Grafana, Loki) est lĂ
- Et entre les deux, GitOps devient ta vérité unique pour garder le cap
Dans cette seconde partie, on parle supervision qui tient la route
pas de âmonitoring pour faire joliâ mais pour agir au bon moment, sur les bons signaux
4. GITOPS
LâĂ©poque oĂč on lançait un kubectl apply -f
depuis son poste est (presque) révolue
Aujourdâhui, on parle de GitOps : un modĂšle oĂč le cluster va chercher lui-mĂȘme ce quâil doit exĂ©cuter, directement dans un dĂ©pĂŽt Git versionnĂ©
Et ce simple renversement change tout :
â Ce nâest plus un humain qui pousse. Câest le cluster qui tire.
Flux

Flux, câest la solution adoptĂ©e et maintenue par Microsoft dans AKS, disponible directement en extension AKS ou Arc-enabled.
Il sâappuie sur une philosophie trĂšs claire :
đŻ Â«Â The Git repository is the source of truth. »
đ Fonctionnement :
- Chaque cluster lit une ou plusieurs branches Git (par exemple
main
ouprod
) - DĂšs quâun commit est validĂ© (ex: une PR fusionnĂ©e), le cluster dĂ©clenche un dĂ©ploiement
- Tout Ă©cart avec lâĂ©tat du dĂ©pĂŽt est corrigĂ© automatiquement
Et surtout :
- Si quelquâun modifie un objet Ă la main (via portail, CLIâŠ), Flux le remet en lâĂ©tat attendu, car seule la vĂ©ritĂ© Git fait foi
Et pour gérer plusieurs environnements ?
Tu vas vite avoir besoin dâun outil pour adapter dynamiquement les manifests en fonction de lâenvironnement (dev, recette, prodâŠ).
Câest lĂ que Kustomize entre en jeu.
Kustomize te permet de :
- Réutiliser une base commune de manifests (base.yaml)
- Et dâappliquer des overlays selon lâenvironnement (par exemple un replicaCount=1 en dev, et =3 en prod)
- Sans avoir besoin de réécrire ou de cloner tous tes fichiers
Kustomize est natif dans kubectl et compatible avec Flux et ArgoCD
Il fonctionne sans Helm, ce qui le rend simple Ă auditer et facile Ă maintenir.
Tu peux aussi le combiner avec des patchesStrategicMerge
pour des différences plus fines
â Avantages :
- Intégration native avec Azure (extension officielle)
- Maintenance assurée par Microsoft
- Parfait pour déployer du Kubernetes pur
- Idéal pour gérer le drift et verrouiller les environnements
â ïž Mais : Flux ne voit que Kubernetes. Il ne sait pas orchestrer d’autres briques (Azure SQL, Key Vault, Terraform, etc..) |
ArgoCD

ArgoCD, câest un autre monde.
Pas seulement plus âuser friendlyâ => plus ouvert, plus large
Contrairement Ă Flux :
- Ce nâest pas juste une extension Ă activer
- Câest une application Ă dĂ©ployer (souvent via Helm chart)
- Et câest une vraie plateforme de delivery GitOps
Ce que propose ArgoCD :
- UI intégrée (portail de pilotage GitOps)
- Visualisation des ressources, des sync, des drifts
- SystĂšme de hooks, de priorisation, de synchronisation manuelle ou automatique
- Plugins pour étendre le comportement natif
đŹ Pour certains, lâexistence dâune UI est un argument fort.
Pour dâautres, câest dĂ©jĂ un signal de complexitĂ©
Kustomize est aussi pris en charge nativement par ArgoCD

Il devient vite un incontournable quand tu dois :
- Gérer plusieurs environnements avec des différences subtiles
- Appliquer des labels, annotations ou ressources spécifiques à chaque contexte
- Garder une hiérarchie claire entre base et environnements
đŹ Si tu veux une stack simple, sans trop dâabstraction, Kustomize est une excellente alternative Ă Helm
đ ArgoCD est trĂšs adaptĂ© quand :
- Tu veux une interface de supervision GitOps
- Tu gÚres plus que du K8s ou des dépendances multi-environnement
- Tu as des Ă©quipes dĂ©diĂ©es Ă lâobservabilitĂ© et au delivery
Comparatif Flux vs ArgoCD
CritĂšre | Flux | ArgoCD |
---|---|---|
Complexité | Distribué sur plusieurs entités | Centralisé, tout-en-un |
Intégration Kubernetes | Pattern Operator natif | Autonome, fonctionne à cÎté de K8s |
Extensibilité | TrÚs limitée (Kubernetes only) | Plugins et hooks disponibles |
UI | Non | Interface Web riche intégrée |
Orchestration | Dépendances explicites via dependsOn | Priorisation de synchronisation |
Vision | GitOps pour Kubernetes et uniquement K8s | GitOps comme orchestrateur dâenvironnement |
4. OBSERVABILITĂ â> VISION MICROSOFT
LâobservabilitĂ©, ce nâest pas juste âvoir ce qui se passeâ.
Câest donner les moyens aux Ă©quipes de comprendre, corrĂ©ler, agir, et anticiper, grĂące Ă trois piliers fondamentaux :
- đ MĂ©triques
- đ Logs
- đ Traces
Et chez Microsoft, la vision de lâobservabilitĂ© est en train de se stabiliser (aprĂšs plusieurs itĂ©rations), autour dâune stack cohĂ©rente et intĂ©grĂ©e : Azure Monitor
Pourquoi lâobservabilitĂ© est bien plus que du monitoring
La grande diffĂ©rence entre monitoring et observabilitĂ©, câest la corrĂ©lation.
Tu ne veux pas juste savoir quâun pod crash.
Tu veux savoir pourquoi, dans quel contexte, et si cela impacte ton business.
Un pic CPU Ă 100% ?
Ce nâest pas juste un signal technique.
Câest peut-ĂȘtre un utilisateur qui abandonne son panier dâachat.
LâobservabilitĂ© bien pensĂ©e permet de lier des KPI techniques Ă des KPI mĂ©tier.
Et câest pour ça quâelle ne concerne pas que les Ops ou les Devs : toute lâorganisation est concernĂ©e.
Lâapproche Microsoft : un socle, plusieurs briques
Depuis plusieurs annĂ©es, Microsoft consolide sa vision sous lâumbrella Azure Monitor, qui regroupe :
Brique | RĂŽle |
---|---|
Log Analytics Workspace | Puits de logs et moteur KQL |
Managed Prometheus | Collecte de métriques cloud-native |
Container Insights | Supervision des clusters AKS |
Application Insights | Traces applicatives (via instrumentation SDK) |
Azure Managed Grafana | Visualisation unifiée |
đĄ DerriĂšre tout ça, lâobjectif est de permettre une corrĂ©lation intelligente entre les signaux, et une expĂ©rience de monitoring unifiĂ©e, mĂȘme si les sources sont hĂ©tĂ©rogĂšnes.
Stack unifiée Azure-native

Tout commence par lâactivation des diagnostic settings sur les services Azure.
DĂšs que câest en place, logs, mĂ©triques et traces peuvent ĂȘtre redirigĂ©s vers un Log Analytics Workspace, ou une instance Prometheus managĂ©e (Azure Monitor workspace).
đ Ce composant devient le socle dâagrĂ©gation, sur lequel viennent se brancher les outils de visualisation comme :
- Azure Dashboards
- Workbooks
- Azure Managed Grafana
Corrélation intelligente

Les clusters Kubernetes génÚrent beaucoup de signaux, parfois trop.
Et Microsoft lâa bien compris :
Sans stratĂ©gie, un Log Analytics peut coĂ»ter plus cher que le cluster lui-mĂȘme.
Il faut donc :
- Collecter Ă plusieurs niveaux : control plane, nodes, pods
- Filtrer intelligemment les sources (ex.
kube-apiserver
,etcd
,scheduler
, etc.) - Adapter les profils de collecte (â penser au minimal ingestion profile)
Container Insights : plug-and-play

Activable en un clic depuis Azure ou via Terraform, Container Insights :
- DĂ©ploie un DaemonSet sur chaque nĆud
- Collecte les métriques et logs du cluster
- Envoie les données vers Azure Monitor workspace
Il fournit :
- Des Workbooks prĂȘts Ă lâemploi
- Des métriques par pod, namespace, workload
- Une expĂ©rience intĂ©grĂ©e dans le portail Azure (â ïž nĂ©cessite un accĂšs rĂ©seau pour les clusters privĂ©s)
Multi-profils, multi-usages

La force de cette vision, câest quâelle adresse diffĂ©rents mĂ©tiers :
- Les Ops y trouvent des métriques systÚme et des alertes
- Les Devs peuvent brancher leurs applications Ă Application Insights
- Les analystes peuvent croiser des métriques business et techniques
- Les équipes sécurité peuvent faire du threat hunting avec les logs
đ Les traces, via Application Insights, nĂ©cessitent une instrumentation manuelle par SDK selon le langage (Java, .NET, PythonâŠ).
Câest rarement fait au dĂ©but, mais fortement recommandĂ© sur le long terme.
Observabilité réseau
Microsoft propose aujourdâhui deux approches rĂ©seau :
Outil | Portée |
---|---|
Traffic Analytics | Niveau Azure / VNet |
Retina (en preview) | Niveau cluster, via eBPF |
đ§Ș Retina est un projet open source lancĂ© par Microsoft (KubeCon 2024), mais :
- Encore jeune
- Assez lourd à opérer (logs + CPU)
- Et coûteux à grande échelle
đĄ Si besoin de visibilitĂ© rĂ©seau intra-cluster (pods âïž pods), des alternatives comme Hubble + Cilium existent, mais demandent une souscription (~350âŹ/mois/cluster). Ă ce jour, non recommandĂ© dans un contexte standard AKS
Azure Monitor Workspace (Prometheus)

JusquâĂ rĂ©cemment, intĂ©grer Prometheus dans Azure voulait dire maintenir soi-mĂȘme lâoutil (service, base de donnĂ©es, stockageâŠ).
Microsoft propose désormais une alternative PaaS : Azure Monitor Workspace, qui expose une expérience Prometheus managée, sans avoir à installer Prometheus dans tes clusters.
đ§© ConcrĂštement :
- Câest Microsoft qui hĂ©berge, met Ă jour et sĂ©curise le backend Prometheus
- Tu ne paies que la consommation réelle
- Et tu restes 100% compatible PromQL, ce qui permet de migrer des dashboards existants sans modification
Ce service est invisible cĂŽtĂ© Kubernetes : les clusters AKS (ou mĂȘme on-prem) envoient leurs mĂ©triques via scraping, et Prometheus les traite cĂŽtĂ© Azure.
đ Pour que ça fonctionne, tu dois configurer le scraping sur trois niveaux :
- Le cluster Kubernetes (via les Diagnostic Settings)
- Les nĆuds (via kubelet et Node Exporter)
- Les applications, via des annotations Prometheus et/ou des agents OpenTelemetry

đĄ Et cĂŽtĂ© app, il faudra aussi que les dĂ©veloppeurs :
- Exposent les métriques avec le bon endpoint (
/metrics
) - Documentent ce quâils publient
- Et ajoutent les annotations nécessaires dans les manifests YAML
Azure Managed Grafana

Microsoft a signé un partenariat avec Grafana Labs pour proposer Grafana managé directement dans Azure, sans VM, sans maintenance.
đŻ Objectif : une expĂ©rience Grafana intĂ©grĂ©e Ă Azure, avec :
- SSO via Azure AD (Entra ID)
- Private Endpoint natif
- Datasources préconnectées (Azure Monitor, Prometheus, Log Analytics, etc.)
- Sync automatique des équipes via Azure AD
đŹ Tu accĂšdes Ă lâinterface, tu choisis âconnecter une datasource Azureâ â câest dĂ©jĂ configurĂ©.
Mais attention : la version managĂ©e nâest pas Grafana Enterprise.
Certaines fonctionnalités ne sont pas incluses, notamment :
- Le support des plugins communautaires
- Lâextension native Application Insights pour les traces
- Les alertes avancées ou RBAC personnalisés
đ Pour aller plus loin, il est possible de basculer vers Grafana Cloud (SaaS Enterprise), mais ce nâest plus hĂ©bergĂ© chez Microsoft, ce qui pose des enjeux de conformitĂ© (notamment en banque ou dans le secteur public)
â ïž Si tu as beaucoup dâutilisateurs potentiels, mĂȘme inactifs la plupart du temps, cette approche peut vite devenir plus chĂšre quâune VM auto-hĂ©bergĂ©e avec Grafana OSS |
Azure Diagnostic Settings

Par dĂ©faut, AKS est extrĂȘmement bavard.
Et chaque composant du Control Plane (API Server, Scheduler, ETCDâŠ) peut gĂ©nĂ©rer des gigaoctets de logs par jour.
đŻ MoralitĂ© : activer les Diagnostic Settings sans filtre, câest courir Ă la ruine.
Pour pallier ça, Microsoft propose désormais un profil intelligent :
â Minimal Ingestion Profile
Câest une configuration recommandĂ©e qui :
- Ne collecte que les logs critiques :
kube-apiserver
etetcd
- Ăvite dâenregistrer
kube-audit
, extrĂȘmement verbeux (jusquâĂ 1 To/mois sur un cluster trĂšs actif) - Permet dâavoir de la visibilitĂ© sans exploser la facture
Ă appliquer dĂšs lâinstanciation de ton cluster AKS, via Terraform ou ARM.
SynthĂšse Microsoft
ĂlĂ©ment | RĂŽle | Notes |
---|---|---|
Azure Monitor Workspace | Backend Prometheus managé | Compatible PromQL |
Container Insights | Collecte de logs + mĂ©triques (via DaemonSet) | PrĂȘt Ă lâemploi |
Application Insights | Traces applicatives (instrumentation requise) | Devs only |
Azure Managed Grafana | Visualisation intégrée + SSO | Plugins limités |
Diagnostic Settings | Active la collecte sur tous composants Azure | à filtrer avec précaution |
5. OBSERVABILITĂ â> VISION SELF-MANAGED
Envie de rester maĂźtre de ta stack dâobservabilitĂ© ?
De tout piloter toi-mĂȘme, du dĂ©ploiement aux dashboards, sans passer par les outils managĂ©s Azure ?
âĄïž le modĂšle self-managed devient une Ă©vidence.
Une stack 100% open source, 100% maßtrisée

La stack la plus répandue reste :
- Prometheus : pour collecter les métriques
- Grafana : pour visualiser et explorer
- Loki : pour centraliser les logs Kubernetes
Ce trio, proposĂ© et maintenu par Grafana Labs, peut ĂȘtre :
- déployé manuellement en YAML,
- ou plus intelligemment via Helm charts comme
kube-prometheus-stack
etloki-stack
.
đ Helm, câest le Terraform de Kubernetes : un gestionnaire de templates YAML. Tu dĂ©clares les valeurs, il gĂ©nĂšre toute lâarchi
helm install monitoring prometheus-community/kube-prometheus-stack
helm install logs grafana/loki-stack
đŻ RĂ©sultat : tu dĂ©ploies une stack complĂšte (Prometheus + Alertmanager + Grafana + Loki) en quelques minutes.
Loki : le Prometheus des logs

Loki a Ă©tĂ© pensĂ© pour les logs comme Prometheus lâest pour les mĂ©triques :
- Indexation minimale (basée sur labels, pas sur le contenu)
- Compression optimisée
- IntĂ©gration native avec Grafana (mĂȘme requĂȘtage, mĂȘmes dashboards)
- Support du format standard
promtail
,fluentbit
oulogstash
đ Loki nâest pas juste une alternative Ă ELK. Câest la solution log-native Kubernetes, pensĂ©e pour la scalabilitĂ©.
Mais ça a un prix : la maintenance
Choisir une stack self-managed, câest assumer :
- Le déploiement initial
- La mise Ă jour continue (version des charts, compatibilitĂ© AKSâŠ)
- La gestion de la résilience (PVC, réplication, sauvegarde, monitoring du monitoring)
Et surtout :
- Chaque composant (Prometheus, Grafana, Alertmanager, LokiâŠ) doit ĂȘtre monitorĂ© lui-mĂȘme.
- Certaines mises Ă jour de Kubernetes (notamment depuis la v1.27+) peuvent bloquer si un composant est incompatible avec la nouvelle version.
â ïž Kubernetes bloque dĂ©sormais un upgrade si des composants comme Prometheus sont en version obsolĂšte Tu dois donc mettre Ă jour ta stack de monitoring avant de mettre Ă jour le cluster lui-mĂȘme |
Et en cas de crash ?
Si ton cluster AKS héberge :
- Ton Prometheus
- Tes dashboards Grafana
- Ton stack LokiâŠ
Alors tu perds tout ton historique en cas dâincident.
âĄïž DâoĂč lâintĂ©rĂȘt de dissocier les clusters de supervision des clusters applicatifs, ou de sauvegarder rĂ©guliĂšrement les volumes et la configuration (ConfigMap, PVC, secretsâŠ).
Exporters, configmaps et alerting
Ta stack Prometheus aura besoin :
- De Prometheus Exporters sur chaque cluster (ex: kube-state-metrics, node-exporter)
- Dâune ConfigMap centrale pour la configuration de scrape jobs
- DâAlertmanager pour dĂ©clencher des alertes vers Slack, Teams, e-mails, etc.
đĄ Ces composants tournent gĂ©nĂ©ralement en DaemonSet sur chaque node â ils consomment CPU & RAM, donc Ă prendre en compte dans la capacitĂ© globale du cluster.
Self-managed : gain dâautonomie, coĂ»t cachĂ©
Avantages :
- Flexibilité totale
- Coût fixe (pas de licence)
- Déploiement cross-cloud / on-prem
- Stack modulaire Ă la carte
Inconvénients :
- Maintenance manuelle
- Ă surveiller lors des upgrades K8s
- Risque de perte en cas de crash du cluster
PROCHAIN ARTICLE
Tu as maintenant une boĂźte Ă outils claire, pensĂ©e pour le terrain, et capable de sĂ©curiser lâexploitation au La continuitĂ©, ce nâest pas une option.
Câest ce qui permet Ă ton cluster de tenir⊠mĂȘme quand tout bouge autour.
đProchaine Ă©tape ?
Faire durer
On parlera mises Ă jour, rĂ©silience, sauvegardes , bref tout ce quâil faut pour garder ton AKS solide dans le temps
đ Pour aller plus loin (docs Microsoft) :
- AKS GitOps avec Flux (Microsoft)
- Extension GitOps AKS
- ArgoCD â Documentation officielle
- Surveillance AKS avec Azure Monitor
- Container Insights (overview)
- Azure Managed Prometheus (Preview)
- Azure Managed Grafana
- Helm Chart â kube-prometheus-stack
- Grafana Loki â Projet officiel
- OpenTelemetry â Collecte unifiĂ©e
- Kustomize vs Helm