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:

Web browser rendering the sample web application with three received events

Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto platformy Azure.

Wymagania wstępne

  • 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:

Web browser showing sample web app with no events displayed

Włączanie dostawcy zasobów usługi Event Grid

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

Web browser showing the sample app with ImagePushed and ImageDeleted events

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: