Směrování událostí cloudu na Webhooky pomocí Azure Event Grid v Kubernetes
V tomto rychlém startu vytvoříte téma v Event Grid v Kubernetes, vytvoříte odběr tohoto tématu a potom do tématu odešlete ukázkovou událost, která tento scénář otestuje.
Důležité
Event Grid v Kubernetes s Azure Arc je aktuálně ve verzi Public Preview. Tato verze Preview se poskytuje bez smlouvy o úrovni služeb a nedoporučuje se pro úlohy v produkčním prostředí. Některé funkce se nemusí podporovat nebo mohou mít omezené možnosti. Další informace najdete v dodatečných podmínkách použití pro verze Preview v Microsoft Azure.
Požadavky
- Připojení cluster Kubernetes do Azure Arc.
- Nainstaluje rozšíření Event Grid v clusteru Kubernetes. Toto rozšíření nasadí Event Grid do clusteru Kubernetes.
Vytvoření vlastního umístění
Jako rozšíření umístění Azure vám vlastní umístění umožňuje používat cluster Kubernetes s podporou ARC Azure jako cílové umístění pro nasazování prostředků, jako jsou Event Grid témata. Vlastní umístění představuje obor názvů v clusteru a je místo, kde jsou nasazena témata a odběry událostí. V této části vytvoříte vlastní umístění.
Deklarujete následující proměnné pro uchovávání hodnot clusteru Azure ARC, skupiny prostředků a názvů vlastních umístění. Zkopírujte tyto příkazy do editoru, nahraďte hodnoty a pak je zkopírujte a vložte do okna bash.
resourcegroupname="<AZURE RESOURCE GROUP NAME>" arcclustername="<AZURE ARC CLUSTER NAME>" customlocationname="<CUSTOM LOCATION NAME>"Získejte ID prostředku clusteru připojeného k Arc Azure. Před spuštěním příkazu aktualizujte hodnoty pro název clusteru ARC Azure a parametry skupiny prostředků.
hostresourceid=$(az connectedk8s show -n $arcclustername -g $resourcegroupname --query id -o tsv)Získá ID prostředku rozšíření Event Grid. Tento krok předpokládá, že název, který jste zadali pro rozšíření Event Grid, je eventgrid-EXT. Před spuštěním příkazu aktualizujte názvy clusterů a skupin prostředků Azure ARC.
clusterextensionid=$(az k8s-extension show --name eventgrid-ext --cluster-type connectedClusters -c $arcclustername -g $resourcegroupname --query id -o tsv)Vytvořte vlastní umístění pomocí výše uvedených dvou hodnot. Před spuštěním příkazu aktualizujte vlastní umístění a názvy skupin prostředků.
az customlocation create -n $customlocationname -g $resourcegroupname --namespace arc --host-resource-id $hostresourceid --cluster-extension-ids $clusterextensionidZískejte ID prostředku pro vlastní umístění. Před spuštěním příkazu aktualizujte název vlastního umístění.
customlocationid=$(az customlocation show -n $customlocationname -g $resourcegroupname --query id -o tsv)Další informace o vytváření vlastních umístění najdete v tématu Vytvoření a Správa vlastních umístění v Kubernetes s povoleným ARC Azure.
Vytvoření tématu
V této části vytvoříte téma ve vlastním umístění, které jste vytvořili v předchozím kroku. Před spuštěním příkazu aktualizujte názvy témat pro skupinu prostředků a službu Event Grid. Pokud používáte jiné místo než Východní USA, aktualizujte umístění.
Deklarujte proměnnou pro uchování názvu tématu.
topicname="<TOPIC NAME>"Spuštěním následujícího příkazu vytvořte téma.
az eventgrid topic create -g $resourcegroupname --name $topicname --kind azurearc --extended-location-name $customlocationid --extended-location-type customlocation --input-schema CloudEventSchemaV1_0 --location $regionDalší informace o příkazu rozhraní příkazového řádku naleznete v tématu
az eventgrid topic create.
Vytvoření koncového bodu zpráv
Před vytvořením předplatného pro vlastní téma vytvořte koncový bod pro zprávu události. Koncový bod obvykle provede akce na základě dat události. Pro zjednodušení tohoto rychlého startu nasadíte předem připravenou webovou aplikaci, která zobrazuje zprávy události. Nasazené řešení zahrnuje plán služby App Service, webovou aplikaci App Service a zdrojový kód z GitHubu.
Na stránce článek vyberte nasadit do Azure a nasaďte řešení do svého předplatného. Na webu Azure Portal zadejte hodnoty pro parametry.
Dokončení nasazení může trvat několik minut. Po úspěšném nasazení si webovou aplikaci prohlédněte, abyste se ujistili, že funguje. Ve webovém prohlížeči přejděte na:
https://<your-site-name>.azurewebsites.netV případě neúspěšného nasazení si přečtěte chybovou zprávu. Důvodem může být to, že název webu je již obsazený. Znovu nasaďte šablonu a vyberte jiný název lokality.
Zobrazí se web, na který se však zatím neodeslaly žádné události.

Vytvoření předplatného
Předplatitelé se můžou zaregistrovat pro události publikované v tématu. Pokud chcete přijímat jakékoli události, budete muset vytvořit předplatné Event Grid pro téma zájmu. Odběr událostí definuje cílové umístění, do kterého se tyto události odesílají. Další informace o všech podporovaných cílech nebo obslužných rutinách naleznete v tématu obslužné rutiny událostí.
Chcete-li vytvořit odběr události s cílovým koncovým bodem (HTTPS) Webhooku, zadejte název odběru události, aktualizujte název webu a spusťte následující příkaz.
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
Další informace o příkazu rozhraní příkazového řádku naleznete v tématu az eventgrid event-subscription create .
Odeslat události do tématu
Spusťte následující příkaz, který získá koncový bod pro téma: po zkopírování a vložení příkazu aktualizujte název tématu a název skupiny prostředků před spuštěním příkazu. Do tohoto koncového bodu tématu publikujete ukázkové události.
az eventgrid topic show --name $topicname -g $resourcegroupname --query "endpoint" --output tsvSpusťte následující příkaz, který získá klíč pro vlastní téma: po zkopírování a vložení příkazu aktualizujte název tématu a název skupiny prostředků před spuštěním příkazu. Je to primární klíč tématu. Pokud chcete tento klíč získat z Azure Portal, přepněte se na kartu přístupové klíče na stránce Event Grid tématu . Aby bylo možné odeslat událost do vlastního tématu, budete potřebovat přístupový klíč.
az eventgrid topic key list --name $topicname -g $resourcegroupname --query "key1" --output tsvSpusťte následující příkaz kudrlinkou pro odeslání události. Před spuštěním příkazu zadejte adresu URL a klíč koncového bodu z kroků 1 a 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" } }]'Pokud je adresa URL koncového bodu tématu z kroku 1 privátní IP adresa, například v případě, kdy je ClusterIP typ služby zprostředkovatele Event Grid, můžete z jiného seznamu pod v clusteru spustit kudrlinkou , aby měl přístup k této IP adrese. Například můžete provést následující kroky:
Vytvořte soubor manifestu s následující konfigurací. Možná budete chtít upravit
dnsPolicypodle svých potřeb. Další informace najdete v DNS pro služby a lusky .apiVersion: v1 kind: Pod metadata: name: test-pod2 spec: containers: - name: nginx image: nginx hostNetwork: true dnsPolicy: ClusterFirstWithHostNetVytvořte pod.
kubectl apply -f <name_of_your_yaml_manifest_file>Ověřte, že je spuštěný.
kubectl get pod test-podSpuštění relace prostředí z kontejneru
kubectl exec --stdin --tty test-pod -- /bin/bash
V tomto okamžiku máte relaci prostředí z běžícího kontejneru v clusteru, ze kterého můžete spustit příkaz složeného příkazu, který je popsaný v předchozím kroku výše.
Poznámka
Informace o tom, jak odesílat cloudové události pomocí programovacích jazyků, najdete v následujících ukázkách:
Ověření v prohlížeči Event Grid
Právě jste aktivovali událost a služba Event Grid odeslala zprávu do koncového bodu, který jste nakonfigurovali při přihlášení k odběru. Podívejte se na webovou aplikaci, abyste si zobrazili událost, kterou jste právě odeslali.
Další kroky
Viz následující články:
- Obslužné rutiny a cíle událostí – poskytuje informace o všech obslužných rutinách událostí a jejich umístěních, která Event Grid na Kubernetes podporuje.
- Filtrování událostí – poskytuje informace o událostech filtrování odběrů událostí.
