Partager via


Envoyer des données Prometheus à Azure Monitor en utilisant l’authentification avec une identité managée par pod Microsoft Entra (préversion)

Cet article décrit comment configurer l’écriture à distance pour le service géré Azure Monitor pour Prometheus en utilisant l’authentification avec l’identité managée par pod Microsoft Entra (préversion).

Remarque

Le conteneur side-car d’écriture à distance décrit dans cet article doit être configuré seulement en utilisant les étapes suivantes, et seulement si le cluster Azure Kubernetes Service (AKS) a déjà un pod Microsoft Entra activé. Les identités managées par pod Microsoft Entra ont été déconseillées pour être remplacées par Microsoft Entra Workload ID. Nous vous recommandons d’utiliser l’authentification Microsoft Entra Workload ID.

Prérequis

Versions prises en charge

Les versions Prometheus supérieures à la version 2.45 sont requises pour l'authentification d'identité managée.

Espace de travail Azure Monitor

Cet article traite de l'envoi de métriques Prometheus à un espace de travail Azure Monitor. Pour créer un espace de travail Azure Monitor, consultez Gérer un espace de travail Azure Monitor.

Autorisations

Les autorisations d’administrateur pour le cluster ou la ressource sont nécessaires pour effectuer les étapes de cet article.

Configurer une application pour l’identité managée par pod Microsoft Entra

Le processus de configuration de l’écriture à distance Prometheus pour une application en utilisant l’authentification avec l’identité managée par pod Microsoft Entra implique d’effectuer les tâches suivantes :

  1. Inscrire une identité managée affectée par l’utilisateur auprès de Microsoft Entra ID.
  2. Attribuer les rôles Opérateur d’identité managée et Contributeur de machine virtuelle à l’identité managée.
  3. Attribuer le rôle Éditeur d’indicateurs de performance d’analyse à l’identité managée affectée par l’utilisateur.
  4. Créer une liaison d’identité Azure.
  5. Ajouter l’étiquette aadpodidbinding au pod Prometheus.
  6. Déployer un conteneur side-car pour configurer l’écriture à distance.

Les tâches sont décrites dans les sections suivantes.

Inscrire une identité managée auprès de Microsoft Entra ID

Créez une identité affectée par l’utilisateur ou inscrivez une identité managée affectée par l’utilisateur déjà existante.

Pour plus d’informations sur la création d’une identité managée, consultez Configurer l’écriture à distance pour le service managé Azure Monitor pour Prometheus en utilisant l’authentification avec une identité managée.

Attribuer les rôles Opérateur d’identité managée et Contributeur de machine virtuelle à l’identité managée

az role assignment create --role "Managed Identity Operator" --assignee <managed identity clientID> --scope <NodeResourceGroupResourceId> 
          
az role assignment create --role "Virtual Machine Contributor" --assignee <managed identity clientID> --scope <Node ResourceGroup Id> 

Le groupe de ressources de nœud du cluster AKS contient des ressources que vous utilisez dans d’autres étapes de ce processus. Ce groupe de ressources a le nom MC_<AKS-RESOURCE-GROUP>_<AKS-CLUSTER-NAME>_<REGION>. Vous trouverez le nom du groupe de ressources en utilisant le menu Groupes de ressources dans le portail Azure.

Attribuer le rôle Éditeur d’indicateurs de performance d’analyse à l’identité managée

az role assignment create --role "Monitoring Metrics Publisher" --assignee <managed identity clientID> --scope <NodeResourceGroupResourceId> 

Créer une liaison d’identité Azure

L’identité managée affectée par l’utilisateur nécessite une liaison d’identité pour être utilisée en tant qu’identité managée par pod.

Copiez le YAML suivant dans le fichier aadpodidentitybinding.yaml :


apiVersion: "aadpodidentity.k8s.io/v1" 

kind: AzureIdentityBinding 
metadata: 
name: demo1-azure-identity-binding 
spec: 
AzureIdentity: “<AzureIdentityName>” 
Selector: “<AzureIdentityBindingSelector>” 

Exécutez la commande suivante :

kubectl create -f aadpodidentitybinding.yaml 

Ajouter l’étiquette aadpodidbinding au pod Prometheus

L’étiquette aadpodidbinding doit être ajoutée au pod Prometheus pour que l’identité managée par pod prenne effet. Vous pouvez ajouter l’étiquette en mettant à jour le fichier deployment.yaml ou en injectant des étiquettes quand vous déployez le conteneur side-car comme décrit dans la section suivante.

Déployer un conteneur side-car pour configurer l’écriture à distance

  1. Copiez le code YAML suivant et enregistrez-le dans un fichier. Le code YAML utilise le port 8081 comme port d’écoute. Si vous utilisez un autre port, modifiez cette valeur dans le YAML.

    prometheus: 
      prometheusSpec: 
        podMetadata: 
          labels: 
            aadpodidbinding: <AzureIdentityBindingSelector> 
        externalLabels: 
          cluster: <AKS-CLUSTER-NAME> 
        remoteWrite: 
        - url: 'http://localhost:8081/api/v1/write' 
        containers: 
        - name: prom-remotewrite 
          image: <CONTAINER-IMAGE-VERSION> 
          imagePullPolicy: Always 
          ports: 
            - name: rw-port 
          containerPort: 8081 
          livenessProbe: 
            httpGet: 
              path: /health
              port: rw-port
              initialDelaySeconds: 10 
              timeoutSeconds: 10 
          readinessProbe: 
             httpGet: 
              path: /ready
              port: rw-port
              initialDelaySeconds: 10 
              timeoutSeconds: 10 
        env: 
          - name: INGESTION_URL 
            value: <INGESTION_URL> 
          - name: LISTENING_PORT 
            value: '8081' 
          - name: IDENTITY_TYPE 
            value: userAssigned 
          - name: AZURE_CLIENT_ID 
            value: <MANAGED-IDENTITY-CLIENT-ID> 
          # Optional parameter 
          - name: CLUSTER 
            value: <CLUSTER-NAME>         
    
  2. Remplacez les valeurs suivantes dans le YAML :

    Valeur Description
    <AKS-CLUSTER-NAME> Le nom de votre cluster AKS.
    <CONTAINER-IMAGE-VERSION> mcr.microsoft.com/azuremonitor/containerinsights/ciprod/prometheus-remote-write/images:prom-remotewrite-20240617.1
    La version d’image conteneur d’écriture distante.
    <INGESTION-URL> La valeur pour Point de terminaison d’ingestion des métriques de la page Vue d’ensemble de l’espace de travail Azure Monitor.
    <MANAGED-IDENTITY-CLIENT-ID> La valeur de ID client de la page Vue d’ensemble de l’identité managée.
    <CLUSTER-NAME> Le nom du cluster sur lequel Prometheus s’exécute.

    Important

    Pour le cloud Azure Government, ajoutez les variables d’environnement suivantes dans la section env du fichier YAML :

    - name: INGESTION_AAD_AUDIENCE value: https://monitor.azure.us/

  3. Utilisez Helm pour appliquer le fichier YAML et mettre à jour votre configuration Prometheus :

    # set the context to your cluster 
    az aks get-credentials -g <aks-rg-name> -n <aks-cluster-name>
    
    # use Helm to update your remote write config 
    helm upgrade -f <YAML-FILENAME>.yml prometheus prometheus-community/kube-prometheus-stack --namespace <namespace where Prometheus pod resides>
    

Vérification et résolution des problèmes

Pour plus d'informations sur la vérification et la résolution des problèmes, consultez Résolution des problèmes de l'écriture distante et le service géré pour Prometheus Azure Monitor pour l'écriture distante Prometheus.

Étapes suivantes