Notifications de cluster


Cette page explique comment Google Kubernetes Engine (GKE) publie des notifications de cluster dans Pub/Sub avec des informations sur les événements liés à votre configuration de cluster, tels que les mises à niveau disponibles et les bulletins de sécurité.

Pour apprendre à configurer les notifications de cluster, consultez la page Recevoir des notifications de cluster.

Aperçu

En cas d'événements se rapportant à vos clusters GKE, tels que des mises à niveau importantes planifiées ou la disponibilité de bulletins de sécurité, GKE publie des notifications sur ces événements sous forme de messages dans les sujets Pub/Sub que vous configurez. Vous pouvez recevoir ces notifications sur un abonnement Pub/Sub, les intégrer à des services tiers et filtrer les types de notifications que vous souhaitez recevoir.

Avantages

L'utilisation de Pub/Sub pour recevoir des notifications de cluster offre les avantages suivants :

  • Vous recevez des informations proactives sur les mises à jour planifiées pour votre cluster, ce qui vous permet de mieux planifier les tests et les qualifications et de garantir la fluidité d'un processus de mise à niveau prévisible.
  • Vous êtes averti lorsque des bulletins de sécurité spécifiques à vos clusters sont émis, ce qui vous fournit des informations précises sur les risques et l'impact.
  • Vous êtes averti lorsqu'une nouvelle version de GKE est disponible. Auparavant, vous deviez consulter les notes de version de GKE ou l'API GKE pour savoir si une nouvelle version de GKE a été publiée.
  • Vous êtes averti lorsque GKE ou un utilisateur lance des mises à niveau du cluster, ce qui vous offre une meilleure visibilité sur les opérations en arrière-plan de votre cluster.
  • Pub/Sub est une solution hautement extensible, qui vous offre toute flexibilité pour le traitement des notifications entrantes. Par exemple, vous pouvez l'intégrer avec Slack pour transférer les notifications vers une chaîne Slack, ou faire appel à Cloud Functions pour exécuter des processus personnalisés.
  • Lorsque des processus personnalisés sont requis (par exemple, orchestrer un workflow englobant préproduction et production pour tester et certifier une mise à niveau), vous pouvez utiliser la notification pour déclencher automatiquement ces workflows.

Types de notifications de mise à niveau

GKE envoie les types de notifications de cluster suivants :

Vous pouvez filtrer les notifications que vous recevez afin de n'être averti que des événements pertinents. Vous pouvez filtrer les notifications de cluster en spécifiant une valeur pour filter dans l'option --notification-config lorsque vous activez les notifications de cluster, ou en configurant votre abonnement Pub/Sub.

SecurityBulletinEvent

Lorsque GKE émet un bulletin de sécurité directement lié à la configuration ou à la version de votre cluster, il envoie une notification SecurityBulletinEvent qui vous fournit des informations sur la faille, et, le cas échéant, les mesures que vous pouvez prendre.

UpgradeAvailableEvent

À l'arrivée d'une nouvelle version sur un canal de publication, GKE envoie une notification UpgradeAvailableEvent aux clusters de ce canal de publication afin de les informer qu'une nouvelle version est désormais disponible. Cette notification est émise une semaine à l'avance pour les versions de correctif et au moins deux à quatre semaines à l'avance pour les versions mineures (selon le canal). Pour plus d'informations, consultez la section Versions disponibles sur un canal.

Pour les clusters qui ne sont pas associés à une version disponible, GKE envoie des notifications UpgradeAvailableEvent concernant toutes les nouvelles versions auxquelles les clusters peuvent passer, y compris les correctifs de la version mineure en cours et la version mineure suivante.

Si vous utilisez des pools de nœuds Windows Server, les informations de version de Windows sont envoyées dans le cadre de la notification UpgradeAvailableEvent.

UpgradeEvent

Lorsque vous-même ou GKE déclenchez une mise à niveau, GKE envoie une notification UpgradeEvent vous informant qu'une mise à niveau a commencé. Dans l'idéal, vous devez utiliser le type de notification UpgradeAvailableEvent pour être informé de la mise à niveau à venir afin de pouvoir effectuer la mise à niveau à l'avance ou prendre les mesures nécessaires pour la préparer, telle que la configuration de intervalles de maintenance.

La notification UpgradeEvent est envoyée au début de l'opération de mise à niveau. L'ID d'opération associé est transmis dans le message.

Filtrer les notifications

Vous pouvez filtrer les notifications de cluster pour vous assurer de ne recevoir que les notifications que vous souhaitez. Vous pouvez appliquer le filtrage de l'une des manières suivantes :

Filtrer les notifications dans GKE

Vous pouvez configurer le filtrage pour un ou plusieurs types de notifications disponibles lors de l'activation des notifications de cluster en spécifiant des valeurs pour filter dans l'option --notification-config. filter utilise une liste délimitée par des barres verticales (|) des types de notifications que vous souhaitez recevoir.

Par exemple, si vous spécifiez filter="UpgradeEvent|SecurityBulletinEvent", vous indiquez à GKE de n'envoyer que des notifications pour les types de notifications UpgradeEvent et SecurityBulletinEvent.

Le filtrage des notifications à l'aide de filter présente les avantages suivants :

  • Utilisation facilitée, car ils permettent de filtrer le type de notification sans utiliser de syntaxe spécifique ;
  • Les notifications que vous filtrez ne sont jamais envoyées à Pub/Sub. Par conséquent, les messages non distribués ne vous sont pas facturés.
  • Vous pouvez modifier la configuration du filtre à tout moment.

Pour obtenir des instructions sur le filtrage des notifications dans GKE, consultez la page Recevoir des notifications de cluster.

Filtrer les notifications dans Pub/Sub.

Pub/Sub permet de filtrer les messages de votre abonnement à l'aide d'une syntaxe de filtrage. Lorsque vous utilisez cette méthode, GKE transmet tous les types de notifications à votre sujet Pub/Sub. Pub/Sub filtre les messages en fonction de la configuration de votre abonnement et envoie les messages que vous souhaitez recevoir.

Par exemple, vous pouvez filtrer les notifications UpgradeEvent et UpgradeAvailableEvent à l'aide de la syntaxe suivante dans votre abonnement :

attributes.type_url = "type.googleapis.com/google.container.v1beta1.UpgradeEvent" OR "type.googleapis.com/google.container.v1beta1.UpgradeAvailableEvent"

Vous êtes toujours facturé pour les messages non distribués filtrés par votre abonnement. Vous ne pouvez pas non plus modifier les filtres après avoir configuré l'abonnement. Cependant, la syntaxe de filtrage est plus extensible que le filtrage dans GKE.

Pour en savoir plus sur le filtrage de votre abonnement Pub/Sub, consultez la section Filtrer des messages.

Consommer des messages Pub/Sub

Les messages Pub/Sub contiennent deux champs : data (chaîne) et attributes (mappage chaîne à chaîne).

Pour les notifications GKE, le champ data contient des informations lisibles. Le champ attributes contient des informations de notification génériques telles que le type de notification, l'ID de votre projet, le nom du cluster et son emplacement. Le champ attributes.payload est une chaîne analysable par JSON qui contient des informations de notification spécifiques, telles que les détails d'un bulletin de sécurité.

Les notifications comportent toujours les attributs suivants :

Attribut Description Exemple
project_id Numéro du projet propriétaire du cluster. 123456789
cluster_location Emplacement du cluster. us-central1-c example-location
cluster_name Nom du cluster. example-cluster
type_url Type de notification. type.googleapis.com/google.container.v1beta1.UpgradeEvent
payload Chaîne au format JSON, pouvant être analysée et contenant des informations spécifiques aux notifications.

{ "resourceType":"MASTER",
  "operation":"operation-1595889094437-87b7254a",
  "operationStartTime":"2020-07-27T22:31:34.437652293Z",
  "currentVersion":"1.15.12-gke.2",
  "targetVersion":"1.15.12-gke.9"}

GKE envoie toujours des types de notifications beta. Cependant, vous pouvez analyser la charge utile pour afficher le type de notification GA correspondant s'il est disponible.

Exemples de messages de notification de cluster

En plus du texte dans le champ data, chaque message envoyé par GKE à Pub/Sub possède des valeurs spécifiques dans les champs attributes.type_url et attributes.payload. Les tableaux suivants présentent des exemples d'informations que vous pouvez recevoir pour chaque type de notification :

SecurityBulletinEvent

Voici un exemple de résultat d'un message SecurityBulletinEvent :

Attributs
type_url type.googleapis.com/google.container.v1beta1.SecurityBulletinEvent
payload

{    "resourceTypeAffected":"RESOURCE_TYPE_CONTROLPLANE",
         "bulletinId":"GCP-2021-001",
         "cveIds":[
            "CVE-2021-3156"
         ],
         "severity":"Medium",
         "briefDescription":"A vulnerability was recently discovered in the Linux utility sudo, described in CVE-2021-3156, that may allow an attacker with unprivileged local shell access on a system with sudo installed to escalate their privileges to root on the system.",
         "affectedSupportedMinors":["1.18", "1.19"],
         "patchedVersions":["1.18.9-gke.1900", "1.19.9-gke.1900"],
         "suggestedUpgradeTarget":"1.19.9-gke.1900",
         "bulletinUri":"https://cloud.google.com/anthos/clusters/docs/security-bulletins#gcp-2021-001"
      }
      

UpgradeAvailableEvent

Voici un exemple de résultat d'un message UpgradeAvailableEvent :

Attributs
type_url type.googleapis.com/google.container.v1beta1.UpgradeAvailableEvent
payload

{ "version":"1.17.15-gke.800",
  "resourceType":"MASTER",
  "releaseChannel":{"channel":"RAPID"},
  "windowsVersions": [
    {
      "imageType": "WINDOWS_SAC",
      "osVersion": "10.0.18363.1198",
      "supportEndDate": {
        "day": 10,
        "month": 5,
        "year": 2022
      }
    },
    {
      "imageType": "WINDOWS_LTSC",
      "osVersion": "10.0.17763.1577",
      "supportEndDate": {
        "day": 9,
        "month": 1,
        "year": 2024
      }
    }
  ]
}

      

UpgradeEvent

Voici un exemple de résultat d'un message UpgradeEvent :

Attributs
type_url type.googleapis.com/google.container.v1beta1.UpgradeEvent
payload

{ "resourceType":"MASTER",
  "operation":"operation-1595889094437-87b7254a",
  "operationStartTime":"2020-07-27T22:31:34.437652293Z",
  "currentVersion":"1.15.12-gke.2",
  "targetVersion":"1.15.12-gke.9"}
      

Étapes suivantes