Kierowanie zdarzeń w chmurze do elementów webhook za pomocą usługi Azure Event Grid na platformie Kubernetes
W tym przewodniku Szybki start utworzysz temat w usłudze Event Grid na platformie Kubernetes, utworzysz subskrypcję tematu, a następnie wyślesz przykładowe zdarzenie do tematu w celu przetestowania scenariusza.
Ważne
Usługa Event Grid na platformie Kubernetes z usługą Azure Arc jest obecnie dostępna w publicznej wersji zapoznawczej. Ta wersja zapoznawcza nie jest objęta umową dotyczącą poziomu usług i nie zalecamy korzystania z niej w przypadku obciążeń produkcyjnych. Niektóre funkcje mogą być nieobsługiwane lub ograniczone. Aby uzyskać więcej informacji, zobacz Uzupełniające warunki korzystania z wersji zapoznawczych platformy Microsoft Azure.
Wymagania wstępne
- Połącz klaster Kubernetes z usługą Azure Arc.
- Zainstaluj rozszerzenie usługi Event Grid w klastrze Kubernetes. To rozszerzenie wdraża usługę Event Grid w klastrze Kubernetes.
Tworzenie lokalizacji niestandardowej
Jako rozszerzenie lokalizacji platformy Azure lokalizacja niestandardowa umożliwia używanie klastra Kubernetes z włączoną usługą Azure Arc jako lokalizacji docelowej do wdrażania zasobów, takich jak tematy usługi Event Grid. Lokalizacja niestandardowa reprezentuje przestrzeń nazw w klastrze i jest miejscem wdrażania tematów i subskrypcji zdarzeń. W tej sekcji utworzysz lokalizację niestandardową.
Zadeklaruj następujące zmienne, aby przechowywać wartości klastra, grupy zasobów i niestandardowych nazw lokalizacji usługi Azure Arc. Skopiuj te instrukcje do edytora, zastąp wartości, a następnie skopiuj/wklej do okna powłoki bash.
resourcegroupname="<AZURE RESOURCE GROUP NAME>" arcclustername="<AZURE ARC CLUSTER NAME>" customlocationname="<CUSTOM LOCATION NAME>"
Pobierz identyfikator zasobu klastra połączonego z usługą Azure Arc. Przed uruchomieniem polecenia zaktualizuj wartości nazwy klastra usługi Azure Arc i parametrów grupy zasobów.
hostresourceid=$(az connectedk8s show -n $arcclustername -g $resourcegroupname --query id -o tsv)
Pobierz identyfikator zasobu rozszerzenia usługi Event Grid. W tym kroku przyjęto założenie, że nazwa nadana dla rozszerzenia usługi Event Grid to eventgrid-ext. Przed uruchomieniem polecenia zaktualizuj nazwy klastra i grup zasobów usługi Azure Arc.
clusterextensionid=$(az k8s-extension show --name eventgrid-ext --cluster-type connectedClusters -c $arcclustername -g $resourcegroupname --query id -o tsv)
Utwórz lokalizację niestandardową przy użyciu dwóch wartości z poprzedniego kroku. Przed uruchomieniem polecenia zaktualizuj nazwy lokalizacji niestandardowej i grupy zasobów.
az customlocation create -n $customlocationname -g $resourcegroupname --namespace arc --host-resource-id $hostresourceid --cluster-extension-ids $clusterextensionid
Pobierz identyfikator zasobu lokalizacji niestandardowej. Przed uruchomieniem polecenia zaktualizuj nazwę lokalizacji niestandardowej.
customlocationid=$(az customlocation show -n $customlocationname -g $resourcegroupname --query id -o tsv)
Aby uzyskać więcej informacji na temat tworzenia lokalizacji niestandardowych, zobacz Tworzenie lokalizacji niestandardowych i zarządzanie nimi na platformie Kubernetes z obsługą usługi Azure Arc.
Tworzenie tematu
W tej sekcji utworzysz temat w lokalizacji niestandardowej utworzonej w poprzednim kroku. Przed uruchomieniem polecenia zaktualizuj nazwy grup zasobów i tematu usługi Event Grid. Zaktualizuj lokalizację, jeśli używasz lokalizacji innej niż Wschodnie stany USA.
Zadeklaruj zmienną do przechowywania nazwy tematu.
topicname="<TOPIC NAME>"
Uruchom następujące polecenie, aby utworzyć temat.
az eventgrid topic create -g $resourcegroupname --name $topicname --kind azurearc --extended-location-name $customlocationid --extended-location-type customlocation --input-schema CloudEventSchemaV1_0 --location $region
Aby uzyskać więcej informacji na temat polecenia interfejsu wiersza polecenia, zobacz
az eventgrid topic create
.
Tworzenie punktu końcowego komunikatów
Przed utworzeniem subskrypcji dla tematu niestandardowego utwórz punkt końcowy dla komunikatu o zdarzeniu. Zazwyczaj w punkcie końcowym akcje są wykonywane na podstawie danych zdarzenia. Aby uprościć ten przewodnik Szybki start, wdrożysz wstępnie utworzoną aplikację internetową, która wyświetla komunikaty o zdarzeniach. Wdrożone rozwiązanie zawiera plan usługi App Service, aplikację internetową usługi App Service i kod źródłowy z repozytorium GitHub.
Na stronie artykułu wybierz pozycję Wdróż na platformie Azure , aby wdrożyć rozwiązanie w ramach subskrypcji. W witrynie Azure Portal podaj wartości parametrów.
Wdrożenie może potrwać kilka minut. Po pomyślnym wdrożeniu należy wyświetlić aplikację sieci Web i upewnić się, że jest uruchomiona. W przeglądarce sieci Web przejdź do:
https://<your-site-name>.azurewebsites.net
Jeśli wdrożenie zakończy się niepowodzeniem, sprawdź komunikat o błędzie. Może to być spowodowane tym, że nazwa witryny sieci Web jest już zajęta. Ponownie wdróż szablon i wybierz inną nazwę witryny.
Zobaczysz witrynę, w której nie opublikowano jeszcze żadnych zdarzeń.
Tworzenie subskrypcji
Subskrybenci mogą rejestrować się w przypadku zdarzeń opublikowanych w temacie. Aby otrzymać dowolne zdarzenie, musisz utworzyć subskrypcję usługi Event Grid, aby uzyskać interesujący cię temat. Subskrypcja zdarzeń definiuje miejsce docelowe, do którego są wysyłane te zdarzenia. Aby dowiedzieć się więcej o wszystkich obsługiwanych miejscach docelowych lub programach obsługi, zobacz Procedury obsługi zdarzeń.
Aby utworzyć subskrypcję zdarzeń z miejscem docelowym elementu webhook (punkt końcowy HTTPS), wprowadź nazwę subskrypcji zdarzeń, zaktualizuj nazwę witryny internetowej i uruchom następujące polecenie.
topicid=$(az eventgrid topic show --name $topicname --resource-group $resourcegroupname --query id -o tsv)
az eventgrid event-subscription create --name <EVENT SUBSCRIPTION NAME> --source-resource-id $topicid --endpoint https://<SITE NAME>.azurewebsites.net/api/updates
Aby uzyskać więcej informacji na temat polecenia interfejsu wiersza polecenia, zobacz az eventgrid event-subscription create
.
Wysyłanie zdarzeń do tematu
Uruchom następujące polecenie, aby uzyskać punkt końcowy tematu: Po skopiowaniu i wklejeniu polecenia zaktualizuj nazwę tematu i nazwę grupy zasobów przed uruchomieniem polecenia. Przykładowe zdarzenia są publikowane w tym punkcie końcowym tematu.
az eventgrid topic show --name $topicname -g $resourcegroupname --query "endpoint" --output tsv
Uruchom następujące polecenie, aby uzyskać klucz dla tematu niestandardowego: po skopiowaniu i wklejeniu polecenia zaktualizuj nazwę tematu i nazwę grupy zasobów przed uruchomieniem polecenia. Jest to klucz podstawowy tematu. Aby uzyskać ten klucz z witryny Azure Portal, przejdź do karty Klucze dostępu na stronie Temat usługi Event Grid. Aby można było opublikować zdarzenie w temacie niestandardowym, potrzebny jest klucz dostępu.
az eventgrid topic key list --name $topicname -g $resourcegroupname --query "key1" --output tsv
Uruchom następujące polecenie Curl , aby opublikować zdarzenie. Przed uruchomieniem polecenia określ adres URL punktu końcowego i klucz z kroku 1 i 2.
curl -k -X POST -H "Content-Type: application/cloudevents-batch+json" -H "aeg-sas-key: <KEY_FROM_STEP_2>" -g <ENDPOINT_URL_FROM_STEP_1> \ -d '[{ "specversion": "1.0", "type" : "orderCreated", "source": "myCompanyName/us/webCommerceChannel/myOnlineCommerceSiteBrandName", "id" : "eventId-n", "time" : "2020-12-25T20:54:07+00:00", "subject" : "account/acct-123224/order/o-123456", "dataSchema" : "1.0", "data" : { "orderId" : "123", "orderType" : "PO", "reference" : "https://www.myCompanyName.com/orders/123" } }]'
Jeśli adres URL punktu końcowego tematu z kroku 1 jest prywatnym adresem IP, na przykład w przypadku, gdy typ usługi brokera usługi usługi Event Grid to ClusterIP, można wykonać polecenie Curl z poziomu innego zasobnika w klastrze, aby mieć dostęp do tego adresu IP. Możesz na przykład wykonać następujące czynności:
Utwórz plik manifestu z następującą konfiguracją. Możesz chcieć dostosować
dnsPolicy
je zgodnie z potrzebami. Aby uzyskać więcej informacji, zobacz DNS dla usług i zasobników.apiVersion: v1 kind: Pod metadata: name: test-pod2 spec: containers: - name: nginx image: nginx hostNetwork: true dnsPolicy: ClusterFirstWithHostNet
Utwórz zasobnik.
kubectl apply -f <name_of_your_yaml_manifest_file>
Sprawdź, czy zasobnik jest uruchomiony.
kubectl get pod test-pod
Uruchamianie sesji powłoki z kontenera
kubectl exec --stdin --tty test-pod -- /bin/bash
W tym momencie masz sesję powłoki z uruchomionego kontenera w klastrze, z którego można wykonać polecenie Curl opisane we wcześniejszym kroku.
Uwaga
Aby dowiedzieć się, jak wysyłać zdarzenia w chmurze przy użyciu języków programowania, zobacz następujące przykłady:
Weryfikowanie w podglądzie usługi Event Grid
Zdarzenie zostało wyzwolone, a usługa Event Grid wysłała komunikat do punktu końcowego skonfigurowanego podczas subskrybowania. Wyświetl aplikację sieci Web, aby wyświetlić właśnie wysłane zdarzenie.
Następne kroki
Odwiedź następujące artykuły:
- Programy obsługi zdarzeń i miejsca docelowe — zawierają informacje o wszystkich programach obsługi zdarzeń i miejscach docelowych obsługiwanych przez usługę Event Grid na platformie Kubernetes.
- Filtrowanie zdarzeń — zawiera informacje o filtrowaniu zdarzeń w subskrypcjach zdarzeń.