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.
- O Azure AKS dava suporte a distribuições Kubernetes.
- 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.
- Um cluster em execução em uma das distribuições Kubernetes suportadas.
- Uma subscrição do Azure.
- Certificados PKI a serem usados para estabelecer uma conexão HTTPS com o agente de grade de eventos.
- 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:
Os certificados e chaves devem ser certificados X.509 e PEM de email com privacidade aprimorada.
Para configurar o certificado do agente de Grade de Eventos (servidor) durante a instalação, você precisará fornecer:
- Um certificado de autoridade de certificação
- Um certificado público
- Uma chave privada
Para configurar o certificado de operador de Grade de Eventos (cliente), você precisará fornecer:
- Um certificado de autoridade de certificação
- Um certificado público
- 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.
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
No portal do Azure, pesquise (campo na parte superior) por Azure Arc
Selecione Cluster Kubernetes no menu do lado esquerdo na seção Infraestrutura
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 Extensões no grupo Configurações no menu à esquerda.
Selecione + Adicionar. Uma página mostrando as extensões disponíveis do Azure Arc Kubernetes é exibida.
Na página Novo recurso, selecione Grade de Eventos na Extensão Kubernetes.
Na página Grade de Eventos na Extensão do Kubernetes, selecione Criar.
A guia Noções básicas da página Instalar grade de eventos , siga estas etapas.
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.
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.
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ê.
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.
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
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.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.
Limite de memória. O padrão é 1 GiB.
Pedido de memória. O padrão é 200 MiB. Este campo não é editável.
Selecione Next: Configuration na parte inferior da página.
Na guia Configuração da página Instalar Grade de Eventos, execute as seguintes etapas:
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.
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.
Selecione Next : Monitoring na parte inferior da página.
Na guia Monitoramento da página Instalar Grade de Eventos, execute as seguintes etapas:
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.
Selecione Next: Tags para navegar até a página Tags .
Na página Marcas, execute as seguintes etapas:
Defina tags, se necessário.
Selecione Rever + criar na parte inferior da página.
No separador Rever + criar, selecione Criar.
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.
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.
Instalar usando a CLI do Azure
Inicie uma sessão de shell. Pode iniciar uma sessão no seu computador ou pode abrir um browser para https://shell.azure.com.
Criar arquivo de
protected-settings-extension.json
configuraçã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 dobase64 --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)\",
Criar arquivo de
settings-extension.json
configuraçã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
eserviceType
. 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 utilizarazurefile
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
paraprometheus
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
Crie uma extensão do Kubernetes que instale componentes da Grade de Eventos no cluster.
Para parâmetros
cluster-name
eresource-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" }
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 serInstalled
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.