Guia de início rápido: enviar eventos do registro de contêiner privado para a grade de eventos
A Grade de Eventos do Azure é um serviço de roteamento de eventos totalmente gerenciado que fornece consumo uniforme de eventos usando um modelo de publicação-assinatura. Neste início rápido, você usa a CLI do Azure para criar um registro de contêiner, assinar eventos do Registro e implantar um aplicativo Web de exemplo para receber os eventos. Finalmente, você aciona a imagem push
e delete
os eventos do contêiner e exibe a carga útil do evento no aplicativo de exemplo.
Depois de concluir as etapas neste artigo, os eventos enviados do registro do contêiner para a Grade de Eventos aparecem no aplicativo Web de exemplo:
Se não tiver uma subscrição do Azure, crie uma conta gratuita do Azure antes de começar.
Pré-requisitos
Use o ambiente Bash no Azure Cloud Shell. Para obter mais informações, consulte Guia de início rápido para Bash no Azure Cloud Shell.
Se preferir executar comandos de referência da CLI localmente, instale a CLI do Azure. Se estiver a utilizar o Windows ou macOS, considere executar a CLI do Azure num contentor Docker. Para obter mais informações, consulte Como executar a CLI do Azure em um contêiner do Docker.
Se estiver a utilizar uma instalação local, inicie sessão no CLI do Azure ao utilizar o comando az login. Para concluir o processo de autenticação, siga os passos apresentados no seu terminal. Para outras opções de entrada, consulte Entrar com a CLI do Azure.
Quando solicitado, instale a extensão da CLI do Azure na primeira utilização. Para obter mais informações sobre as extensões, veja Utilizar extensões com o CLI do Azure.
Execute o comando az version para localizar a versão e as bibliotecas dependentes instaladas. Para atualizar para a versão mais recente, execute o comando az upgrade.
- Os comandos da CLI do Azure neste artigo são formatados para o shell Bash . Se você estiver usando um shell diferente, como o PowerShell ou o Prompt de Comando, talvez seja necessário ajustar os caracteres de continuação de linha ou as linhas de atribuição de variáveis de acordo. Este artigo usa variáveis para minimizar a quantidade de edição de comando necessária.
Criar um grupo de recursos
Um grupo de recursos do Azure é um contêiner lógico no qual você implanta e gerencia seus recursos do Azure. O comando az group create a seguir cria um grupo de recursos chamado myResourceGroup na região eastus. Se você quiser usar um nome diferente para seu grupo de recursos, defina RESOURCE_GROUP_NAME
como um valor diferente.
RESOURCE_GROUP_NAME=myResourceGroup
az group create --name $RESOURCE_GROUP_NAME --location eastus
Criar um registo de contentores
Em seguida, implante um registro de contêiner no grupo de recursos com os seguintes comandos. Antes de executar o comando az acr create , defina ACR_NAME
como um nome para o seu registro. O nome deve ser exclusivo no Azure e está restrito a 50 caracteres alfanuméricos.
ACR_NAME=<acrName>
az acr create --resource-group $RESOURCE_GROUP_NAME --name $ACR_NAME --sku Basic
Depois que o registro tiver sido criado, a CLI do Azure retornará uma saída semelhante à seguinte:
{
"adminUserEnabled": false,
"creationDate": "2018-08-16T20:02:46.569509+00:00",
"id": "/subscriptions/<Subscription ID>/resourceGroups/myResourceGroup/providers/Microsoft.ContainerRegistry/registries/myregistry",
"location": "eastus",
"loginServer": "myregistry.azurecr.io",
"name": "myregistry",
"provisioningState": "Succeeded",
"resourceGroup": "myResourceGroup",
"sku": {
"name": "Basic",
"tier": "Basic"
},
"status": null,
"storageAccount": null,
"tags": {},
"type": "Microsoft.ContainerRegistry/registries"
}
Criar um ponto de extremidade de evento
Nesta seção, você usa um modelo do Gerenciador de Recursos localizado em um repositório GitHub para implantar um aplicativo Web de exemplo pré-criado no Serviço de Aplicativo do Azure. Mais tarde, subscreva os eventos da Grelha de Eventos do seu registo e especifique esta aplicação como o ponto de extremidade para o qual os eventos são enviados.
Para implantar o aplicativo de exemplo, defina SITE_NAME
como um nome exclusivo para seu aplicativo Web e execute os seguintes comandos. O nome do site deve ser exclusivo no Azure porque faz parte do FQDN (nome de domínio totalmente qualificado) do aplicativo Web. Em uma seção posterior, você navega até o FQDN do aplicativo em um navegador da Web para exibir os eventos do seu registro.
SITE_NAME=<your-site-name>
az deployment group create \
--resource-group $RESOURCE_GROUP_NAME \
--template-uri "https://raw.githubusercontent.com/Azure-Samples/azure-event-grid-viewer/master/azuredeploy.json" \
--parameters siteName=$SITE_NAME hostingPlanName=$SITE_NAME-plan
Depois que a implantação for bem-sucedida (pode levar alguns minutos), abra um navegador e navegue até seu aplicativo Web para verificar se ele está sendo executado:
http://<your-site-name>.azurewebsites.net
Você deve ver o aplicativo de exemplo renderizado sem mensagens de evento exibidas:
Habilitar o provedor de recursos da Grade de Eventos
Se você não tiver usado anteriormente a Grade de Eventos em sua assinatura do Azure, talvez seja necessário registrar o provedor de recursos da Grade de Eventos. Execute o seguinte comando para registar o fornecedor:
az provider register --namespace Microsoft.EventGrid
Pode demorar algum tempo até que o registo termine. Para verificar o status, execute o seguinte comando:
az provider show --namespace Microsoft.EventGrid --query "registrationState"
Quando
registrationState
estáRegistered
, está pronto para continuar.
Inscrever-se em eventos do Registro
Na Grade de Eventos, você se inscreve em um tópico para informar quais eventos deseja acompanhar e para onde enviá-los. O comando a seguir az eventgrid event-subscription create
se inscreve no registro de contêiner que você criou e especifica a URL do seu aplicativo Web como o ponto de extremidade para o qual ele deve enviar eventos. As variáveis de ambiente que você preencheu nas seções anteriores são reutilizadas aqui, portanto, nenhuma edição é necessária.
ACR_REGISTRY_ID=$(az acr show --name $ACR_NAME --query id --output tsv)
APP_ENDPOINT=https://$SITE_NAME.azurewebsites.net/api/updates
az eventgrid event-subscription create \
--name event-sub-acr \
--source-resource-id $ACR_REGISTRY_ID \
--endpoint $APP_ENDPOINT
Quando a assinatura for concluída, você verá uma saída semelhante à seguinte:
{
"destination": {
"endpointBaseUrl": "https://eventgridviewer.azurewebsites.net/api/updates",
"endpointType": "WebHook",
"endpointUrl": null
},
"filter": {
"includedEventTypes": [
"All"
],
"isSubjectCaseSensitive": null,
"subjectBeginsWith": "",
"subjectEndsWith": ""
},
"id": "/subscriptions/<Subscription ID>/resourceGroups/myResourceGroup/providers/Microsoft.ContainerRegistry/registries/myregistry/providers/Microsoft.EventGrid/eventSubscriptions/event-sub-acr",
"labels": null,
"name": "event-sub-acr",
"provisioningState": "Succeeded",
"resourceGroup": "myResourceGroup",
"topic": "/subscriptions/<Subscription ID>/resourceGroups/myresourcegroup/providers/microsoft.containerregistry/registries/myregistry",
"type": "Microsoft.EventGrid/eventSubscriptions"
}
Acionar eventos do Registro
Agora que o aplicativo de exemplo está em execução e você se inscreveu no seu registro com a Grade de Eventos, está pronto para gerar alguns eventos. Nesta seção, você usa Tarefas ACR para criar e enviar por push uma imagem de contêiner para o registro. As Tarefas ACR são um recurso do Registro de Contêiner do Azure que permite criar imagens de contêiner na nuvem, sem precisar do Docker Engine instalado em sua máquina local.
Criar e enviar imagem
Execute o seguinte comando da CLI do Azure para criar uma imagem de contêiner a partir do conteúdo de um repositório GitHub. Por padrão, as Tarefas ACR enviam automaticamente uma imagem criada com êxito para o seu registro, o que gera o ImagePushed
evento.
Nota
O Dockerfile usado no exemplo a seguir depende de uma imagem de contêiner base pública do Docker Hub. Para melhorar a confiabilidade ao usar conteúdo público, importe e gerencie a imagem em um registro de contêiner privado do Azure e atualize seu Dockerfile para usar sua imagem base gerenciada privadamente. Saiba mais sobre como trabalhar com imagens públicas.
az acr build --registry $ACR_NAME --image myimage:v1 -f Dockerfile https://github.com/Azure-Samples/acr-build-helloworld-node.git#main
Você deve ver uma saída semelhante à seguinte enquanto as Tarefas ACR são compiladas e, em seguida, enviam sua imagem por push. A saída de exemplo a seguir foi truncada para brevidade.
Sending build context to ACR...
Queued a build with build ID: aa2
Waiting for build agent...
2018/08/16 22:19:38 Using acb_vol_27a2afa6-27dc-4ae4-9e52-6d6c8b7455b2 as the home volume
2018/08/16 22:19:38 Setting up Docker configuration...
2018/08/16 22:19:39 Successfully set up Docker configuration
2018/08/16 22:19:39 Logging in to registry: myregistry.azurecr.io
2018/08/16 22:19:55 Successfully logged in
Sending build context to Docker daemon 94.72kB
Step 1/5 : FROM node:9-alpine
...
Para verificar se a imagem construída está no seu registo, execute o seguinte comando para visualizar as etiquetas no myimage
repositório:
az acr repository show-tags --name $ACR_NAME --repository myimage
A tag "v1" da imagem que você construiu deve aparecer na saída, semelhante à seguinte:
[
"v1"
]
Excluir a imagem
Agora, gere um ImageDeleted
evento excluindo a imagem com o comando az acr repository delete :
az acr repository delete --name $ACR_NAME --image myimage:v1
Você deve ver uma saída semelhante à seguinte, solicitando confirmação para excluir o manifesto e as imagens associadas:
This operation will delete the manifest 'sha256:f15fa9d0a69081ba93eee308b0e475a54fac9c682196721e294b2bc20ab23a1b' and all the following images: 'myimage:v1'.
Are you sure you want to continue? (y/n):
Exibir eventos do Registro
Agora você enviou uma imagem para o seu registro e, em seguida, excluiu-a. Navegue até o aplicativo Web Visualizador de Grade de Eventos e você verá ambos os ImageDeleted
ImagePushed
eventos. Você também pode ver um evento de validação de assinatura gerado pela execução do comando na seção Inscrever-se em eventos do Registro.
A captura de tela a seguir mostra o aplicativo de exemplo com os três eventos, e o ImageDeleted
evento é expandido para mostrar seus detalhes.
Parabéns! Se vir os eventos e ImageDeleted
, o seu registo está a enviar eventos para a Grelha de Eventos e a ImagePushed
Grelha de Eventos está a reencaminhar esses eventos para o ponto de extremidade da aplicação Web.
Clean up resources (Limpar recursos)
Depois de concluir os recursos criados neste início rápido, você pode excluí-los todos com o seguinte comando da CLI do Azure. Quando você exclui um grupo de recursos, todos os recursos que ele contém são excluídos permanentemente.
AVISO: Esta operação é irreversível. Certifique-se de que você não precisa mais de nenhum dos recursos no grupo antes de executar o comando.
az group delete --name $RESOURCE_GROUP_NAME
Esquema de eventos do Event Grid
Você pode encontrar a referência de esquema de mensagem de evento do Registro de Contêiner do Azure na documentação da Grade de Eventos:
Esquema de eventos da Grade de Eventos do Azure para o Registro de Contêiner
Próximos passos
Neste início rápido, você implantou um registro de contêiner, criou uma imagem com Tarefas ACR, excluiu-a e consumiu os eventos do seu registro da Grade de Eventos com um aplicativo de exemplo. Em seguida, vá para o tutorial Tarefas do ACR para saber mais sobre como criar imagens de contêiner na nuvem, incluindo compilações automatizadas na atualização de imagem base: