Opérateur Prometheus pour Kubernetes
Objectifs du chapitre et prérequis
1. Contexte et prérequis
Le chapitre sur l’intégration de Prometheus avec Kubernetes a pour vocation de faire comprendre comment les faire fonctionner ensemble. Toutefois, dans le cadre d’un système de production ce travail préliminaire est loin d’être suffisant et il reste un grand nombre de composants à intégrer :
-
L’interface de Grafana.
-
Les tableaux de bord de suivi de Kubernetes.
-
Les mécanismes d’alertes.
-
Etc.
Cette tâche est particulièrement complexe et peut réclamer une énergie très importante. Afin d’économiser ses efforts, l’utilisateur va découvrir comment s’appuyer sur des travaux d’intégrations existants, notamment via l’utilisation de recettes prêtes à l’emploi : les charts Helm.
2. Fichiers téléchargeables
Vous pouvez récupérer les exemples sur le repository GitHub suivant : https://github.com/EditionsENI/prometheus-grafana
Vous pouvez également récupérer ces fichiers dans l’archive chapitre-18.tar.gz depuis la page Informations générales.
Installation de Prometheus Operator à l’aide de Helm
1. Contexte
Helm est un outil qui permet de simplifier certaines opérations de déploiement dans Kubernetes. Il prend en charge tout le cycle de vie d’un paquet (installation, mise à jour et suppression) ainsi que la partie distribution des paquets (création, maintenance, mise à disposition, recherche, etc.). Dans ce qui va suivre, le lecteur déploiera l’opérateur Prometheus à l’aide de ce mécanisme.
Pour la suite, il est recommandé d’avoir des connaissances sur les objets classiques de Kubernetes (Déploiement, Service, etc.) et également d’avoir quelques notions sur les objets de type CRD (Custom Resource Definition).
De nombreux paquets sont disponibles sous forme de charts Helm. Ces derniers sont un assemblage des composants nécessaires au déploiement de logiciels mais également offrant une personnalisation possible à l’aide du mécanisme de go-template. Une fois ce travail d’intégration réalisé, le résultat peut être publié sous la forme de paquet dans des dépôts (en anglais repositories) de charts Helm.
Pour la suite, l’utilisateur abordera les techniques suivantes :
-
Découverte du portail de référence des charts Helm.
-
Ajout d’un dépôt de Charts.
-
Recherche de Charts.
-
Inspection des options de personnalisation.
-
Déploiement de charts Helm.
Le cluster Kubernetes doit disposer des prérequis suivants :
-
Mécanisme de génération de volumes persistants (PVC) fonctionnel.
-
Gestion automatique des certificats avec Let’s Encrypt.
-
Publication automatique des entrées DNS.
-
Gestion de la publication d’application à l’aide de Ingress.
Ces aspects peuvent représenter certaines difficultés pour leur mise en place. N’hésitez pas à consulter le livre sur le fonctionnement de Kubernetes du même auteur aux Éditions ENI.
2. Présentation de l’opérateur Prometheus
L’opérateur Prometheus dispose d’une meilleure intégration à Kubernetes et offre à l’utilisateur les fonctionnalités suivantes :
-
Définition de surveillance par défaut.
-
Intégration...
Exporteurs additionnels disponibles
1. Contexte
Lors de l’installation de l’opérateur Prometheus, le chart Helm installe les composants suivants :
-
L’opérateur Prometheus et un moteur Prometheus.
-
L’interface Grafana.
-
Le gestionnaire d’alertes.
-
Le gestionnaire de métriques Kubernetes (metrics-server).
-
L’exporteur système (à l’aide d’un objet DaemonSet).
Ceci constitue un très bon point de départ. Toutefois, certaines briques pourraient être intéressantes à ajouter, comme par exemple l’exporteur Blackbox, SNMP ou encore le composant Push Gateway. Tous ces exporteurs disposent de leur propre chart Helm.
2. Utilisation de l’exporteur Blackbox
a. Installation de l’exporteur Blackbox
L’exporteur Blackbox présenté plus tôt dans cet ouvrage est disponible sous forme de chart Helm dans le même dépôt de paquet que l’opérateur Prometheus.
Avant de lancer la recherche, rechargez le cache de définition des paquets :
$ helm repo update
Ceci fait, lancez une recherche avec le nom de l’exporteur à rechercher :
$ helm search repo blackbox
Cette commande renvoie les informations suivantes :
NAME VERSION ...
prometheus-community/prometheus-blackbox-exporter 5.0.3 ...
L’installation se fait ensuite de la même manière que pour l’opérateur Prometheus. L’exporteur ne nécessite toutefois aucune personnalisation. Il n’est donc pas nécessaire d’utiliser de fichier de configuration.
Voici la commande permettant de le déployer dans l’espace de noms monitoring :
$ helm upgrade --install blackbox \
prometheus-community/prometheus-blackbox-exporter \
--create-namespace --namespace monitoring
Et ci-dessous le résultat renvoyé :
Release "blackbox" does not exist. Installing it now.
W0819 08:36:01.464566 3352100 warnings.go:70] policy/v1beta1
PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+
...
NAME: blackbox
LAST DEPLOYED: Thu Aug 19 08:36:01 2021
NAMESPACE: monitoring
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
See https://github.com/prometheus/blackbox_exporter/ for how to
configure Prometheus and the Blackbox Exporter.
1. Get the application URL by running these commands:
export POD_NAME=$(kubectl get pods --namespace monitoring -l
"app.kubernetes.io/name=prometheus-blackbox
exporter,app.kubernetes.io/instance=blackbox" -o
jsonpath="{.items[0].metadata.name}")
export CONTAINER_PORT=$(kubectl get pod --namespace monitoring ...