Partager via


Configurer le gestionnaire de communication Azure Kubernetes Service

Le gestionnaire de communication Azure Kubernetes Service (AKS) simplifie les notifications pour toutes vos tâches de maintenance AKS à l’aide des frameworks Azure Resource Notifications et Azure Resource Graph. Le gestionnaire de communication vous fournit des alertes en temps opportun sur les déclencheurs et les résultats des événements, afin que vous puissiez surveiller étroitement vos mises à niveau.

En cas d’échec de la maintenance, le gestionnaire de communication vous informe des raisons de l’échec. Ces informations réduisent les problèmes opérationnels liés à l’observabilité et aux suivis.

En suivant les étapes décrites dans cet article, vous pouvez configurer des notifications pour tous les types de mises à niveau automatiques qui utilisent des fenêtres de maintenance.

Prérequis

Configurer le gestionnaire de communication

  1. Dans le portail Azure, accédez à la ressource.

  2. Sélectionnez Surveillance>Alerte>Règles d'alerte, puis sélectionnez Créer.

  3. Sous l’onglet Condition, pour nom du signal, sélectionnez Recherche dans les journaux personnalisés.

    Capture d’écran montrant la sélection d’une recherche de journal personnalisée dans le volet pour la création d’une règle d’alerte.

  4. Dans la zone de requête De recherche , collez l’une des requêtes personnalisées suivantes. Veillez à mettre à jour le where id contains chemin d’accès pour référencer vos ressources pour l’ID d’abonnement, le nom du groupe de ressources et le nom du cluster.

    La requête suivante concerne les notifications de mises à niveau automatiques pour les clusters :

    arg("").containerserviceeventresources
    | where type == "microsoft.containerservice/managedclusters/scheduledevents"
    | where id contains "/subscriptions/<subid>/resourcegroups/<rgname>/providers/Microsoft.ContainerService/managedClusters/<clustername>"
    | where properties has "eventStatus"
    | extend status = substring(properties, indexof(properties, "eventStatus") + strlen("eventStatus") + 3, 50)
    | extend status = substring(status, 0, indexof(status, ",") - 1)
    | where status != ""
    | where properties has "eventDetails"
    | extend upgradeType = case(
                               properties has "K8sVersionUpgrade",
                               "K8sVersionUpgrade",
                               properties has "NodeOSUpgrade",
                               "NodeOSUpgrade",
                               ""
                           )
    | extend details = parse_json(tostring(properties.eventDetails))
    | where properties has "lastUpdateTime"
    | extend eventTime = substring(properties, indexof(properties, "lastUpdateTime") + strlen("lastUpdateTime") + 3, 50)
    | extend eventTime = substring(eventTime, 0, indexof(eventTime, ",") - 1)
    | extend eventTime = todatetime(tostring(eventTime))
    | where eventTime >= ago(30m) // Ensure this matches aggregation granularity & frequency
    | where upgradeType == "K8sVersionUpgrade"
    | project
        eventTime,
        upgradeType,
        status,
        properties,
        name,
        details
    | order by eventTime asc
    

    La requête suivante concerne les notifications de mises à niveau automatiques pour NodeOS :

    arg("").containerserviceeventresources
    | where type == "microsoft.containerservice/managedclusters/scheduledevents"
    | where id contains "/subscriptions/<subid>/resourcegroups/<rgname>/providers/Microsoft.ContainerService/managedClusters/<clustername>"
    | where properties has "eventStatus"
    | extend status = substring(properties, indexof(properties, "eventStatus") + strlen("eventStatus") + 3, 50)
    | extend status = substring(status, 0, indexof(status, ",") - 1)
    | where status != ""
    | where properties has "eventDetails"
    | extend upgradeType = case(
                               properties has "K8sVersionUpgrade",
                               "K8sVersionUpgrade",
                               properties has "NodeOSUpgrade",
                               "NodeOSUpgrade",
                               ""
                           )
    | extend details = parse_json(tostring(properties.eventDetails))
    | where properties has "lastUpdateTime"
    | extend eventTime = substring(properties, indexof(properties, "lastUpdateTime") + strlen("lastUpdateTime") + 3, 50)
    | extend eventTime = substring(eventTime, 0, indexof(eventTime, ",") - 1)
    | extend eventTime = todatetime(tostring(eventTime))
    | where eventTime >= ago(30m) // Ensure this matches aggregation granularity & frequency
    | where upgradeType == "NodeOSUpgrade"
    | project
        eventTime,
        upgradeType,
        status,
        properties,
        name,
        details
    | order by eventTime asc
    
  5. Accédez à l’onglet Condition . Configurez les conditions d’alerte avec les paramètres suivants :

    • Mesure : sélectionnez les lignes du tableau.
    • Type d’agrégation : sélectionnez Nombre.
    • Granularité d’agrégation : sélectionnez 30 minutes.
    • Valeur de seuil : conservez à 0.
    • Fractionné par dimensions : pour le nom de la dimension, sélectionnez l’état. Ensuite, cochez la case Inclure toutes les valeurs futures .

    Capture d’écran des options de configuration pour les conditions d’alerte.

  6. Dans la zone Fractionner par dimensions , pour les valeurs de dimension, sélectionnez une valeur. Étant donné que vous avez sélectionné l’état du nom de la dimension, les valeurs disponibles sont planifiées, démarrées, terminées, annulées et ayant échoué.

    Remarque

    Ces valeurs d’état s’affichent uniquement si votre cluster a précédemment exécuté des opérations de mise à niveau automatique. Pour les nouveaux clusters ou pour les clusters qui n’ont pas encore subi de mises à niveau automatiques, la liste déroulante peut apparaître vide ou n’afficher aucune dimension disponible. Une fois que votre cluster effectue sa première mise à niveau automatique, ces valeurs d’état deviennent disponibles pour la sélection.

    Capture d’écran des zones de liste déroulante dans la zone pour le fractionnement par dimensions.

  7. Accédez à l’onglet Actions . Assurez-vous qu’un groupe d’actions avec l’adresse e-mail correcte existe, afin que vous puissiez recevoir les notifications :

    1. Sélectionnez Utiliser des groupes d'actions>Créer un groupe d’actions.

    2. Pour le type de notification, sélectionnez E-mail/SMS_message/Push/Voice.

    3. Cochez la case e-mail , puis entrez l’adresse e-mail dans la zone e-mail .

      Capture d’écran du volet pour entrer des informations de messagerie pour un groupe d’actions.

  8. Accédez à l’onglet Détails . Attribuez une identité managée afin de pouvoir accorder l’accès aux ressources nécessaires. Dans la zone Identité , sélectionnez Identité managée affectée par le système.

    Capture d’écran montrant les sélections pour l’affectation d’une identité managée affectée par le système.

  9. Accédez à l’onglet Vérifier + créer , puis sélectionnez Créer.

  10. Maintenant que vous avez créé la règle d’alerte, vous pouvez attribuer les rôles appropriés pour l’identité managée :

    1. Dans la règle d'alerte, accédez aux paramètres>Identité>Identité managée attribuée par le système>Attributions de rôles Azure.
    2. Sélectionnez Ajouter une attribution de rôle, sélectionnez le rôle Lecteur et attribuez-le au groupe de ressources.
    3. Sélectionnez à nouveau Ajouter une attribution de rôle , sélectionnez le rôle Lecteur et affectez-le à l’abonnement.

    Conseil / Astuce

    Si vous ne voyez pas l’option Identité , vérifiez que vous avez créé votre règle d’alerte et que vous disposez des autorisations nécessaires.

Après avoir configuré le gestionnaire de communication, il envoie des avis anticipés une semaine avant le démarrage de la maintenance et un jour avant le démarrage de la maintenance. Il vous envoie également des alertes en temps opportun pendant l’opération de maintenance.

Vérifier la configuration

Pour mettre à niveau le cluster, attendez que le upgrader automatique démarre. Vérifiez ensuite que vous recevez rapidement des avis sur l’adresse e-mail que vous avez configurée pour recevoir des avis.

Vérifiez la base de données Azure Resource Graph afin de trouver l’enregistrement de notification planifié. Chaque notification d’événement planifiée doit être répertoriée comme un enregistrement dans la ContainerServiceEventResources table.

Capture d’écran montrant un enregistrement de notification dans Azure Resource Graph.