Instalar a extensão de Grade de Eventos no cluster Kubernetes habilitado para Azure Arc

Este artigo orienta você pelas etapas para instalar a Grade de Eventos em um cluster Kubernetes habilitado para ArcGIS do Azure.

Por uma questão de brevidade, este artigo refere-se a "Event Grid on Kubernetes extension" como "Event Grid on Kubernetes" ou apenas "Event Grid".

Importante

A Grade de Eventos no Kubernetes com o Azure Arc está atualmente em visualização pública. Esta versão de pré-visualização é disponibiliza sem um contrato de nível de serviço e não é recomendada para cargas de trabalho de produção. Algumas funcionalidades poderão não ser suportadas ou poderão ter capacidades limitadas. Para obter mais informações, veja Termos Suplementares de Utilização para Pré-visualizações do Microsoft Azure.

Distribuições Kubernetes suportadas

A seguir estão as distribuições Kubernetes suportadas nas quais a Grade de Eventos pode ser implantada e executada.

  1. O Azure AKS dava suporte a distribuições Kubernetes.
  2. Plataforma de contêiner RedHat OpenShift.

Extensão da grade de eventos

A operação que instala uma instância de serviço de Grade de Eventos em um cluster do Kubernetes é a criação de uma extensão de cluster do Azure Arc, que implanta um agente de Grade de Eventos e um operador de Grade de Eventos. Para obter mais informações sobre a função do broker e do operador, consulte Event Grid on Kubernetes components. O recurso de extensão de cluster do Azure Arc fornece gerenciamento do ciclo de vida usando operações do plano de controle do Azure Resource Manager (ARM) para a Grade de Eventos implantada em clusters Kubernetes habilitados para Azure Arc.

Nota

A versão de visualização do serviço suporta apenas uma única instância da extensão de Grade de Eventos em um cluster do Kubernetes, pois a extensão de Grade de Eventos é atualmente definida como uma extensão de escopo de cluster. Ainda não há suporte para implantações com escopo de namespace para Grade de Eventos que permitam que várias instâncias sejam implantadas em um cluster. Para obter mais informações, consulte Escopo da extensão.

Pré-requisitos

Antes de prosseguir com a instalação da Grade de Eventos, verifique se os seguintes pré-requisitos são atendidos.

  1. Um cluster em execução em uma das distribuições Kubernetes suportadas.
  2. Uma subscrição do Azure.
  3. Certificados PKI a serem usados para estabelecer uma conexão HTTPS com o agente de grade de eventos.
  4. Conecte seu cluster ao Azure Arc.

Obter suporte

Se você tiver um problema, consulte a seção Solução de problemas para obter ajuda com condições comuns. Se você ainda tiver problemas, crie uma solicitação de suporte do Azure.

Requisitos do certificado PKI

O agente de grade de eventos (servidor) serve dois tipos de clientes. A autenticação do servidor é feita usando certificados. A autenticação do cliente é feita usando certificados ou chaves SAS com base no tipo de cliente.

  • Os operadores de Grade de Eventos que fazem solicitações de plano de controle para o agente de Grade de Eventos são autenticados usando certificados.
  • Os editores de Grade de Eventos que publicam eventos para um tópico de Grade de Eventos são autenticados com as chaves SAS do tópico.

Para estabelecer uma comunicação HTTPS segura com o agente de Grade de Eventos e o operador de Grade de Eventos, usamos Certificados PKI durante a instalação da extensão de Grade de Eventos. Aqui estão os requisitos gerais para esses certificados PKI:

  1. Os certificados e chaves devem ser certificados X.509 e PEM de email com privacidade aprimorada.

  2. Para configurar o certificado do agente de Grade de Eventos (servidor) durante a instalação, você precisará fornecer:

    1. Um certificado de autoridade de certificação
    2. Um certificado público
    3. Uma chave privada
  3. Para configurar o certificado de operador de Grade de Eventos (cliente), você precisará fornecer:

    1. Um certificado de autoridade de certificação
    2. Um certificado público
    3. Uma chave privada

    Os clientes de publicação podem usar o certificado de CA do agente de Grade de Eventos para validar o servidor ao publicar eventos em um tópico.

    Importante

    Enquanto um domínio associado ao cliente pode ter mais de um certificado público emitido por autoridades de certificação diferentes, a Grade de Eventos no Kubernetes só permite carregar um único certificado de CA para clientes ao instalar a Grade de Eventos. Como consequência, os certificados para o operador de Grade de Eventos devem ser emitidos (assinados) pela mesma autoridade de certificação para que a validação da cadeia de certificados seja bem-sucedida e uma sessão TLS seja estabelecida com êxito.

  4. Ao configurar o CN (Common Name) para certificados de servidor e cliente, verifique se eles são diferentes do CN fornecido para o certificado da Autoridade de Certificação.

    Importante

    Para os estágios iniciais de prova de conceito, certificados autoassinados podem ser uma opção, mas, em geral, certificados PKI adequados assinados por uma Autoridade de Certificação (CA) devem ser adquiridos e usados.

Instalar usando o portal do Azure

  1. No portal do Azure, pesquise (campo na parte superior) por Azure Arc

  2. Selecione Cluster Kubernetes no menu do lado esquerdo na seção Infraestrutura

  3. Na lista de clusters, localize aquele no qual você deseja instalar a Grade de Eventos e selecione-o. A página Visão geral do cluster é exibida.

    Selecione seu cluster Kubernetes

  4. Selecione Extensões no grupo Configurações no menu à esquerda.

  5. Selecione + Adicionar. Uma página mostrando as extensões disponíveis do Azure Arc Kubernetes é exibida.

    Extensões de cluster - botão Adicionar

  6. Na página Novo recurso, selecione Grade de Eventos na Extensão Kubernetes.

    Selecionar grade de eventos na extensão do Kubernetes

  7. Na página Grade de Eventos na Extensão do Kubernetes, selecione Criar.

    Selecione Criar extensão do Kubernetes

  8. A guia Noções básicas da página Instalar grade de eventos , siga estas etapas.

    1. A seção Detalhes do Projeto mostra valores de assinatura somente leitura e grupo de recursos porque as extensões do Azure Arc são implantadas na mesma assinatura do Azure e no mesmo grupo de recursos do cluster conectado no qual estão instaladas.

    2. Forneça um nome no campo Nome da extensão da Grade de Eventos. Esse nome deve ser exclusivo entre outras extensões do Azure Arc implantadas no mesmo cluster conectado do Azure Arc.

    3. Para o namespace Release, convém fornecer o nome de um namespace Kubernetes no qual os componentes da Grade de Eventos serão implantados. Por exemplo, talvez você queira ter um único namespace para todos os serviços habilitados para Azure Arc implantados em seu cluster. O padrão é eventgrid-system. Se o namespace fornecido não existir, ele será criado para você.

    4. Na seção Detalhes do agente de Grade de Eventos, o tipo de serviço é mostrado. O agente de Grade de Eventos, que é o componente que expõe os pontos de extremidade de tópico para os quais os eventos são enviados, é exposto como um tipo de serviço Kubernetes ClusterIP. Assim, os IPs atribuídos a todos os tópicos usam o espaço IP privado configurado para o cluster.

    5. Forneça o nome da classe de armazenamento que você deseja usar para o broker e que é suportado pela sua distribuição Kubernetes. Por exemplo, se estiver a utilizar o AKS, pode utilizar azurefileo , que utiliza o armazenamento Padrão do Azure. Para obter mais informações sobre classes de armazenamento predefinidas suportadas pelo AKS, consulte Classes de armazenamento no AKS. Se você estiver usando outras distribuições do Kubernetes, consulte a documentação da distribuição do Kubernetes para obter as classes de armazenamento predefinidas suportadas ou a maneira como você pode fornecer as suas.

    6. Tamanho de armazenamento. O padrão é 1 GiB. Considere a taxa de ingestão ao determinar o tamanho do seu armazenamento. A taxa de ingestão em MiB/segundo medida como o tamanho dos seus eventos vezes a taxa de publicação (eventos por segundo) em todos os tópicos no agente de Grade de Eventos é um fator-chave ao alocar armazenamento. Os eventos são transitórios por natureza e, uma vez entregues, não há consumo de armazenamento para esses eventos. Embora a taxa de ingestão seja um dos principais fatores para o uso do armazenamento, não é o único. A configuração de assinatura de tópicos e eventos de retenção de metadados também consome espaço de armazenamento, mas isso normalmente requer uma quantidade menor de espaço de armazenamento do que os eventos ingeridos e entregues pela Grade de Eventos.

    7. Limite de memória. O padrão é 1 GiB.

    8. Pedido de memória. O padrão é 200 MiB. Este campo não é editável.

      Instalar extensão de grade de eventos - página Noções básicas

    9. Selecione Next: Configuration na parte inferior da página.

  9. Na guia Configuração da página Instalar Grade de Eventos, execute as seguintes etapas:

    1. Habilite a comunicação HTTP (não segura). Marque esta caixa se quiser usar um canal não seguro quando os clientes se comunicarem com o agente de Grade de Eventos.

      Importante

      Habilitar essa opção faz com que a comunicação com o agente de Grade de Eventos use HTTP como transporte. Assim, qualquer cliente de publicação e o operador de Grade de Eventos não se comunicarão com o agente de Grade de Eventos de forma segura. Deve utilizar esta opção apenas durante as fases iniciais de desenvolvimento.

    2. Se você não habilitou a comunicação HTTP, selecione cada um dos arquivos de certificado PKI adquiridos e atenda aos requisitos de certificado PKI.

      Instalar extensão de grade de eventos - página de configuração

    3. Selecione Next : Monitoring na parte inferior da página.

  10. Na guia Monitoramento da página Instalar Grade de Eventos, execute as seguintes etapas:

    1. Selecione Ativar métricas (opcional). Se você selecionar essa opção, a Grade de Eventos no Kubernetes expõe métricas para tópicos e assinaturas de eventos usando o formato de exposição Prometheus.

      Instalar extensão de grade de eventos - página de monitoramento

    2. Selecione Next: Tags para navegar até a página Tags .

  11. Na página Marcas, execute as seguintes etapas:

    1. Defina tags, se necessário.

      Instalar extensão Event Grid - página Tags

    2. Selecione Rever + criar na parte inferior da página.

  12. No separador Rever + criar, selecione Criar.

    Instalar a extensão Event Grid - Rever e Criar página

    Importante

    A instalação da Grade de Eventos é uma operação assíncrona que pode ser executada por mais tempo no cluster do Kubernetes do que o momento em que você vê uma notificação no Portal do Azure informando que a implantação está concluída. Aguarde pelo menos 5 minutos depois de ver uma notificação de que "Sua implantação está concluída" antes de tentar criar um local personalizado (próxima etapa). Se você tiver acesso ao cluster do Kubernetes, em uma sessão bash poderá executar o seguinte comando para validar se o agente de Grade de Eventos e os pods do operador de Grade de Eventos estão no estado de Execução, o que indicaria que a instalação foi concluída:

    kubectl get pods -n \<release-namespace-name\>
    

    Aqui está a saída de exemplo:

    NAME                                  READY   STATUS    RESTARTS   AGE
    eventgrid-broker-568f75976-wxkd2      1/1     Running   0          2m28s
    eventgrid-operator-6c4c6c675d-ttjv5   1/1     Running   0          2m28s    
    

    Importante

    Um Local Personalizado precisa ser criado antes de tentar implantar tópicos de Grade de Eventos. Para criar um local personalizado, você pode selecionar a página Contexto na parte inferior 5 minutos após a notificação "Sua implantação foi concluída" ser exibida. Como alternativa, você pode criar um local personalizado usando o portal do Azure. Para obter mais informações, consulte a documentação de Localização personalizada.

  13. Depois que a implantação for bem-sucedida, você poderá ver uma entrada na página Extensões com o nome fornecido para sua extensão de Grade de Eventos. Se você vir Pendente para o status Instalação, aguarde alguns minutos e selecione Atualizar na barra de ferramentas.

    Extensão Event Grid - instalada

Instalar usando a CLI do Azure

  1. Inicie uma sessão de shell. Pode iniciar uma sessão no seu computador ou pode abrir um browser para https://shell.azure.com.

  2. Criar arquivo de protected-settings-extension.jsonconfiguração . Esse arquivo é passado como um parâmetro ao criar a extensão Event Grid.

    No comando a seguir e em cada uma das linhas de configuração, substitua filename pelo nome que contém o certificado público, certificado de CA ou chave para o operador (cliente) ou broker (servidor), de acordo. Todos os certificados fornecidos devem ser codificados em base64 sem quebra automática de linha. Daí, o uso do base64 --wrap=0 comando.

    echo "{ 
        \"eventgridoperator.identityCert.base64EncodedIdentityCert\":\"$(base64 <filename> --wrap=0)\",
        \"eventgridoperator.identityCert.base64EncodedIdentityKey\":\"$(base64 <filename> --wrap=0)\",
        \"eventgridoperator.identityCert.base64EncodedIdentityCaCert\":\"$(base64 <filename> --wrap=0)\",
        \"eventgridbroker.service.tls.base64EncodedServerCert\":  \"$(base64 <filename> --wrap=0)\" ,
        \"eventgridbroker.service.tls.base64EncodedServerKey\":  \"$(base64 <filename> --wrap=0)\" ,
        \"eventgridbroker.service.tls.base64EncodedServerCaCert\":  \"$(base64 <filename> --wrap=0)\" 
    }" > protected-settings-extension.json 
    

    Por exemplo, se o certificado público para o broker (primeiro item de configuração acima) for chamado client.cer, a primeira linha de configuração deverá ser semelhante à seguinte:

    \"eventgridoperator.identityCert.base64EncodedIdentityCert\":\"$(base64 client.cer --wrap=0)\",    
    
  3. Criar arquivo de settings-extension.jsonconfiguração . Esse arquivo é passado como um parâmetro ao criar a extensão Event Grid.

    Importante

    Não é possível alterar os valores de ServiceAccount e serviceType. Durante a versão de visualização, o único tipo de serviço Kubernetes suportado é ClusterIP.

    Para storageClassName fornecer a classe de armazenamento que você deseja usar para o broker e que é suportada pela sua distribuição Kubernetes. Por exemplo, se estiver a utilizar o AKS, pode utilizar azurefile o , que utiliza o armazenamento Padrão do Azure. Para obter mais informações sobre classes de armazenamento predefinidas suportadas pelo AKS, consulte Classes de armazenamento no AKS. Se você estiver usando outras distribuições do Kubernetes, consulte a documentação da distribuição do Kubernetes para obter as classes de armazenamento predefinidas suportadas ou a maneira como você pode fornecer as suas.

    Defina reporterType para prometheus habilitar métricas para tópicos e assinaturas de eventos usando o formato de exposição Prometheus.

    Importante

    Durante a versão de visualização, o uso de um cliente Prometheus é o único mecanismo suportado para obter métricas.

    echo "{
        \"Microsoft.CustomLocation.ServiceAccount\":\"eventgrid-operator\",
        \"eventgridbroker.service.serviceType\": \"ClusterIP\",
        \"eventgridbroker.dataStorage.storageClassName\": \"<storage_class_name>\",
        \"eventgridbroker.diagnostics.metrics.reporterType\":\"prometheus\"
    }" > settings-extension.json
    
  4. Crie uma extensão do Kubernetes que instale componentes da Grade de Eventos no cluster.

    Para parâmetros cluster-name e resource-group, você deve usar os mesmos nomes fornecidos quando conectou seu cluster ao Azure Arc.

    release-namespace é o namespace no qual os componentes da Grade de Eventos serão implantados. O padrão é eventgrid-system. Talvez você queira fornecer um valor para substituir o padrão. Por exemplo, talvez você queira ter um único namespace para todos os serviços habilitados para Azure Arc implantados em seu cluster. Se o namespace fornecido não existir, ele será criado para você.

    Importante

    Durante a versão de visualização, cluster é o único escopo suportado ao criar ou atualizar uma extensão de Grade de Eventos. Isso significa que o serviço suporta apenas uma única instância da extensão Event Grid em um cluster Kubernetes. Ainda não há suporte para implantações com escopo de namespace. Para obter mais informações, consulte Escopo da extensão.

    az k8s-extension create \
        --cluster-type connectedClusters \
        --cluster-name <connected_cluster_name> \
        --resource-group <resource_group_of_connected_cluster> \
        --name <event_grid_extension_name> \
        --extension-type Microsoft.EventGrid \
        --scope cluster \
        --auto-upgrade-minor-version true \
        --release-train Stable \
        --release-namespace <namespace_name> \
        --configuration-protected-settings-file protected-settings-extension.json \
        --configuration-settings-file settings-extension.json    
    

    Para obter mais informações sobre o comando CLI, consulte az k8s-extension create. Observe que você pode usar o --config-file parâmetro para passar o nome de um arquivo json que contém informações de configuração relacionadas à Grade de Eventos. Para suportar HTTP, inclua a seguinte configuração.

    "eventgridbroker.service.supportedProtocols[0]": "http" 
    

    Aqui está um exemplo de settings-extension.json com a configuração acima.

    {
        "Microsoft.CustomLocation.ServiceAccount": "eventgrid-operator",
        "eventgridbroker.service.serviceType": "ClusterIP",
        "eventgridbroker.service.supportedProtocols[0]": "http",
        "eventgridbroker.dataStorage.storageClassName": "default",
        "eventgridbroker.diagnostics.metrics.reporterType": "prometheus"
    }    
    
  5. Valide se a extensão Event Grid foi instalada com êxito.

    az k8s-extension show  --cluster-type connectedClusters --cluster-name <connected_cluster_name> --resource-group <resource_group_of_connected_cluster> --name <event_grid_extension_name>
    

    A installedState propriedade deve ser Installed se os componentes de extensão de grade de eventos implantados com êxito.

Localização personalizada

Importante

Um Local Personalizado precisa ser criado antes de tentar implantar tópicos de Grade de Eventos. Você pode criar um local personalizado usando o portal do Azure.

Resolução de Problemas

Problemas de cluster do Azure Arc connect

Problema: quando você navega até o Azure Arc e seleciona o cluster do Kubernetes no menu do lado esquerdo, a página exibida não mostra o cluster do Kubernetes onde pretendo instalar a Grade de Eventos.

Resolução: seu cluster Kubernetes não está registrado no Azure. Siga as etapas no artigo Conectar um cluster Kubernetes existente ao Azure Arc. Se você tiver um problema durante esta etapa, registre uma solicitação de suporte com a equipe do Kubernetes habilitada para Azure Arc.

Problemas de extensão da Grade de Eventos

Problema: Ao tentar instalar uma "extensão de grade de eventos", você recebe a seguinte mensagem: "Operação inválida - Uma instância de grade de eventos já foi instalada neste cluster Kubernetes conectado. A extensão da Grade de Eventos tem escopo no nível do cluster, o que significa que apenas uma instância pode ser instalada em um cluster."

Explicação: Você já tem a Grade de Eventos instalada. A versão de visualização da Grade de Eventos oferece suporte apenas a uma instância de extensão da Grade de Eventos implantada em um cluster.

Próximos passos

Crie um local personalizado e siga as instruções no início rápido Rotear eventos na nuvem para Webhooks com a Grade de Eventos do Azure no Kubernetes.