Como receber notificações de upgrade de cluster

O Google Kubernetes Engine (GKE) publica notificações de upgrade no Pub/Sub, fornecendo um canal para receber informações do GKE sobre os clusters. Dessa forma, você tem uma previsibilidade melhor de atualizações importantes programadas para um cluster.

As notificações de upgrade do GKE oferecem os seguintes benefícios:

  • Você recebe uma notificação quando seus clusters são atualizados, incluindo os upgrades iniciados pelo usuário e pelo GKE, o que proporciona mais visibilidade sobre as operações em segundo plano do cluster.
  • O Pub/Sub é altamente extensível, o que oferece flexibilidade para a forma como você processa as notificações recebidas. Por exemplo, é possível fazer a integração com o Slack para encaminhar as notificações a um canal do Slack, ou iniciar o Cloud Functions para executar processos personalizados.

Tipos de notificação de upgrade

O GKE envia a seguinte notificação para upgrades de cluster: UpgradeEvent.

UpgradeEvent

Quando um upgrade é iniciado por você ou pelo Google Kubernetes Engine, o GKE envia uma notificação UpgradeEvent informando que esse processo está ocorrendo.

A notificação é enviada no início da operação de upgrade. O código da operação é transmitido no UpgradeEvent.

Como ativar as notificações de upgrade

Para ativar as notificações de upgrade do GKE em um cluster novo ou atual, siga estas etapas:

  1. Crie um tópico do Pub/Sub no projeto e especifique um nome para ele.

  2. Use um dos comandos a seguir para ativar as notificações de upgrade do GKE em um cluster:

    Para clusters novos:

    gcloud beta container clusters create cluster-name \
        --notification-config=pubsub=ENABLED,pubsub-topic=projects/project/topics/topic-name
    

    Para clusters atuais:

    gcloud beta container clusters update cluster-name \
        --notification-config=pubsub=ENABLED,pubsub-topic=projects/project/topics/topic-name
    

    Substitua:

    • cluster-name: o nome do cluster;
    • project: o ID do projeto ou o número do cluster e do tópico. O projeto precisa ser o mesmo para o cluster e o tópico;
    • topic-name: o nome do tópico do Pub/Sub.
  3. Crie uma assinatura do Pub/Sub para seu tópico.

O GKE não tem restrições sobre como você correlaciona os tópicos com os clusters, desde que os tópicos estejam no mesmo projeto. É possível criar um tópico para todos os clusters ou vários tópicos para grupos de clusters.

Como verificar a configuração de notificações

Para verificar se as notificações de upgrade estão configuradas para o cluster de maneira correta, siga estas instruções:

  1. Faça upgrade de um pool de nós no cluster:

    gcloud container clusters upgrade cluster-name \
        --cluster-version version \
        --node-pool node-pool-name
    

    Substitua:

    • cluster-name: o nome do cluster que contém o pool de nós;
    • version: a versão do upgrade do pool de nós;
    • node-pool-name: o nome do pool de nós.
  2. Verifique se há uma mensagem de notificação na sua assinatura do Pub/Sub.

Como desativar as notificações de upgrade

Para desativar as notificações de upgrade do GKE, siga estas instruções:

  1. Atualize o cluster para desativar as notificações:

    gcloud beta container clusters update cluster-name \
        --notification-config=pubsub=DISABLED
    

    Substitua:

    • cluster-name: o nome do cluster atual.
  2. Opcionalmente, exclua o tópico do Pub/Sub criado para as notificações.

Como ler a configuração de notificações

Para ler a configuração de notificações, use o seguinte comando:

gcloud beta container clusters describe cluster-name

A resposta será semelhante a esta:

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

Como consumir notificações

As mensagens do Pub/Sub contêm dois campos: dados (string) e atributos (mapa de string a string).

Para notificações do GKE, você verá uma mensagem legível no campo de dados. Os atributos contêm informações genéricas de notificação (como número do projeto, nome do cluster e local do cluster), além do tipo específico de notificação (por exemplo, UpgradeEvent).

As notificações sempre contêm os atributos a seguir, independentemente do payload:

Nome do atributo Exemplo Descrição
ProjectNumber 123456789 O número do projeto que é o proprietário do cluster.
ClusterLocation us-central1-c O local do cluster.
ClusterName my-cluster O nome do cluster.
TypeURL type.googleapis.com/google.container.v1beta1.UpgradeEvent O tipo de notificação.
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"} Uma string JSON analisável com informações específicas de notificação.

A seguir