Partilhar via


Configurar o gerenciador de comunicação do Serviço Kubernetes do Azure

O gerenciador de comunicação do Serviço Kubernetes do Azure (AKS) simplifica as notificações para todas as suas tarefas de manutenção do AKS usando as estruturas de Notificações de Recursos do Azure e do Azure Resource Graph. O gerente de comunicação fornece alertas oportunos sobre gatilhos de eventos e resultados, para que você possa monitorar de perto suas atualizações.

Se a manutenção falhar, o gestor de comunicação notifica-o com as razões da falha. Essas informações reduzem os aborrecimentos operacionais relacionados à observabilidade e acompanhamentos.

Seguindo as etapas neste artigo, você pode configurar notificações para todos os tipos de atualizações automáticas que usam janelas de manutenção.

Pré-requisitos

Configurar o gestor de comunicações

  1. No portal do Azure, vá para o recurso.

  2. Selecione Monitorização>Alertas>Regras de Alerta, e, em seguida, selecione Criar.

  3. Na guia Condição, para Nome do Sinal, selecione Pesquisa de log personalizada.

    Captura de tela que mostra a seleção de uma pesquisa de log personalizada no painel para criar uma regra de alerta.

  4. Na caixa Consulta de pesquisa, cole uma das seguintes consultas personalizadas. Certifique-se de atualizar o caminho where id contains para referenciar os seus recursos para o ID de assinatura, nome do grupo de recursos e nome do cluster.

    A consulta a seguir é para notificações de atualizações automáticas para clusters:

    arg("").containerserviceeventresources
    | where type == "microsoft.containerservice/managedclusters/scheduledevents"
    | where id contains "/subscriptions/<subid>/resourcegroups/<rgname>/providers/Microsoft.ContainerService/managedClusters/<clustername>"
    | where properties has "eventStatus"
    | extend status = substring(properties, indexof(properties, "eventStatus") + strlen("eventStatus") + 3, 50)
    | extend status = substring(status, 0, indexof(status, ",") - 1)
    | where status != ""
    | where properties has "eventDetails"
    | extend upgradeType = case(
                               properties has "K8sVersionUpgrade",
                               "K8sVersionUpgrade",
                               properties has "NodeOSUpgrade",
                               "NodeOSUpgrade",
                               ""
                           )
    | extend details = parse_json(tostring(properties.eventDetails))
    | where properties has "lastUpdateTime"
    | extend eventTime = substring(properties, indexof(properties, "lastUpdateTime") + strlen("lastUpdateTime") + 3, 50)
    | extend eventTime = substring(eventTime, 0, indexof(eventTime, ",") - 1)
    | extend eventTime = todatetime(tostring(eventTime))
    | where eventTime >= ago(30m) // Ensure this matches aggregation granularity & frequency
    | where upgradeType == "K8sVersionUpgrade"
    | project
        eventTime,
        upgradeType,
        status,
        properties,
        name,
        details
    | order by eventTime asc
    

    A consulta a seguir é para notificações de atualizações automáticas para o NodeOS:

    arg("").containerserviceeventresources
    | where type == "microsoft.containerservice/managedclusters/scheduledevents"
    | where id contains "/subscriptions/<subid>/resourcegroups/<rgname>/providers/Microsoft.ContainerService/managedClusters/<clustername>"
    | where properties has "eventStatus"
    | extend status = substring(properties, indexof(properties, "eventStatus") + strlen("eventStatus") + 3, 50)
    | extend status = substring(status, 0, indexof(status, ",") - 1)
    | where status != ""
    | where properties has "eventDetails"
    | extend upgradeType = case(
                               properties has "K8sVersionUpgrade",
                               "K8sVersionUpgrade",
                               properties has "NodeOSUpgrade",
                               "NodeOSUpgrade",
                               ""
                           )
    | extend details = parse_json(tostring(properties.eventDetails))
    | where properties has "lastUpdateTime"
    | extend eventTime = substring(properties, indexof(properties, "lastUpdateTime") + strlen("lastUpdateTime") + 3, 50)
    | extend eventTime = substring(eventTime, 0, indexof(eventTime, ",") - 1)
    | extend eventTime = todatetime(tostring(eventTime))
    | where eventTime >= ago(30m) // Ensure this matches aggregation granularity & frequency
    | where upgradeType == "NodeOSUpgrade"
    | project
        eventTime,
        upgradeType,
        status,
        properties,
        name,
        details
    | order by eventTime asc
    
  5. Vá para a guia Condição . Configure as condições de alerta com as seguintes configurações:

    • Medida: selecione Linhas da tabela.
    • Tipo de agregação: Selecione Contar.
    • Granularidade da agregação: selecione 30 minutos.
    • Valor limite: Manter em 0.
    • Dividir por dimensões: em Nome da dimensão, selecione status. Em seguida, marque a caixa de seleção Incluir todos os valores futuros .

    Captura de ecrã das opções de configuração para condições de alerta.

  6. Na área Dividir por dimensões, para valores de dimensão, selecione um valor. Como você selecionou o status para o nome da dimensão, os valores disponíveis são Agendado, Iniciado, Concluído, Cancelado e Falhado.

    Observação

    Esses valores de status aparecem somente se o cluster tiver executado anteriormente operações de atualização automática. Para novos clusters ou clusters que ainda não passaram por atualizações automáticas, a lista suspensa pode aparecer vazia ou não mostrar dimensões disponíveis. Depois que o cluster executa sua primeira atualização automática, esses valores de status ficam disponíveis para seleção.

    Captura de ecrã das listas pendentes na área para divisão por dimensões.

  7. Vá para a guia Ações . Certifique-se de que existe um grupo de ação com o endereço de e-mail correto, para que possa receber as notificações:

    1. Selecione Usar grupos>de ações Criar um grupo de ações.

    2. Para Tipo de notificação, selecione Email/SMS_message/Push/Voice.

    3. Marque a caixa de seleção Email e digite o endereço de e-mail na caixa Email .

      Captura de ecrã do painel para introduzir informações de e-mail para um grupo de ações.

  8. Vá para a guia Detalhes . Atribua uma identidade gerenciada para que você possa conceder acesso aos recursos necessários. Na área Identidade , selecione Identidade gerenciada atribuída ao sistema.

    Captura de tela que mostra seleções para atribuir uma identidade gerenciada atribuída ao sistema.

  9. Vá para o separador Rever + criar e, em seguida, selecione Criar.

  10. Agora que você criou a regra de alerta, pode atribuir as funções apropriadas para a identidade gerenciada:

    1. Na regra de alerta, vá para Configurações>Identidade>Identidade gerida atribuída pelo sistema>atribuições de funções no Azure.
    2. Selecione Adicionar atribuição de função, selecione a função Leitor e atribua-a ao grupo de recursos.
    3. Selecione Adicionar atribuição de função novamente, selecione a função Leitor e atribua-a à assinatura.

    Sugestão

    Se não vir a opção Identidade , certifique-se de que criou a regra de alerta e de que tem as permissões necessárias.

Depois de configurar o gestor de comunicações, este envia avisos prévios uma semana antes do início da manutenção e um dia antes do início da manutenção. Também lhe envia alertas atempados durante a operação de manutenção.

Verifique a configuração

Para atualizar o cluster, aguarde até que o atualizador automático seja iniciado. Em seguida, verifique se você recebe prontamente avisos no endereço de e-mail que você configurou para receber avisos.

Verifique o banco de dados do Azure Resource Graph para obter o registro de notificação agendada. Cada notificação de evento agendado deve ser listada ContainerServiceEventResources como um registro na tabela.

Captura de ecrã que mostra um registo de notificação no Azure Resource Graph.