Quickstart: Gebeurtenissen verzenden van privécontainerregister naar Event Grid

Azure Event Grid is een volledig beheerde service voor gebeurtenisroutering die uniform gebeurtenisverbruik biedt met behulp van een model voor publiceren/abonneren. In deze quickstart gebruikt u de Azure CLI om een containerregister te maken, u te abonneren op registergebeurtenissen en vervolgens een voorbeeldwebtoepassing te implementeren om de gebeurtenissen te ontvangen. Ten slotte activeert u de containerinstallatiekopieën push en delete gebeurtenissen en bekijkt u de nettolading van de gebeurtenis in de voorbeeldtoepassing.

Nadat u de stappen in dit artikel hebt voltooid, worden gebeurtenissen die vanuit uw containerregister naar Event Grid worden verzonden, weergegeven in de voorbeeldweb-app:

Web browser rendering the sample web application with three received events

Als u geen Azure-abonnement hebt, kunt u een gratis Azure-account maken voordat u begint.

Vereisten

  • De Azure CLI-opdrachten in dit artikel zijn opgemaakt voor de Bash-shell . Als u een andere shell gebruikt, zoals PowerShell of opdrachtprompt, moet u mogelijk regelvervolgtekens of variabele toewijzingslijnen dienovereenkomstig aanpassen. In dit artikel worden variabelen gebruikt om de benodigde hoeveelheid bewerking van opdrachten te minimaliseren.

Een brongroep maken

Een Azure-resourcegroep is een logische container waarin u uw Azure-resources implementeert en beheert. Met de volgende opdracht az group create maakt u een resourcegroep met de naam myResourceGroup in de regio Eastus . Als u een andere naam voor uw resourcegroep wilt gebruiken, stelt u deze in RESOURCE_GROUP_NAME op een andere waarde.

RESOURCE_GROUP_NAME=myResourceGroup

az group create --name $RESOURCE_GROUP_NAME --location eastus

Een containerregister maken

Implementeer vervolgens een containerregister in de resourcegroep met de volgende opdrachten. Voordat u de opdracht az acr create uitvoert, stelt u deze in ACR_NAME op een naam voor uw register. De naam moet uniek zijn binnen Azure en mag maximaal 5-50 alfanumerieke tekens bevatten.

ACR_NAME=<acrName>

az acr create --resource-group $RESOURCE_GROUP_NAME --name $ACR_NAME --sku Basic

Zodra het register is gemaakt, retourneert de Azure CLI uitvoer die vergelijkbaar is met het volgende:

{
  "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"
}

Een gebeurteniseindpunt maken

In deze sectie gebruikt u een Resource Manager-sjabloon in een GitHub-opslagplaats om een vooraf gemaakte voorbeeldwebtoepassing te implementeren in Azure-app Service. Later abonneert u zich op de Event Grid-gebeurtenissen van uw register en geeft u deze app op als het eindpunt waarnaar de gebeurtenissen worden verzonden.

Als u de voorbeeld-app wilt implementeren, stelt u SITE_NAME deze in op een unieke naam voor uw web-app en voert u de volgende opdrachten uit. De sitenaam moet uniek zijn binnen Azure omdat deze deel uitmaakt van de FQDN (Fully Qualified Domain Name) van de web-app. In een latere sectie gaat u naar de FQDN van de app in een webbrowser om de gebeurtenissen van uw register weer te geven.

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

Zodra de implementatie is voltooid (dit kan enkele minuten duren), opent u een browser en gaat u naar uw web-app om te controleren of deze wordt uitgevoerd:

http://<your-site-name>.azurewebsites.net

Als het goed is, ziet u dat de voorbeeld-app wordt weergegeven zonder gebeurtenisberichten:

Web browser showing sample web app with no events displayed

De Event Grid-resourceprovider inschakelen

  1. Als u Event Grid in uw Azure-abonnement nog niet eerder hebt gebruikt, moet u mogelijk de Event Grid-resourceprovider registreren. Voer de volgende opdracht uit om de provider te registreren:

    az provider register --namespace Microsoft.EventGrid
    
  2. Het kan even duren voordat de registratie is voltooid. Voer de volgende opdracht uit om de status te controleren:

    az provider show --namespace Microsoft.EventGrid --query "registrationState"
    

    Wanneer registrationStateRegistered is, bent u klaar om door te gaan.

Abonneren op register gebeurtenissen

In Event Grid abonneert u zich op een onderwerp om aan te geven welke gebeurtenissen u wilt bijhouden en waar ze moeten worden verzonden. Met de volgende az eventgrid event-subscription create opdracht wordt geabonneerd op het containerregister dat u hebt gemaakt en geeft u de URL van uw web-app op als het eindpunt waarnaar gebeurtenissen moeten worden verzonden. De omgevingsvariabelen die u in eerdere secties hebt ingevuld, worden hier opnieuw gebruikt, dus er zijn geen wijzigingen vereist.

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

Wanneer het abonnement is voltooid, ziet u uitvoer die er ongeveer als volgt uitziet:

{
  "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"
}

Register gebeurtenissen activeren

Nu de voorbeeld-app actief is en u zich hebt geabonneerd op uw register met Event Grid, kunt u enkele gebeurtenissen genereren. In deze sectie gebruikt u ACR Tasks om een containerinstallatiekopieën te bouwen en naar uw register te pushen. ACR Tasks is een functie van Azure Container Registry waarmee u containerinstallatiekopieën in de cloud kunt bouwen, zonder dat de Docker Engine op uw lokale computer hoeft te worden geïnstalleerd.

Installatiekopieën bouwen en pushen

Voer de volgende Azure CLI-opdracht uit om een containerinstallatiekopieën te bouwen op basis van de inhoud van een GitHub-opslagplaats. ACR Tasks pusht standaard automatisch een installatiekopie naar uw register, waardoor de ImagePushed gebeurtenis wordt gegenereerd.

Notitie

Het Dockerfile dat in het volgende voorbeeld wordt gebruikt, is afhankelijk van een openbare basiscontainerinstallatiekopieën van Docker Hub. Om de betrouwbaarheid te verbeteren bij het gebruik van openbare inhoud, importeert en beheert u de installatiekopieën in een persoonlijk Azure-containerregister en werkt u uw Dockerfile bij om uw privé beheerde basisinstallatiekopieën te gebruiken. Meer informatie over het werken met openbare afbeeldingen.

az acr build --registry $ACR_NAME --image myimage:v1 -f Dockerfile https://github.com/Azure-Samples/acr-build-helloworld-node.git#main

De uitvoer ziet er ongeveer als volgt uit terwijl ACR Tasks wordt gebouwd en vervolgens uw installatiekopieën pusht. De volgende voorbeelduitvoer is afgekapt voor kortheid.

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
...

Als u wilt controleren of de ingebouwde installatiekopie zich in het register bevindt, voert u de volgende opdracht uit om de tags in de myimage opslagplaats weer te geven:

az acr repository show-tags --name $ACR_NAME --repository myimage

De tag v1 van de installatiekopie die u hebt gemaakt, wordt weergegeven in de uitvoer, vergelijkbaar met de volgende:

[
  "v1"
]

De afbeelding verwijderen

Genereer nu een ImageDeleted gebeurtenis door de installatiekopieën te verwijderen met de opdracht az acr repository delete :

az acr repository delete --name $ACR_NAME --image myimage:v1

Als het goed is, ziet u uitvoer die lijkt op het volgende, waarin u wordt gevraagd om bevestiging om het manifest en de bijbehorende installatiekopieën te verwijderen:

This operation will delete the manifest 'sha256:f15fa9d0a69081ba93eee308b0e475a54fac9c682196721e294b2bc20ab23a1b' and all the following images: 'myimage:v1'.
Are you sure you want to continue? (y/n): 

Register gebeurtenissen weergeven

U hebt nu een installatiekopieën naar het register gepusht en vervolgens verwijderd. Navigeer naar uw Event Grid Viewer-web-app en u ziet zowel als ImageDeletedImagePushed gebeurtenissen. Mogelijk ziet u ook een gebeurtenis voor abonnementsvalidatie die is gegenereerd door de opdracht uit te voeren in de sectie Abonneren op register gebeurtenissen .

In de volgende schermopname ziet u de voorbeeld-app met de drie gebeurtenissen en wordt de ImageDeleted gebeurtenis uitgevouwen om de details ervan weer te geven.

Web browser showing the sample app with ImagePushed and ImageDeleted events

Gefeliciteerd! Als u de ImagePushed gebeurtenissen en ImageDeleted gebeurtenissen ziet, verzendt uw register gebeurtenissen naar Event Grid en stuurt Event Grid deze gebeurtenissen door naar het eindpunt van uw web-app.

Resources opschonen

Zodra u klaar bent met de resources die u in deze quickstart hebt gemaakt, kunt u ze allemaal verwijderen met de volgende Azure CLI-opdracht. Wanneer u een resourcegroep verwijdert, worden alle resources die deze bevat definitief verwijderd.

WAARSCHUWING: deze bewerking kan niet ongedaan worden genomen. Zorg ervoor dat u geen resources meer nodig hebt in de groep voordat u de opdracht uitvoert.

az group delete --name $RESOURCE_GROUP_NAME

Event Grid-gebeurtenisschema

U vindt de naslaginformatie over het gebeurtenisberichtschema van Azure Container Registry in de Event Grid-documentatie:

Azure Event Grid-gebeurtenisschema voor Container Registry

Volgende stappen

In deze quickstart hebt u een containerregister geïmplementeerd, een installatiekopie gemaakt met ACR Tasks, deze verwijderd en de gebeurtenissen van uw register uit Event Grid met een voorbeeldtoepassing gebruikt. Ga vervolgens verder met de zelfstudie ACR Tasks voor meer informatie over het bouwen van containerinstallatiekopieën in de cloud, waaronder geautomatiseerde builds op basisinstallatiekopieën bijwerken: