Snabbstart: Skicka händelser från ett privat containerregister till Event Grid

Azure Event Grid är en fullständigt hanterad händelseroutningstjänst som ger enhetlig händelseförbrukning med hjälp av en publiceringsprenumereringsmodell. I den här snabbstarten använder du Azure CLI för att skapa ett containerregister, prenumerera på registerhändelser och sedan distribuera ett exempelwebbprogram för att ta emot händelserna. Slutligen utlöser du containeravbildning push och delete händelser och visar händelsenyttolasten i exempelprogrammet.

När du har slutfört stegen i den här artikeln visas händelser som skickas från containerregistret till Event Grid i exempelwebbappen:

Web browser rendering the sample web application with three received events

Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt Azure-konto innan du börjar.

Förutsättningar

  • Azure CLI-kommandona i den här artikeln är formaterade för Bash-gränssnittet . Om du använder ett annat gränssnitt som PowerShell eller Kommandotolken kan du behöva justera radfortsättningstecken eller variabeltilldelningsrader i enlighet med detta. Den här artikeln använder variabler för att minimera mängden kommandoredigering som krävs.

Skapa en resursgrupp

En Azure-resursgrupp är en logisk container där du distribuerar och hanterar dina Azure-resurser. Följande az group create-kommando skapar en resursgrupp med namnet myResourceGroup i regionen eastus . Om du vill använda ett annat namn för resursgruppen anger du RESOURCE_GROUP_NAME ett annat värde.

RESOURCE_GROUP_NAME=myResourceGroup

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

Skapa ett containerregister

Distribuera sedan ett containerregister till resursgruppen med följande kommandon. Innan du kör kommandot az acr create anger du ACR_NAME ett namn för registret. Namnet måste vara unikt i Azure och är begränsat till 5–50 alfanumeriska tecken.

ACR_NAME=<acrName>

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

När registret har skapats returnerar Azure CLI utdata som liknar följande:

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

Skapa en händelseslutpunkt

I det här avsnittet använder du en Resource Manager-mall som finns på en GitHub-lagringsplats för att distribuera ett fördefiniert exempelwebbprogram till Azure App Service. Senare prenumererar du på registrets Event Grid-händelser och anger den här appen som den slutpunkt som händelserna skickas till.

Om du vill distribuera exempelappen anger du SITE_NAME ett unikt namn för webbappen och kör följande kommandon. Webbplatsnamnet måste vara unikt i Azure eftersom det ingår i webbappens fullständigt kvalificerade domännamn (FQDN). I ett senare avsnitt navigerar du till appens fullständiga domännamn i en webbläsare för att visa registrets händelser.

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

När distributionen har slutförts (det kan ta några minuter) öppnar du en webbläsare och går till webbappen för att kontrollera att den körs:

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

Du bör se exempelappen renderad utan att några händelsemeddelanden visas:

Web browser showing sample web app with no events displayed

Aktivera Event Grid-resursprovidern

  1. Om du inte tidigare har använt Event Grid i din Azure-prenumeration kan du behöva registrera Event Grid-resursprovidern. Registrera providern genom att köra följande kommando:

    az provider register --namespace Microsoft.EventGrid
    
  2. Det kan ta en stund innan registreringen är klar. Kontrollera statusen genom att köra följande kommando:

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

    När registrationState är Registered kan du fortsätta.

Prenumerera på registerhändelser

I Event Grid prenumererar du på ett ämne för att berätta vilka händelser du vill spåra och var de ska skickas. Följande az eventgrid event-subscription create kommando prenumererar på containerregistret som du skapade och anger webbappens URL som den slutpunkt som den ska skicka händelser till. Miljövariablerna som du fyllde i i tidigare avsnitt återanvänds här, så inga ändringar krävs.

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

När prenumerationen har slutförts bör du se utdata som liknar följande:

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

Utlösa registerhändelser

Nu när exempelappen är igång och du har prenumererat på ditt register med Event Grid är du redo att generera vissa händelser. I det här avsnittet använder du ACR Tasks för att skapa och push-överföra en containeravbildning till registret. ACR Tasks är en funktion i Azure Container Registry som gör att du kan skapa containeravbildningar i molnet, utan att behöva Docker-motorn installerad på den lokala datorn.

Skapa och skicka avbildning

Kör följande Azure CLI-kommando för att skapa en containeravbildning från innehållet i en GitHub-lagringsplats. Som standard skickar ACR Tasks automatiskt en avbildning som skapats till registret, vilket genererar ImagePushed händelsen.

Kommentar

Den Dockerfile som används i följande exempel beror på en offentlig bascontaineravbildning från Docker Hub. För att förbättra tillförlitligheten när du använder offentligt innehåll importerar och hanterar du avbildningen i ett privat Azure-containerregister och uppdaterar Dockerfile så att den använder din privat hanterade basavbildning. Läs mer om hur du arbetar med offentliga avbildningar.

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

Du bör se utdata som liknar följande medan ACR Tasks bygger och sedan push-överför avbildningen. Följande exempelutdata har trunkerats för korthet.

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

Kontrollera att den skapade avbildningen finns i registret genom att köra följande kommando för att visa taggarna på lagringsplatsen myimage :

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

Taggen "v1" för avbildningen som du skapade bör visas i utdata, ungefär så här:

[
  "v1"
]

Ta bort bilden

Generera nu en ImageDeleted händelse genom att ta bort avbildningen med kommandot az acr repository delete :

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

Du bör se utdata som liknar följande och be om bekräftelse för att ta bort manifestet och tillhörande bilder:

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

Visa registerhändelser

Nu har du push-överfört en avbildning till registret och sedan tagit bort den. Gå till event grid viewer-webbappen så bör du se både ImageDeleted och ImagePushed händelser. Du kan också se en prenumerationsverifieringshändelse som genereras genom att köra kommandot i avsnittet Prenumerera på registerhändelser .

Följande skärmbild visar exempelappen med de tre händelserna och ImageDeleted händelsen expanderas för att visa dess information.

Web browser showing the sample app with ImagePushed and ImageDeleted events

Gratulerar! Om du ser ImagePushed händelserna och ImageDeleted skickar registret händelser till Event Grid och Event Grid vidarebefordrar dessa händelser till webbappens slutpunkt.

Rensa resurser

När du är klar med de resurser som du skapade i den här snabbstarten kan du ta bort alla med följande Azure CLI-kommando. När du tar bort en resursgrupp tas alla resurser som den innehåller bort permanent.

VARNING! Den här åtgärden kan inte ångras. Se till att du inte längre behöver någon av resurserna i gruppen innan du kör kommandot.

az group delete --name $RESOURCE_GROUP_NAME

Event Grid-händelseschema

Du hittar schemareferensen för Azure Container Registry-händelsemeddelandet i Event Grid-dokumentationen:

Azure Event Grid-händelseschema för Container Registry

Nästa steg

I den här snabbstarten distribuerade du ett containerregister, skapade en avbildning med ACR Tasks, tog bort den och har använt registrets händelser från Event Grid med ett exempelprogram. Gå sedan vidare till självstudien ACR Tasks för att lära dig mer om att skapa containeravbildningar i molnet, inklusive automatiserade versioner av basavbildningsuppdatering: