Sdílet prostřednictvím


Rychlý start: Odesílání událostí z privátního registru kontejneru do event Gridu

Azure Event Grid je plně spravovaná služba směrování událostí, která poskytuje jednotné využití událostí pomocí modelu publikování a odběru. V tomto rychlém startu pomocí Azure CLI vytvoříte registr kontejneru, přihlásíte se k odběru událostí registru a pak nasadíte ukázkovou webovou aplikaci pro příjem událostí. Nakonec aktivujete image push kontejneru a delete události a zobrazíte datovou část události v ukázkové aplikaci.

Po dokončení kroků v tomto článku se události odeslané z registru kontejneru do Event Gridu zobrazí v ukázkové webové aplikaci:

Webový prohlížeč vykresluje ukázkovou webovou aplikaci se třemi přijatými událostmi.

Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet Azure před tím, než začnete.

Požadavky

  • Příkazy Azure CLI v tomto článku jsou formátované pro prostředí Bash . Pokud používáte jiné prostředí, jako je PowerShell nebo příkazový řádek, budete možná muset odpovídajícím způsobem upravit znaky pokračování řádku nebo řádky přiřazení proměnných. Tento článek používá proměnné k minimalizaci požadovaného množství úprav příkazů.

Vytvoření skupiny zdrojů

Skupina prostředků Azure je logický kontejner, ve kterém nasazujete a spravujete prostředky Azure. Následující příkaz az group create vytvoří skupinu prostředků myResourceGroup v oblasti eastus. Pokud chcete pro skupinu prostředků použít jiný název, nastavte RESOURCE_GROUP_NAME na jinou hodnotu.

RESOURCE_GROUP_NAME=myResourceGroup

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

Vytvoření registru kontejneru

Dále nasaďte registr kontejneru do skupiny prostředků pomocí následujících příkazů. Před spuštěním příkazu az acr create nastavte ACR_NAME název registru. Název musí být jedinečný v rámci Azure a je omezený na 5 až 50 alfanumerických znaků.

ACR_NAME=<acrName>

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

Po vytvoření registru vrátí Azure CLI výstup podobný následujícímu:

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

Vytvoření koncového bodu události

V této části použijete šablonu Resource Manageru umístěnou v úložišti GitHub k nasazení předem připravené ukázkové webové aplikace do služby Aplikace Azure Service. Později se přihlásíte k odběru událostí služby Event Grid vašeho registru a určíte tuto aplikaci jako koncový bod, do kterého se události odesílají.

Pokud chcete nasadit ukázkovou aplikaci, nastavte SITE_NAME pro webovou aplikaci jedinečný název a spusťte následující příkazy. Název webu musí být v rámci Azure jedinečný, protože je součástí plně kvalifikovaného názvu domény (FQDN) webové aplikace. V další části přejdete do plně kvalifikovaného názvu domény aplikace ve webovém prohlížeči a zobrazíte události registru.

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

Po úspěšném nasazení (může to trvat několik minut), otevřete prohlížeč a přejděte do webové aplikace, abyste měli jistotu, že je spuštěná:

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

Měla by se zobrazit ukázková aplikace vykreslená bez zobrazených zpráv událostí:

Webový prohlížeč zobrazující ukázkovou webovou aplikaci bez zobrazených událostí

Povolení poskytovatele prostředků Event Gridu

  1. Pokud jste službu Event Grid ve svém předplatném Azure ještě nepoužívali, možná budete muset zaregistrovat poskytovatele prostředků Event Gridu. Spuštěním následujícího příkazu zaregistrujte poskytovatele:

    az provider register --namespace Microsoft.EventGrid
    
  2. Dokončení registrace může chvíli trvat. Pokud chcete zkontrolovat stav, spusťte následující příkaz:

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

    Jakmile registrationState je Registered, můžete pokračovat.

Přihlášení k odběru událostí registru

Ve službě Event Grid se přihlásíte k odběru tématu , abyste mu řekli, které události chcete sledovat a kam je chcete odeslat. Následující az eventgrid event-subscription create příkaz se přihlásí k odběru registru kontejneru, který jste vytvořili, a jako koncový bod, do kterého má odesílat události, určuje adresu URL vaší webové aplikace. Tady se znovu používají proměnné prostředí, které jste naplnili v předchozích částech, takže nejsou potřeba žádné úpravy.

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

Po dokončení předplatného by se měl zobrazit výstup podobný následujícímu:

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

Aktivace událostí registru

Teď, když je ukázková aplikace spuštěná a přihlásili jste se k odběru registru pomocí Event Gridu, jste připraveni vygenerovat některé události. V této části použijete ACR Tasks k sestavení a nasdílení image kontejneru do registru. ACR Tasks je funkce služby Azure Container Registry, která umožňuje vytvářet image kontejnerů v cloudu, aniž byste museli mít na místním počítači nainstalovaný Modul Dockeru.

Sestavení a nasdílení image

Spuštěním následujícího příkazu Azure CLI sestavte image kontejneru z obsahu úložiště GitHub. Ve výchozím nastavení služba ACR Tasks automaticky odešle úspěšně sestavenou image do vašeho registru, která vygeneruje ImagePushed událost.

Poznámka:

Soubor Dockerfile použitý v následujícím příkladu závisí na imagi veřejného základního kontejneru z Docker Hubu. Pokud chcete zvýšit spolehlivost při použití veřejného obsahu, naimportujte a spravujte image v privátním registru kontejnerů Azure a aktualizujte soubor Dockerfile tak, aby používal privátní spravovanou základní image. Přečtěte si další informace o práci s veřejnými imagemi.

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

Při sestavování ACR Tasks a následném nasdílení image by se měl zobrazit výstup podobný následujícímu. Následující ukázkový výstup byl zkrácen pro stručnost.

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

Pokud chcete ověřit, že je integrovaná image ve vašem registru, spusťte následující příkaz, který zobrazí značky v úložišti myimage :

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

Značka "v1" image, kterou jste vytvořili, by se měla zobrazit ve výstupu, podobně jako v následujícím příkladu:

[
  "v1"
]

Odstranění obrázku

Teď vygenerujte ImageDeleted událost odstraněním image pomocí příkazu az acr repository delete :

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

Měl by se zobrazit výstup podobný následujícímu, a požádat o potvrzení odstranění manifestu a přidružených imagí:

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

Zobrazení událostí registru

Teď jste do registru nasdíleli image a pak ji odstranili. Přejděte do webové aplikace Event Grid Viewer a měli byste vidět události ImageDeleted i ImagePushed události. Může se také zobrazit událost ověření odběru vygenerovaná spuštěním příkazu v části Přihlášení k odběru událostí registru.

Následující snímek obrazovky ukazuje ukázkovou aplikaci se třemi událostmi a ImageDeleted událost se rozbalí a zobrazí její podrobnosti.

Webový prohlížeč zobrazující ukázkovou aplikaci s událostmi ImagePushed a ImageDeleted

Gratulujeme! Pokud se zobrazí ImagePushed události a ImageDeleted události, registr odesílá události do Event Gridu a Event Grid tyto události předává do koncového bodu webové aplikace.

Vyčištění prostředků

Až budete hotovi s prostředky, které jste vytvořili v tomto rychlém startu, můžete je všechny odstranit pomocí následujícího příkazu Azure CLI. Když odstraníte skupinu prostředků, všechny prostředky, které obsahuje, se trvale odstraní.

UPOZORNĚNÍ: Tato operace je nevratná. Než spustíte příkaz, ujistěte se, že už žádné prostředky ve skupině nepotřebujete.

az group delete --name $RESOURCE_GROUP_NAME

Schéma událostí služby Event Grid

Referenční informace ke schématu zpráv událostí služby Azure Container Registry najdete v dokumentaci ke službě Event Grid:

Schéma událostí služby Azure Event Grid pro Container Registry

Další kroky

V tomto rychlém startu jste nasadili registr kontejneru, vytvořili image s ACR Tasks, odstranili ji a s využitím událostí registru z Event Gridu jste použili ukázkovou aplikaci. V dalším kroku přejděte k kurzu ACR Tasks a získejte další informace o vytváření imagí kontejnerů v cloudu, včetně automatizovaných sestavení na základní aktualizaci imagí: