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:
Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet Azure před tím, než začnete.
Požadavky
Použijte prostředí Bash v Azure Cloud Shellu. Další informace najdete v tématu Rychlý start pro Bash v Azure Cloud Shellu.
Pokud dáváte přednost místnímu spouštění referenčních příkazů rozhraní příkazového řádku, nainstalujte Azure CLI. Pokud používáte Windows nebo macOS, zvažte spuštění Azure CLI v kontejneru Docker. Další informace najdete v tématu Jak spustit Azure CLI v kontejneru Dockeru.
Pokud používáte místní instalaci, přihlaste se k Azure CLI pomocí příkazu az login. Pokud chcete dokončit proces ověřování, postupujte podle kroků zobrazených na terminálu. Další možnosti přihlášení najdete v tématu Přihlášení pomocí Azure CLI.
Po zobrazení výzvy nainstalujte rozšíření Azure CLI při prvním použití. Další informace o rozšířeních najdete v tématu Využití rozšíření v Azure CLI.
Spuštěním příkazu az version zjistěte verzi a závislé knihovny, které jsou nainstalované. Pokud chcete upgradovat na nejnovější verzi, spusťte az upgrade.
- 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í:
Povolení poskytovatele prostředků Event Gridu
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
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
jeRegistered
, 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.
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í: