Recibe notificaciones de actualización del clúster

Google Kubernetes Engine (GKE) publica notificaciones de actualización en Pub/Sub, lo que te proporciona un canal a fin de recibir información de GKE sobre tus clústeres y, por lo tanto, predecir mejor la disponibilidad actualizaciones programadas importantes.

Las notificaciones de actualización de GKE proporcionan 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.
  • 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 el clúster se actualice, incluidas las actualizaciones iniciadas por el usuario y por GKE, lo que te proporciona una mayor 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 Cloud Functions 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 las siguientes notificaciones para las actualizaciones del clúster: UpgradeAvailableEvent y UpgradeEvent.

UpgradeAvailableEvent

Cuando una versión nueva está disponible en un canal de versiones, GKE envía una notificación UpgradeAvailableEvent a los clústeres en ese canal de versiones para informarle a los clústeres que ya está disponible una versión nueva. 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 menores (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 las versiones nuevas a las que se pueden actualizar los clústeres (los parches en la versión secundaria actual y la siguiente versión secundaria). Los clústeres y las instancias principales con las actualizaciones automáticas de nodo habilitadas pueden actualizarse poco después de recibir esta notificación, ya que no hay un concepto de clústeres disponibles o predeterminados para los clústeres que no estén en un canal de versiones.

UpgradeEvent

Cuando tú o GKE inicien una actualización, GKE enviará una notificación UpgradeEvent, lo que te proporcionará visibilidad cuando se produzca una actualización. Ya deberías estar al tanto de que hay una actualización disponible por la notificación UpgradeAvailableEvent, por lo que puedes actualizar por adelantado o tomar las medidas necesarias para prepararte (o configurar períodos de mantenimiento, etcétera).

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

Habilita las notificaciones de actualización

Puedes habilitar las notificaciones de actualización de GKE en un clúster nuevo o uno existente mediante las siguientes tareas:

  1. Crea un tema de Pub/Sub en tu proyecto y especifica un nombre de tema.

  2. Usa uno de los siguientes comandos para habilitar las notificaciones de actualización de GKE en un clúster:

    Para los clústeres nuevos, usa este comando:

    gcloud container clusters create CLUSTER_NAME \
        --notification-config=pubsub=ENABLED,pubsub-topic=projects/PROJECT/topics/TOPIC_NAME
    

    Para los clústeres existentes, usa este comando:

    gcloud container clusters update CLUSTER_NAME \
        --notification-config=pubsub=ENABLED,pubsub-topic=projects/PROJECT/topics/TOPIC_NAME
    

    Reemplaza los siguientes elementos:

    • CLUSTER_NAME: Es el nombre de tu clúster.
    • PROJECT: Es el ID del proyecto o el número del clúster y el tema. El proyecto debe ser el mismo para el clúster y el tema.
    • TOPIC_NAME: Es el nombre del tema de Pub/Sub.
  3. Crea una suscripción a Pub/Sub para el tema.

GKE no tiene restricciones sobre cómo correlacionas los temas con los clústeres, siempre que estos estén en el mismo proyecto que los clústeres. Puedes elegir crear un tema para todos los clústeres o crear varios temas para grupos de clústeres.

Verifica la configuración de las notificaciones

Si quieres verificar que las notificaciones de actualización estén configuradas de manera correcta para tu clúster, sigue estos pasos:

  1. Actualiza un grupo de nodos en tu clúster:

    gcloud container clusters upgrade CLUSTER_NAME \
        --cluster-version VERSION \
        --node-pool NODE_POOL_NAME
    

    Reemplaza los siguientes elementos:

    • CLUSTER_NAME: Es el nombre del clúster que contiene el grupo de nodos.
    • VERSION: Es la versión a la que se actualizará el grupo de nodos.
    • NODE_POOL_NAME: Es el nombre del grupo de nodos
  2. Busca un mensaje de notificación en tu suscripción a Pub/Sub.

Inhabilita las notificaciones de actualización

Para inhabilitar las notificaciones de actualización de GKE, realiza las siguientes tareas:

  1. Actualiza el clúster para inhabilitar las notificaciones:

    gcloud container clusters update CLUSTER_NAME \
        --notification-config=pubsub=DISABLED
    

    Reemplaza los siguientes elementos:

    • CLUSTER_NAME: Es el nombre del clúster existente.
  2. De forma opcional, borra el tema de Pub/Sub que creaste para las notificaciones.

Lee la configuración de las notificaciones

Para leer la configuración de las notificaciones, usa el siguiente comando:

gcloud container clusters describe CLUSTER_NAME

El resultado es similar al siguiente:

name: c1
location: us-central1-c
notificationConfig:
  enabled: True
  topic: AnotherTopic

Consume notificaciones

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

Para las notificaciones de GKE, este envía un mensaje legible en el campo de datos. Los atributos contienen información genérica sobre la notificación (por ejemplo, el número del proyecto, el nombre y la ubicación del clúster) junto con el tipo de notificación específica (por ejemplo, UpgradeAvailableEvent o UpgradeEvent).

Las notificaciones siempre contienen los siguientes atributos, sin importar la carga útil:

Nombre del atributo Ejemplo Descripción
project_number 123456789 Es el número del proyecto al que pertenece el clúster.
cluster_location us-central1-c Es la ubicación del clúster.
cluster_name my-cluster Es el nombre del clúster.
type_url type.googleapis.com/google.container.v1beta.UpgradeEvent Es el tipo de notificación. El ejemplo que se muestra es específico de una notificación de 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"} Es una string JSON analizable que contiene información específica de la notificación. El ejemplo que se muestra es específico de una notificación de UpgradeEvent.

GKE siempre enviará tipos de notificación Beta, pero la carga útil se puede analizar en el tipo de DG (v1) correspondiente, si está disponible.

Filtra notificaciones

Deberías configurar tus suscripciones a Pub/Sub para filtrar solo los tipos de notificaciones que deseas consumir. Por ejemplo, puedes configurar tu suscripción para que solo reciba notificaciones UpgradeAvailableEvent con la sintaxis de filtrado.

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

Para obtener más información, consulta Filtrado de Pub/Sub.

¿Qué sigue?