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:
Als u geen Azure-abonnement hebt, kunt u een gratis Azure-account maken voordat u begint.
Vereisten
Gebruik de Bash-omgeving in Azure Cloud Shell. Zie quickstart voor Bash in Azure Cloud Shell voor meer informatie.
Installeer de Azure CLI, indien gewenst, om CLI-referentieopdrachten uit te voeren. Als u in Windows of macOS werkt, kunt u Azure CLI uitvoeren in een Docker-container. Zie De Azure CLI uitvoeren in een Docker-container voor meer informatie.
Als u een lokale installatie gebruikt, meldt u zich aan bij Azure CLI met behulp van de opdracht az login. Volg de stappen die worden weergegeven in de terminal, om het verificatieproces te voltooien. Raadpleeg Aanmelden bij Azure CLI voor aanvullende aanmeldingsopties.
Installeer de Azure CLI-extensie bij het eerste gebruik, wanneer u hierom wordt gevraagd. Raadpleeg Extensies gebruiken met Azure CLI voor meer informatie over extensies.
Voer az version uit om de geïnstalleerde versie en afhankelijke bibliotheken te vinden. Voer az upgrade uit om te upgraden naar de nieuwste versie.
- 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:
De Event Grid-resourceprovider inschakelen
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
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
registrationState
Registered
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 ImageDeleted
ImagePushed
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.
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: