Notificações de cluster


Nesta página, descrevemos como o Google Kubernetes Engine (GKE) publica notificações de cluster no Pub/Sub com informações sobre eventos relevantes para a configuração do cluster, como upgrades e boletins de segurança disponíveis.

Para saber como configurar notificações de cluster, consulte Receber notificações de cluster.

Visão geral

Quando ocorrem determinados eventos relevantes para os clusters do GKE, como upgrades programados importantes ou boletins de segurança disponíveis, o GKE publica notificações sobre esses eventos como mensagens nos tópicos do Pub/Sub que você configura. Você pode receber essas notificações em uma assinatura do Pub/Sub , fazer a integração com serviços de terceiros e filtrar os tipos de notificação que você quer receber.

Benefícios

O uso do Pub/Sub para receber notificações de cluster oferece os seguintes benefícios:

  • Você recebe informações proativas sobre atualizações programadas para um cluster, o que permite planejar melhor os testes e as qualificações e ajudar a garantir um processo de upgrade tranquilo e previsível.
  • Você recebe notificações quando os boletins de segurança específicos dos clusters são emitidos, o que fornece informações precisas de risco e impacto.
  • Você receberá uma notificação quando houver uma nova versão do GKE para a qual será possível fazer upgrade. Antes, era preciso verificar as notas da versão do GKE ou a API GKE para descobrir quando uma nova versão do GKE foi lançada.
  • Você recebe uma notificação quando o GKE ou um usuário inicia upgrades de cluster, fornecendo mais visibilidade às 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 as as funções do Cloud Run para executar processos personalizados.
  • Quando processos personalizados forem necessários (por exemplo, orquestrar um fluxo de trabalho de preparo para produção e teste e certificar um upgrade), use a notificação para acionar esses fluxos de trabalho automaticamente.

Tipos de notificação de upgrade

O GKE envia os seguintes tipos de notificação de cluster:

É possível filtrar as notificações recebidas para que você receba notificações apenas de eventos relevantes. É possível filtrar as notificações de cluster especificando um valor para filter na sinalização --notification-config ao ativar as notificações de cluster ou ao configurar sua assinatura do Pub/Sub.

SecurityBulletinEvent

Quando o GKE emite um boletim de segurança correlacionado diretamente à configuração ou versão do cluster, o GKE envia uma notificação SecurityBulletinEvent fornecendo informações sobre a vulnerabilidade, impacto e, se aplicável, as ações que você pode realizar.

UpgradeAvailableEvent

Quando uma nova versão é disponibilizada em um canal de lançamento, o GKE envia uma notificação UpgradeAvailableEvent aos clusters nesse canal de lançamento para informar aos clusters que uma nova versão já está disponível. Esta notificação fornece uma semana de aviso com antecedência para versões de patch e pelo menos duas a quatro semanas para versões secundárias (dependendo do canal). Para mais informações, consulte Quais versões estão disponíveis em um canal.

Para clusters que não estão em um canal de lançamento, o GKE envia notificações UpgradeAvailableEvent para todas as novas versões que os clusters possam fazer upgrade para, incluindo patches na versão secundária atual e na próxima versão secundária.

Se você usar os pools de nós do Windows Server, as informações da versão do Windows serão enviadas como parte da notificação UpgradeAvailableEvent.

UpgradeEvent

Quando um upgrade é iniciado por você ou pelo GKE, o GKE envia uma notificação UpgradeEvent informando que um upgrade já foi iniciado. O ideal é usar o tipo de notificação UpgradeAvailableEvent para acompanhar o futuro upgrade e fazer upgrade com antecedência ou tomar as medidas necessárias para se preparar, como a configuração de janelas de manutenção.

A notificação UpgradeEvent é enviada no início da operação de upgrade. O ID da operação é transmitido na mensagem.

Como filtrar notificações

É possível filtrar as notificações de cluster para garantir que você receba apenas as notificações que quiser. É possível aplicar a filtragem de uma das seguintes maneiras:

Como filtrar notificações no GKE

É possível configurar a filtragem para um ou mais tipos de notificação disponíveis ao ativar as notificações de cluster especificando valores para filter na sinalização --notification-config. filter usa uma lista delimitada por barra vertical ( | ) dos tipos de notificação que você quer receber.

Por exemplo, especificar filter="UpgradeEvent|SecurityBulletinEvent" instrui o GKE a enviar notificações somente para os tipos de notificação UpgradeEvent e SecurityBulletinEvent.

A filtragem de notificações usando filter tem os seguintes benefícios:

  • Mais fácil de usar, porque você filtra o tipo de notificação sem usar uma sintaxe específica.
  • As notificações filtradas não são enviadas ao Pub/Sub. Portanto, você não é cobrado por mensagens não entregues.
  • Você pode editar a configuração do filtro a qualquer momento.

Para instruções sobre como filtrar notificações no GKE, consulte Receber notificações de cluster.

Como filtrar notificações no Pub/Sub

O Pub/Sub é compatível com a filtragem de mensagens na sua assinatura usando uma sintaxe de filtragem. Quando você usa esse método, o GKE entrega todos os tipos de notificação ao tópico do Pub/Sub. O Pub/Sub filtra mensagens com base na configuração de assinatura e entrega as mensagens que você quer receber.

Por exemplo, é possível filtrar por notificações UpgradeEvent e UpgradeAvailableEvent usando a seguinte sintaxe na sua assinatura:

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

Você ainda será cobrado pelas mensagens não entregues filtradas pela sua assinatura. Também não é possível modificar os filtros depois de configurar a assinatura. No entanto, a sintaxe de filtragem é mais extensível do que a filtragem no GKE.

Para saber mais sobre como filtrar sua assinatura do Pub/Sub, consulte Como filtrar mensagens.

Como consumir mensagens do Pub/Sub

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

Para notificações do GKE, o campo data contém informações legíveis. O campo attributes tem informações genéricas de notificação, como o tipo e o ID do projeto, o nome e o local do cluster. O campo attributes.payload é uma string JSON analisável que contém informações de notificação específicas, como os detalhes de um boletim de segurança.

As notificações sempre contêm os seguintes atributos:

Atributo Descrição Exemplo
project_id O número do projeto que é o proprietário do cluster. 123456789
cluster_location O local do cluster. us-central1-c
cluster_name O nome do cluster. example-cluster
type_url O tipo de notificação. type.googleapis.com/google.container.v1beta1.UpgradeEvent
payload Uma string JSON analisável com informações específicas de notificação.
{ "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"}

O GKE sempre enviará tipos de notificação beta. No entanto, é possível analisar o payload para exibir o tipo de notificação do GA correspondente, se ele estiver disponível.

Exemplos de mensagens de notificação de cluster

Além do texto no campo data, cada mensagem que o GKE envia para o Pub/Sub tem valores específicos nos campos attributes.type_url e attributes.payload. As tabelas a seguir mostram exemplos das informações que você pode receber para cada tipo de notificação:

SecurityBulletinEvent

Veja um exemplo de saída de uma mensagem 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

Veja um exemplo de saída de uma mensagem 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

Veja um exemplo de saída de uma mensagem 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"}
      

A seguir