Sdílet prostřednictvím


Směrování cloudových událostí do webhooků pomocí Azure Event Gridu v Kubernetes

V tomto rychlém startu vytvoříte téma ve službě Event Grid v Kubernetes, vytvoříte odběr tématu a pak odešlete ukázkovou událost do tématu, abyste mohli scénář otestovat.

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

  1. Připojení cluster Kubernetes do Služby Azure Arc.
  2. Nainstalujte rozšíření Event Gridu do 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 umožňuje vlastní umístění použít cluster Kubernetes s podporou Azure Arc jako cílové umístění pro nasazení prostředků, jako jsou témata Event Gridu. Vlastní umístění představuje obor názvů v clusteru a je to místo, kde se nasazují témata a odběry událostí. V této části vytvoříte vlastní umístění.

  1. Deklarujte následující proměnné pro uchovávání hodnot clusteru Azure Arc, skupiny prostředků a vlastních názvů umístění. Tyto příkazy zkopírujte do editoru, nahraďte hodnoty a pak je zkopírujte/vložte do okna bashe.

    resourcegroupname="<AZURE RESOURCE GROUP NAME>"
    arcclustername="<AZURE ARC CLUSTER NAME>"
    customlocationname="<CUSTOM LOCATION NAME>"
    
  2. Získejte ID prostředku clusteru připojeného ke službě Azure Arc. Před spuštěním příkazu aktualizujte hodnoty pro název clusteru Azure Arc a parametry skupiny prostředků.

    hostresourceid=$(az connectedk8s show -n $arcclustername -g $resourcegroupname --query id -o tsv)    
    
  3. Získejte 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 clusteru 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)    
    
  4. Vytvořte vlastní umístění pomocí dvou hodnot z předchozího kroku. 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 $clusterextensionid    
    
  5. Získejte ID prostředku vlastního 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 Vytváření a správa vlastních umístění v Kubernetes s podporou Azure Arc.

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 skupin prostředků a témat Event Gridu. Aktualizujte umístění, pokud používáte jiné umístění než USA – východ.

  1. Deklarujte proměnnou, která bude obsahovat název tématu.

    topicname="<TOPIC NAME>"
    
  2. 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 $region    
    

    Další informace o příkazu rozhraní příkazového řádku najdete v tématu az eventgrid topic create.

Vytvoření koncového bodu zpráv

Před vytvořením odběru vlastního tématu 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á zobrazí zprávy událostí. Nasazené řešení zahrnuje plán služby App Service, webovou aplikaci App Service a zdrojový kód z GitHubu.

  1. Na stránce článku vyberte Nasadit do Azure a nasaďte řešení do vašeho předplatného. Na webu Azure Portal zadejte hodnoty pro parametry.

    Button to deploy the Resource Manager template to Azure.

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

    Pokud nasazení selže, zkontrolujte chybovou zprávu. Důvodem může být to, že název webu je již převzat. Nasaďte šablonu znovu a zvolte jiný název webu.

  3. Zobrazí se web, na který se však zatím neodeslaly žádné události.

    View new site

Vytvoření odběru

Odběratelé se můžou zaregistrovat k událostem publikovaným v tématu. Pokud chcete přijmout jakoukoli událost, musíte vytvořit odběr Event Gridu pro téma, které vás zajímá. Odběr události definuje cíl, do kterého se tyto události odesílají. Informace o všech podporovaných cílech nebo obslužných rutinách najdete v tématu Obslužné rutiny událostí.

Pokud chcete vytvořit odběr událostí s cílem webhooku (koncový bod HTTPS), 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 najdete v tématu az eventgrid event-subscription create.

Odeslání událostí do tématu

  1. Spuštěním následujícího příkazu získejte koncový bod tématu: Po zkopírování a vložení příkazu před spuštěním příkazu aktualizujte název tématu a název skupiny prostředků. Do tohoto koncového bodu tématu publikujete ukázkové události.

    az eventgrid topic show --name $topicname -g $resourcegroupname --query "endpoint" --output tsv
    
  2. Spuštěním následujícího příkazu získejte 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 webu Azure Portal, přejděte na kartu Přístupové klíče na stránce Téma event gridu. Abyste mohli publikovat událost do vlastního tématu, potřebujete přístupový klíč.

    az eventgrid topic key list --name $topicname -g $resourcegroupname --query "key1" --output tsv
    
  3. Spuštěním následujícího příkazu Curl publikujte událost. Před spuštěním příkazu zadejte adresu URL a klíč koncového bodu z kroku 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 adresa URL koncového bodu tématu z kroku 1 je privátní IP adresa, například v případě, že je typ služby zprostředkovatele Event Gridu ClusterIP, můžete spustit Curl z jiného podu v clusteru, aby měl přístup k této IP adrese. Můžete například provést následující kroky:

    1. Vytvořte soubor manifestu s následující konfigurací. Možná budete chtít upravit dnsPolicy podle svých potřeb. Další informace najdete v tématu DNS pro služby a pody.

      apiVersion: v1
      kind: Pod
      metadata:
          name: test-pod2
      spec:
          containers:
            - name: nginx
              image: nginx
          hostNetwork: true
          dnsPolicy: ClusterFirstWithHostNet       
      
    2. Vytvořte pod.

          kubectl apply -f <name_of_your_yaml_manifest_file>
      
    3. Ověřte, že je pod spuštěný.

          kubectl get pod test-pod
      
    4. Spuštění relace prostředí z kontejneru

          kubectl exec --stdin --tty test-pod -- /bin/bash
      

    V tomto okamžiku máte relaci prostředí ze spuštěného kontejneru v clusteru, ze kterého můžete spustit příkaz Curl popsaný v předchozím kroku.

    Poznámka:

    Informace o odesílání cloudových událostí pomocí programovacích jazyků najdete v následujících ukázkách:

Ověření v prohlížeči Event Gridu

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.

View received event in Event Grid Viewer

Další kroky

Podívejte se na následující články: