Skip to content

TP optionnel - Monitoring classique d'un cluster avec Prometheus

Pour comprendre les stratégies de déploiement et mise à jour d’application dans Kubernetes (deployment and rollout strategies) nous allons installer puis mettre à jour une application d’exemple et observer comment sont gérées les requêtes vers notre application en fonction de la stratégie de déploiement choisie.

Pour cette observation on peut utiliser un outil de monitoring. Nous utiliserons ce TP comme prétexte pour installer une des stack les plus populaires et intégrée avec kubernetes : Prometheus et Grafana. Prometheus est un projet de la Cloud Native Computing Foundation.

Prometheus est un serveur de métriques c’est à dire qu’il enregistre des informations précises (de petite taille) sur différents aspects d’un système informatique et ce de façon périodique en effectuant généralement des requêtes vers les composants du système (metrics scraping).

Une très bonne série d’articles à jour à propos de Prometheus/Graphana et AlertManager dans kubernetes et les concept de l’observability : https://www.augmentedmind.de/2021/09/05/observability-prometheus-guide/

Installer Prometheus et Grafana via kube-prometheus

Section titled “Installer Prometheus et Grafana via kube-prometheus”

Actuellement la méthode officielle conseillée pour installer Prometheus et sa webUI grafana est d’employé l’opérateur officiel Prometheus Operator packagé dans une stack complète appelée kube-prometheus: https://github.com/prometheus-operator/kube-prometheus

Une façon commode de déployer cette stack est d’utiliser le chart officiel : https://artifacthub.io/packages/helm/prometheus-community/kube-prometheus-stack

  • Comme précédemment déployez cette stack via ArgoCD avec le manifeste suivant:
apiVersion: v1
kind: Namespace
metadata:
name: kube-prometheus-stack
---
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: kube-prometheus-stack
namespace: argocd
spec:
destination:
namespace: kube-prometheus-stack
server: https://kubernetes.default.svc
project: default
source:
repoURL: https://prometheus-community.github.io/helm-charts
chart: kube-prometheus-stack
targetRevision: 43.1.1
helm:
values: |
grafana:
enabled: true
ingress:
enabled: true
path: /
hosts:
- grafana.<stagiaire>.<labdomain>
tls:
- hosts:
- grafana.<stagiaire>.<labdomain>
secretName: grafana-tls-cert
annotations:
kubernetes.io/tls-acme: "true"
kubernetes.io/ingress.class: nginx
cert-manager.io/cluster-issuer: letsencrypt-prod

Monitorer les stratégies de déploiement d’une application

Section titled “Monitorer les stratégies de déploiement d’une application”

Voir TP suivant.