Compartilhar via


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

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

Se a manutenção falhar, o gerenciador de comunicações notificará você com os motivos da falha. Essas informações reduzem os problemas 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 gerenciador de comunicações

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

  2. Selecione Regrasde> de> 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 de consulta Pesquisar , cole uma das seguintes consultas personalizadas. Atualize o caminho where id contains para referenciar seus recursos para a 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 . Defina as condições de alerta com as seguintes configurações:

    • Medida: Selecionar linhas de tabela.
    • Tipo de agregação: Selecione Contagem.
    • Granularidade de agregação: selecione 30 minutos.
    • Valor de limite: manter em 0.
    • Dividir por dimensões: para o nome da dimensão, selecione o status. Em seguida, selecione a caixa de seleção Incluir todos os valores futuros .

    Captura de tela 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 Agendados, Iniciados, Concluídos, Cancelados e Com Falha.

    Observação

    Esses valores de status só aparecerão se o cluster executou operações de atualização automática anteriormente. Para novos clusters ou clusters que ainda não passaram por atualizações automáticas, a lista suspensa pode parecer vazia ou sem dimensões disponíveis. Depois que o cluster executar sua primeira atualização automática, esses valores de status ficarão disponíveis para seleção.

    Captura de tela das caixas de lista suspensa na área de divisão por dimensões.

  7. Vá para a guia Ações . Verifique se existe um grupo de ações com o endereço de email correto para que você possa receber as notificações:

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

    2. Para o tipo de notificação, selecione Email/SMS_message/Push/Voz.

    3. Marque a caixa de seleção Email e insira o endereço de email na caixa Email .

      Captura de tela do painel para inserir informações de email 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 a identidade gerenciada atribuída pelo sistema.

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

  9. Vá para a guia Examinar + criar e, em seguida, selecione Criar.

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

    1. Na regra de alerta, vá para Configurações>Identidade>Identidade gerenciada atribuída pelo sistema>Atribuições de função do 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.

    Dica

    Se você não vir a opção Identidade , verifique se criou sua regra de alerta e se tem as permissões necessárias.

Depois de configurar o gerenciador de comunicações, ele envia avisos prévios uma semana antes do início da manutenção e um dia antes do início da manutenção. Ele também envia alertas oportunos durante a operação de manutenção.

Verificar a configuração

Para atualizar o cluster, aguarde o atualizador automático iniciar. Em seguida, verifique se você recebe avisos no endereço de email configurado 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 agendada deve ser listada como um registro na ContainerServiceEventResources tabela.

Captura de tela que mostra um registro de notificação no Azure Resource Graph.