Szybki start: wysyłanie zdarzeń z prywatnego rejestru kontenerów do usługi Event Grid
Azure Event Grid to w pełni zarządzana usługa routingu zdarzeń, która zapewnia jednolite użycie zdarzeń przy użyciu modelu publikowania-subskrybowania. W tym przewodniku Szybki start utworzysz rejestr kontenerów za pomocą interfejsu wiersza polecenia platformy Azure, zasubskrybujesz zdarzenia rejestru, a następnie wdrożysz przykładową aplikację internetową w celu odbierania zdarzeń. Na koniec wyzwalasz obraz push
kontenera i delete
zdarzenia i wyświetlasz ładunek zdarzeń w przykładowej aplikacji.
Po wykonaniu kroków opisanych w tym artykule zdarzenia wysyłane z rejestru kontenerów do usługi Event Grid są wyświetlane w przykładowej aplikacji internetowej:
Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto platformy Azure.
Wymagania wstępne
Użyj środowiska powłoki Bash w usłudze Azure Cloud Shell. Aby uzyskać więcej informacji, zobacz Szybki start dotyczący powłoki Bash w usłudze Azure Cloud Shell.
Jeśli wolisz uruchamiać polecenia referencyjne interfejsu wiersza polecenia lokalnie, zainstaluj interfejs wiersza polecenia platformy Azure. Jeśli korzystasz z systemu Windows lub macOS, rozważ uruchomienie interfejsu wiersza polecenia platformy Azure w kontenerze Docker. Aby uzyskać więcej informacji, zobacz Jak uruchomić interfejs wiersza polecenia platformy Azure w kontenerze platformy Docker.
Jeśli korzystasz z instalacji lokalnej, zaloguj się do interfejsu wiersza polecenia platformy Azure za pomocą polecenia az login. Aby ukończyć proces uwierzytelniania, wykonaj kroki wyświetlane w terminalu. Aby uzyskać inne opcje logowania, zobacz Logowanie się przy użyciu interfejsu wiersza polecenia platformy Azure.
Po wyświetleniu monitu zainstaluj rozszerzenie interfejsu wiersza polecenia platformy Azure podczas pierwszego użycia. Aby uzyskać więcej informacji na temat rozszerzeń, zobacz Korzystanie z rozszerzeń w interfejsie wiersza polecenia platformy Azure.
Uruchom polecenie az version, aby znaleźć zainstalowane wersje i biblioteki zależne. Aby uaktualnić do najnowszej wersji, uruchom polecenie az upgrade.
- Polecenia interfejsu wiersza polecenia platformy Azure w tym artykule są formatowane dla powłoki Bash . Jeśli używasz innej powłoki, takiej jak program PowerShell lub wiersz polecenia, może być konieczne odpowiednie dostosowanie znaków kontynuacji wiersza lub wierszy przypisania zmiennych. W tym artykule użyto zmiennych, aby zminimalizować wymaganą ilość wymaganych edycji poleceń.
Tworzenie grupy zasobów
Grupa zasobów platformy Azure to logiczny kontener, w którym wdrażasz zasoby platformy Azure i zarządzasz nimi. Następujące polecenie az group create tworzy grupę zasobów o nazwie myResourceGroup w regionie eastus . Jeśli chcesz użyć innej nazwy dla grupy zasobów, ustaw RESOURCE_GROUP_NAME
inną wartość.
RESOURCE_GROUP_NAME=myResourceGroup
az group create --name $RESOURCE_GROUP_NAME --location eastus
Tworzenie rejestru kontenerów
Następnie wdróż rejestr kontenerów w grupie zasobów przy użyciu następujących poleceń. Przed uruchomieniem polecenia az acr create ustaw ACR_NAME
na nazwę rejestru. Nazwa musi być unikatowa na platformie Azure i jest ograniczona do 5–50 znaków alfanumerycznych.
ACR_NAME=<acrName>
az acr create --resource-group $RESOURCE_GROUP_NAME --name $ACR_NAME --sku Basic
Po utworzeniu rejestru interfejs wiersza polecenia platformy Azure zwraca dane wyjściowe podobne do następujących:
{
"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"
}
Tworzenie punktu końcowego zdarzenia
W tej sekcji użyjesz szablonu usługi Resource Manager znajdującego się w repozytorium GitHub, aby wdrożyć wstępnie utworzoną przykładową aplikację internetową w celu aplikacja systemu Azure Service. Później subskrybujesz zdarzenia usługi Event Grid rejestru i określisz tę aplikację jako punkt końcowy, do którego są wysyłane zdarzenia.
Aby wdrożyć przykładową aplikację, ustaw SITE_NAME
unikatową nazwę aplikacji internetowej i wykonaj następujące polecenia. Nazwa witryny musi być unikatowa na platformie Azure, ponieważ stanowi część w pełni kwalifikowanej nazwy domeny (FQDN) aplikacji internetowej. W późniejszej sekcji przejdź do nazwy FQDN aplikacji w przeglądarce internetowej, aby wyświetlić zdarzenia rejestru.
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 pomyślnym wdrożeniu (może to potrwać kilka minut), otwórz przeglądarkę i przejdź do aplikacji internetowej, aby upewnić się, że jest ona uruchomiona:
http://<your-site-name>.azurewebsites.net
Powinna zostać wyświetlona przykładowa aplikacja renderowana bez wyświetlanych komunikatów o zdarzeniach:
Włączanie dostawcy zasobów usługi Event Grid
Jeśli usługa Event Grid nie była wcześniej używana w ramach subskrypcji platformy Azure, może być konieczne zarejestrowanie dostawcy zasobów usługi Event Grid. Uruchom następujące polecenie, aby zarejestrować dostawcę:
az provider register --namespace Microsoft.EventGrid
Ukończenie rejestracji może zająć trochę czasu. Aby sprawdzić stan, uruchom następujące polecenie:
az provider show --namespace Microsoft.EventGrid --query "registrationState"
Gdy właściwość
registrationState
uzyska wartośćRegistered
, można kontynuować.
Subskrybowanie zdarzeń rejestru
W usłudze Event Grid subskrybujesz temat , aby poinformować go o zdarzeniach, które chcesz śledzić i gdzie je wysłać. Następujące az eventgrid event-subscription create
polecenie subskrybuje utworzony rejestr kontenerów i określa adres URL aplikacji internetowej jako punkt końcowy, do którego ma wysyłać zdarzenia. Zmienne środowiskowe wypełnione we wcześniejszych sekcjach są ponownie używane w tym miejscu, więc nie są wymagane żadne zmiany.
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 zakończeniu subskrypcji powinny zostać wyświetlone dane wyjściowe podobne do następujących:
{
"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"
}
Wyzwalanie zdarzeń rejestru
Teraz, gdy przykładowa aplikacja jest uruchomiona i zasubskrybujesz rejestr za pomocą usługi Event Grid, możesz wygenerować niektóre zdarzenia. W tej sekcji użyjesz usługi ACR Tasks do skompilowania i wypchnięcia obrazu kontenera do rejestru. Usługa ACR Tasks to funkcja usługi Azure Container Registry, która umożliwia tworzenie obrazów kontenerów w chmurze bez konieczności instalowania aparatu platformy Docker na komputerze lokalnym.
Kompilowanie i wypychanie obrazu
Wykonaj następujące polecenie interfejsu wiersza polecenia platformy Azure, aby skompilować obraz kontenera z zawartości repozytorium GitHub. Domyślnie usługa ACR Tasks automatycznie wypycha pomyślnie skompilowany obraz do rejestru, co generuje ImagePushed
zdarzenie.
Uwaga
Plik Dockerfile używany w poniższym przykładzie zależy od publicznego obrazu kontenera podstawowego z usługi Docker Hub. Aby zwiększyć niezawodność podczas korzystania z zawartości publicznej, zaimportuj obraz i zarządzaj nim w prywatnym rejestrze kontenerów platformy Azure, a następnie zaktualizuj plik Dockerfile do korzystania z obrazu podstawowego zarządzanego prywatnie. Dowiedz się więcej o pracy z obrazami publicznymi.
az acr build --registry $ACR_NAME --image myimage:v1 -f Dockerfile https://github.com/Azure-Samples/acr-build-helloworld-node.git#main
Powinny zostać wyświetlone dane wyjściowe podobne do poniższych podczas kompilacji usługi ACR Tasks, a następnie wypychania obrazu. Następujące przykładowe dane wyjściowe zostały obcięte w celu zwięzłości.
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
...
Aby sprawdzić, czy wbudowany obraz znajduje się w rejestrze, wykonaj następujące polecenie, aby wyświetlić tagi w myimage
repozytorium:
az acr repository show-tags --name $ACR_NAME --repository myimage
W danych wyjściowych powinien zostać wyświetlony tag "v1" utworzonego obrazu, podobny do następującego:
[
"v1"
]
Usuwanie obrazu
Teraz wygeneruj ImageDeleted
zdarzenie, usuwając obraz za pomocą polecenia az acr repository delete :
az acr repository delete --name $ACR_NAME --image myimage:v1
Powinny zostać wyświetlone dane wyjściowe podobne do następujących, z prośbą o potwierdzenie usunięcia manifestu i skojarzonych obrazów:
This operation will delete the manifest 'sha256:f15fa9d0a69081ba93eee308b0e475a54fac9c682196721e294b2bc20ab23a1b' and all the following images: 'myimage:v1'.
Are you sure you want to continue? (y/n):
Wyświetlanie zdarzeń rejestru
Obraz został wypchnięty do rejestru, a następnie usunięty. Przejdź do aplikacji internetowej Podgląd usługi Event Grid i powinny być widoczne zdarzenia ImageDeleted
i ImagePushed
. Może również zostać wyświetlone zdarzenie weryfikacji subskrypcji wygenerowane przez wykonanie polecenia w sekcji Subskrybowanie zdarzeń rejestru.
Poniższy zrzut ekranu przedstawia przykładową aplikację z trzema zdarzeniami, a ImageDeleted
zdarzenie zostało rozwinięte, aby wyświetlić jego szczegóły.
Gratulacje! Jeśli zobaczysz ImagePushed
zdarzenia i ImageDeleted
, rejestr wysyła zdarzenia do usługi Event Grid, a usługa Event Grid przekazuje te zdarzenia do punktu końcowego aplikacji internetowej.
Czyszczenie zasobów
Po zakończeniu pracy z zasobami utworzonymi w tym przewodniku Szybki start możesz je usunąć za pomocą następującego polecenia interfejsu wiersza polecenia platformy Azure. Po usunięciu grupy zasobów wszystkie zawarte w niej zasoby zostaną trwale usunięte.
OSTRZEŻENIE: Ta operacja jest nieodwracalna. Przed uruchomieniem polecenia upewnij się, że żadne zasoby w grupie nie są już potrzebne.
az group delete --name $RESOURCE_GROUP_NAME
Schemat zdarzeń usługi Event Grid
Informacje o schemacie komunikatów o zdarzeniach usługi Azure Container Registry można znaleźć w dokumentacji usługi Event Grid:
Schemat zdarzeń usługi Azure Event Grid dla usługi Container Registry
Następne kroki
W tym przewodniku Szybki start wdrożono rejestr kontenerów, utworzono obraz z usługą ACR Tasks, usunięto go i zużyliśmy zdarzenia rejestru z usługi Event Grid z przykładową aplikacją. Następnie przejdź do samouczka usługi ACR Tasks, aby dowiedzieć się więcej na temat tworzenia obrazów kontenerów w chmurze, w tym automatycznych kompilacji w ramach aktualizacji obrazu podstawowego: