Notificaciones de clúster


En esta página, se describe cómo Google Kubernetes Engine (GKE) publica notificaciones de clúster en Pub/Sub con información sobre los eventos relevantes para la configuración del clúster, como las actualizaciones disponibles y los boletines de seguridad.

Para obtener información sobre cómo configurar las notificaciones de clúster, consulta Recibe notificaciones de clúster.

Descripción general

Cuando ocurren ciertos eventos relevantes para los clústeres de GKE, como actualizaciones programadas importantes o boletines de seguridad disponibles, GKE publica notificaciones sobre esos eventos como mensajes en temas de Pub/Sub que configuras. Puedes recibir estas notificaciones en una suscripción de Pub/Sub, integrarlas a servicios de terceros,y filtrar por los tipos de notificaciones que deseas recibir.

Ventajas

El uso de Pub/Sub para recibir notificaciones de clúster proporciona los siguientes beneficios:

  • Recibes información proactiva sobre las actualizaciones programadas para tu clúster, lo que te permite planificar mejor las pruebas y calificaciones, y ayudar a garantizar un proceso de actualización predecible y sencillo.
  • Se te notifica cuando se emiten boletines de seguridad específicos de tus clústeres, lo que te proporciona información precisa sobre los riesgos y el impacto.
  • Te notificaremos cuando haya una versión nueva de GKE nueva a la que puedas actualizar. Antes, tenías que verificar las notas de la versión de GKE o la API de GKE para descubrir cuándo se lanzaba una versión nueva de GKE.
  • Se te notificará cuando GKE o un usuario inicien actualizaciones del clúster, lo que te proporciona más visibilidad de las operaciones en segundo plano del clúster.
  • Pub/Sub es altamente extensible, lo que te brinda flexibilidad para procesar las notificaciones entrantes. Por ejemplo, podrías integrarlo en Slack para reenviar notificaciones a un canal de Slack o iniciar funciones de Cloud Run a fin de ejecutar procesos personalizados.
  • Cuando se requieren procesos personalizados (por ejemplo, organizar una etapa de pruebas en el flujo de trabajo de producción para probar y certificar una actualización), puedes usar la notificación para activar de forma automática estos flujos de trabajo.

Tipos de notificaciones de actualización

GKE envía los siguientes tipos de notificaciones de clúster:

Puedes filtrar las notificaciones que recibes a fin de que solo se te notifique sobre los eventos relevantes. Puedes filtrar las notificaciones de clúster si especificas un valor parafilter en la marca --notification-config cuando habilites las notificaciones de clúster o si configuras tu suscripción a Pub/Sub.

SecurityBulletinEvent

Cuando GKE emite un boletín de seguridad que se correlaciona directamente con tu configuración o versión de clúster, GKE envía una notificación de SecurityBulletinEvent, que te proporciona información sobre la vulnerabilidad, el impacto y, si corresponde, las medidas que puedes tomar.

UpgradeAvailableEvent

Cuando hay una versión nueva disponible en un canal de versiones, GKE envía una notificación de UpgradeAvailableEvent a los clústeres de ese canal para informar a los clústeres que hay una nueva versión disponible. Esta notificación proporciona una notificación de una semana de anticipación para las versiones de parche y, al menos, entre 2 y 4 semanas para versiones secundarias (según el canal). Para obtener más información, consulta Qué versiones están disponibles en un canal.

Para los clústeres que no están en un canal de versiones, GKE envía notificaciones de UpgradeAvailableEvent de todas las versiones nuevas a las que se pueden actualizar los clústeres, incluidos los parches en la versión secundaria actual y la siguiente versión secundaria.

Si usas grupos de nodos de Windows Server, la información de la versión de Windows se envía como parte de la notificación de UpgradeAvailableEvent.

UpgradeEvent

Cuando tú o GKE inicien una actualización, GKE enviará una notificación de UpgradeEvent, que te informará que comenzó una actualización. Lo ideal sería usar el tipo de notificación UpgradeAvailableEvent para estar al tanto de la próxima actualización, de modo que puedas actualizar con anticipación o tomar las medidas necesarias para prepararte, como configurar períodos de mantenimiento.

La notificación de UpgradeEvent se enviará al comienzo de la operación de actualización. El ID de operación se pasa en el mensaje.

Filtra notificaciones

Puedes filtrar las notificaciones de clúster para asegurarte de solo recibir las notificaciones que deseas. Puedes aplicar el filtrado de una de las siguientes maneras:

Filtrado de notificaciones en GKE

Puedes configurar el filtrado de uno o más tipos de notificaciones disponibles cuando habilites las notificaciones de clúster especificando valores para filter en la marca --notification-config. filter toma una lista delimitada por canalizaciones ( | ) de los tipos de notificaciones que deseas recibir.

Por ejemplo, si especificas filter="UpgradeEvent|SecurityBulletinEvent", se le indica a GKE que solo envíe notificaciones para los tipos de notificación UpgradeEvent y SecurityBulletinEvent.

Filtrar notificaciones mediante filter tiene los siguientes beneficios:

  • Es más fácil de usar, ya que filtras el tipo de notificación sin usar una sintaxis específica.
  • Las notificaciones que filtras nunca se envían a Pub/Sub, por lo que no se te cobrarán tarifas por mensajes no entregados.
  • Puedes editar la configuración del filtro en cualquier momento.

Para obtener instrucciones sobre cómo filtrar las notificaciones en GKE, consulta Recibe notificaciones de clúster.

Filtrado de notificaciones en Pub/Sub

Pub/Sub admite el filtrado de mensajes en tu suscripción mediante una sintaxis de filtrado. Cuando usas este método, GKE entrega todos los tipos de notificaciones a tu tema de Pub/Sub. Pub/Sub filtra los mensajes según tu configuración de suscripción y entrega los mensajes que deseas recibir.

Por ejemplo, puedes filtrar las notificaciones de UpgradeEvent y UpgradeAvailableEvent con la siguiente sintaxis en tu suscripción:

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

De todos modos se te cobrará por los mensajes no entregados filtrados por tu suscripción. Además, no puedes modificar los filtros después de configurar la suscripción. Sin embargo, la sintaxis de filtrado es más extensible que el filtrado en GKE.

Para obtener más información sobre cómo filtrar tu suscripción a Pub/Sub, consulta Filtra mensajes.

Consumo de mensajes de Pub/Sub

Los mensajes de Pub/Sub contienen dos campos: data (string) y attributes (mapa de string a string).

Para las notificaciones de GKE, el campo data contiene información legible. El campo attributes tiene información genérica sobre la notificación, como el tipo de notificación, el ID del proyecto, el nombre del clúster y la ubicación del clúster. El campo attributes.payload es una string JSON analizable que contiene información de notificación específica, como los detalles de un boletín de seguridad.

Las notificaciones siempre contienen los siguientes atributos:

Atributo Descripción Ejemplo
project_id Es el número del proyecto al que pertenece el clúster. 123456789
cluster_location Es la ubicación del clúster. us-central1-c
cluster_name Es el nombre del clúster. example-cluster
type_url Es el tipo de notificación. type.googleapis.com/google.container.v1beta1.UpgradeEvent
payload Es una string JSON analizable que contiene información específica de la notificación.
{ "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 siempre enviará tipos de notificaciones beta. Sin embargo, puedes analizar la carga útil para que se muestre el tipo de notificación de DG correspondiente, si está disponible.

Mensajes de notificación de clúster de muestra

Además del texto en el campo data, cada mensaje que GKE envía a Pub/Sub tiene valores específicos en los campos attributes.type_url y attributes.payload. En las siguientes tablas, se muestran ejemplos de la información que puedes recibir para cada tipo de notificación:

SecurityBulletinEvent

Este es un resultado de muestra de un mensaje de SecurityBulletinEvent:

Atributos
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

Este es un resultado de muestra de un mensaje de UpgradeAvailableEvent:

Atributos
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

Este es un resultado de muestra de un mensaje de UpgradeEvent:

Atributos
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"}
      

¿Qué sigue?