TP optionnel - Monitoring classique d'un cluster avec Prometheus
Prometheus pour monitorer le cluster
Section titled “Prometheus pour monitorer le cluster”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: v1kind: Namespacemetadata: name: kube-prometheus-stack---apiVersion: argoproj.io/v1alpha1kind: Applicationmetadata: name: kube-prometheus-stack namespace: argocdspec: 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-prodMonitorer les stratégies de déploiement d’une application
Section titled “Monitorer les stratégies de déploiement d’une application”Voir TP suivant.