--- title: "Dans les coulisses de l'Open Code Quest : comment j'ai implémenté le Leaderboard dans Red Hat Advanced Cluster Management" date: 2024-10-11T00:00:00+02:00 #lastMod: 2024-10-11T00:00:00+02:00 opensource: - Kubernetes - Prometheus - Grafana topics: - Observability # Featured images for Social Media promotion (sorted from by priority) #images: #- counting-scheme-with-time.png resources: - '*.png' - '*.svg' - '*.gif' --- Lors du {{< internalLink path="/speaking/red-hat-summit-connect-france-2024/index.md" >}}, j'ai animé un atelier pour les développeurs intitulé "**Open Code Quest**". Dans cet atelier, les développeurs devaient coder des micro-services en utilisant Quarkus, OpenShift et un service d'Intelligence Artificielle : le modèle Granite d'IBM. L'atelier était conçu sous la forme d'une compétition de vitesse : les premiers à valider les trois exercices ont reçu une récompense. J'ai conçu et développé le **Leaderboard** qui affiche la progression des participants et les départage en fonction de leur rapidité. Facile ? Pas tant que ça car je me suis imposé une figure de style : utiliser **Prometheus** et **Grafana**. Suivez-moi dans les coulisse de l'Open Code Quest : comment j'ai implémenté le Leaderboard dans **Red Hat Advanced Cluster Management** ! Cet article est la suite de {{< internalLink path="/blog/behind-the-scenes-at-open-code-quest-how-i-designed-leaderboard/index.md" >}}. Si vous ne l'avez pas lu, je vous conseille de le lire avant pour mieux comprendre le contexte. ## Observabilité dans Red Hat Advanced Cluster Management Maintenant que le principe est validé et que les requêtes ont été mises au point dans Prometheus, il est temps d'implémenter tout ça dans le module **Observabilité** de **Red Hat Advanced Cluster Management**. Lors de l'Open Code Quest, nous avions à notre disposition 8 clusters : - 1 cluster **central** - 1 cluster pour l'intelligence artificielle - 6 clusters répartis entre les participants (on avait prévu un cluster par table) **Red Hat Advanced Cluster Management** est installé sur le cluster **central** et à partir de là, il contrôle l'ensemble des clusters. L'observabilité est un module supplémentaire (dans le sens où il n'est pas installé par défaut) de **Red Hat Advanced Cluster Management** et ce module est basé sur les composants Open Source **Prometheus**, **Thanos** et **Grafana**. L'architecture du module d'observabilité, tel que décrit [dans la documentation Red Hat Advanced Cluster Management](https://docs.redhat.com/en/documentation/red_hat_advanced_cluster_management_for_kubernetes/2.11/html/observability/observing-environments-intro#observing-environments-intro), est la suivante : {{< attachedFigure src="redhat-acm-observability-architecture.png" title="Architecture logique de l'observabilité dans Red Hat Advanced Cluster Management 2.11 ([source](https://docs.redhat.com/en/documentation/red_hat_advanced_cluster_management_for_kubernetes/2.11/html/observability/observing-environments-intro#observing-environments-intro))" >}} **TODO** ### Mise en place de l'observabilité Le déployement du module d'observabilité sur le cluster **central**, se fait très simplement en suivant [la documentation](https://docs.redhat.com/en/documentation/red_hat_advanced_cluster_management_for_kubernetes/2.11/html/observability/observing-environments-intro#enabling-observability-service) : - Créer le namespace `open-cluster-management-observability`. - Créer le *pull secret* permettant de télécharger les images sur **registry.redhat.io**. - Créer un *bucket* S3. - Créer la *Custom Resource Definition* `MultiClusterObservability`. Pour effectuer ces opérations, j'ai utiliser les commandes suivantes : ```sh AWS_ACCESS_KEY_ID="REDACTED" AWS_SECRET_ACCESS_KEY="REDACTED" S3_BUCKET_NAME="REDACTED" AWS_REGION="eu-west-3" # Create the open-cluster-management-observability namespace oc create namespace open-cluster-management-observability # Copy the pull secret from the openshift namespace DOCKER_CONFIG_JSON=`oc extract secret/pull-secret -n openshift-config --to=-` echo $DOCKER_CONFIG_JSON oc create secret generic multiclusterhub-operator-pull-secret \    -n open-cluster-management-observability \    --from-literal=.dockerconfigjson="$DOCKER_CONFIG_JSON" \    --type=kubernetes.io/dockerconfigjson # Create an S3 bucket aws s3api create-bucket --bucket "$S3_BUCKET_NAME" --create-bucket-configuration "LocationConstraint=$AWS_REGION" --region "$AWS_REGION" --output json # Deploy the observability add-on oc apply -f - <