Dirigera molnhändelser till Webhooks med Azure Event Grid på Kubernetes

I den här snabbstarten skapar du ett ämne i Event Grid på Kubernetes, skapar en prenumeration för ämnet och skickar sedan en exempelhändelse till ämnet för att testa scenariot.

Viktigt

Event Grid på Kubernetes med Azure Arc är för närvarande i offentlig förhandsversion. Den här förhandsversionen tillhandahålls utan serviceavtal och rekommenderas inte för produktionsarbetsbelastningar. Vissa funktioner kanske inte stöds eller kan vara begränsade. Mer information finns i Kompletterande villkor för användning av Microsoft Azure-förhandsversioner.

Förutsättningar

  1. Anslut Kubernetes-klustret till Azure Arc.
  2. Installera Event Grid på Kubernetes-klustret. Det här tillägget distribuerar Event Grid till ett Kubernetes-kluster.

Skapa en anpassad plats

Som ett Azure-platstillägg kan du med en anpassad plats använda ditt Azure Arc-aktiverade Kubernetes-kluster som målplats för att distribuera resurser, till exempel Event Grid ämnen. En anpassad plats representerar ett namnområde i klustret och är den plats där ämnen och händelseprenumerationer distribueras. I det här avsnittet skapar du en anpassad plats.

  1. Deklarera följande variabler för att innehålla värden för Azure Arc kluster, resursgrupp och anpassade platsnamn. Kopiera dessa instruktioner till en redigerare, ersätt värdena och kopiera/klistra in i bash-fönstret.

    resourcegroupname="<AZURE RESOURCE GROUP NAME>"
    arcclustername="<AZURE ARC CLUSTER NAME>"
    customlocationname="<CUSTOM LOCATION NAME>"
    
  2. Hämta resurs-ID:t för Azure Arc-anslutna klustret. Uppdatera värdena för Azure Arc klusternamn och resursgruppsparametrar innan du kör kommandot.

    hostresourceid=$(az connectedk8s show -n $arcclustername -g $resourcegroupname --query id -o tsv)    
    
  3. Hämta resurs-ID Event Grid tillägget. Det här steget förutsätter att namnet du gav för Event Grid-tillägget är eventgrid-ext. Uppdatera Azure Arc kluster- och resursgruppnamn innan du kör kommandot.

    clusterextensionid=$(az k8s-extension show --name eventgrid-ext --cluster-type connectedClusters -c $arcclustername -g $resourcegroupname  --query id -o tsv)    
    
  4. Skapa en anpassad plats med hjälp av ovanstående två värden. Uppdatera anpassade plats- och resursgruppsnamn innan du kör kommandot.

    az customlocation create -n $customlocationname -g $resourcegroupname --namespace arc --host-resource-id $hostresourceid --cluster-extension-ids $clusterextensionid    
    
  5. Hämta resurs-ID för den anpassade platsen. Uppdatera det anpassade platsnamnet innan du kör kommandot.

    customlocationid=$(az customlocation show -n $customlocationname -g $resourcegroupname --query id -o tsv)    
    

    Mer information om hur du skapar anpassade platser finns i Skapa och hantera anpassade platser på Azure Arc-aktiverade Kubernetes.

Skapa ett ämne

I det här avsnittet skapar du ett ämne på den anpassade plats som du skapade i föregående steg. Uppdatera resursgruppen och event grid-ämnesnamnen innan du kör kommandot. Uppdatera platsen om du använder en annan plats än USA, östra.

  1. Deklarera en variabel som ska innehålla ämnesnamnet.

    topicname="<TOPIC NAME>"
    
  2. Kör följande kommando för att skapa ett ämne.

    az eventgrid topic create -g $resourcegroupname --name $topicname --kind azurearc --extended-location-name $customlocationid --extended-location-type customlocation --input-schema CloudEventSchemaV1_0 --location $region    
    

    Mer information om CLI-kommandot finns i az eventgrid topic create .

Skapa en slutpunkt för meddelanden

Innan du skapar en prenumeration för det anpassade ämnet skapar du en slutpunkt för händelsemeddelandet. Slutpunkten utför vanligtvis åtgärder baserat på informationen om händelsen. För att förenkla den här snabbstarten kan du distribuera en förskapad webbapp som visar meddelanden om händelser. Den distribuerade lösningen innehåller en App Service-plan,en webbapp för App Service och källkod från GitHub.

  1. På artikelsidan väljer du Distribuera till Azure för att distribuera lösningen till din prenumeration. Ange parametervärdena i Azure Portal.

    Button to deploy to Azure.

  2. Det kan ta några minuter att slutföra distributionen. Efter distributionen har slutförts kan du visa webbappen för att kontrollera att den körs. I en webbläsare navigerar du till: https://<your-site-name>.azurewebsites.net

    Om distributionen misslyckas kontrollerar du felmeddelandet. Det kan beror på att webbplatsnamnet redan har tagits. Distribuera mallen igen och välj ett annat namn för platsen.

  3. Du ser webbplatsen men det har inte publicerats händelser till den än.

    Visa ny webbplats

Skapa en prenumeration

Prenumeranter kan registrera sig för händelser som publicerats till ett ämne. Om du vill ta emot en händelse måste du skapa en Event Grid prenumeration för ett ämne av intresse. En händelseprenumeration definierar målet som dessa händelser skickas till. Mer information om alla mål eller hanterare som stöds finns i Händelsehanterare.

Om du vill skapa en händelseprenumeration med ett Mål för WebHook (HTTPS-slutpunkt) anger du ett namn för händelseprenumerationen, uppdaterar namnet på webbplatsen och kör följande kommando.

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

Mer information om CLI-kommandot finns i az eventgrid event-subscription create .

Skicka händelser till ämnet

  1. Kör följande kommando för att hämta slutpunkten för ämnet: När du har kopierat och klistrat in kommandot uppdaterar du ämnesnamnet och resursgruppens namn innan du kör kommandot. Du publicerar exempelhändelser till den här ämnesslutpunkten.

    az eventgrid topic show --name $topicname -g $resourcegroupname --query "endpoint" --output tsv
    
  2. Kör följande kommando för att hämta nyckeln för det anpassade ämnet: När du har kopierat och klistrat in kommandot uppdaterar du ämnesnamnet och resursgruppens namn innan du kör kommandot. Det är den primära nyckeln i ämnet. Om du vill hämta den här Azure Portal du till fliken Åtkomstnycklarsidan Event Grid ämne. För att kunna publicera en händelse till ett anpassat ämne behöver du åtkomstnyckeln.

    az eventgrid topic key list --name $topicname -g $resourcegroupname --query "key1" --output tsv
    
  3. Kör följande Curl-kommando för att publicera händelsen. Ange slutpunktens URL och nyckel från steg 1 och 2 innan du kör kommandot.

    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"
          }
    }]'
    

    Om ämnets slutpunkts-URL från steg 1 är en privat IP-adress, till exempel när tjänsttypen för Event Grid Broker är ClusterIP, kan du köra Curl från en annan podd i klustret för att få åtkomst till den IP-adressen. Du kan till exempel utföra följande steg:

    1. Skapa en manifestfil med följande konfiguration. Du kanske vill justera dnsPolicy efter dina behov. Mer information finns i DNS för tjänster och poddar.

      apiVersion: v1
      kind: Pod
      metadata:
          name: test-pod2
      spec:
          containers:
            - name: nginx
              image: nginx
          hostNetwork: true
          dnsPolicy: ClusterFirstWithHostNet       
      
    2. Skapa podden.

          kubectl apply -f <name_of_your_yaml_manifest_file>
      
    3. Kontrollera att podden körs.

          kubectl get pod test-pod
      
    4. Starta en shell-session från containern

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

    Nu har du en shell-session från en container som körs i klustret där du kan köra Curl-kommandot som beskrivs i ett tidigare steg ovan.

    Anteckning

    Information om hur du skickar molnhändelser med hjälp av programmeringsspråk finns i följande exempel:

Verifiera i Event Grid Viewer

Du har utlöst händelsen och Event Grid skickade meddelandet till den slutpunkt som du konfigurerade när du prenumererade. Visa din webbapp om du vill se händelsen som du har skickat.

Visa mottagen händelse i Event Grid Viewer

Nästa steg

Se följande artiklar: