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 os eventos do contêiner e delete 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:

Web browser rendering the sample web application with three received events

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:

Web browser showing sample web app with no events displayed

Habilitar o provedor de recursos da Grade de Eventos

  1. 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
    
  2. 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 ImageDeletedImagePushed 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.

Web browser showing the sample app with ImagePushed and ImageDeleted events

Parabéns! Se vir os eventos e , o seu registo está a enviar eventos para a Grelha de Eventos e ImageDeleted a Grelha de Eventos está a ImagePushed 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 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: