Cloudgebeurtenissen naar webhooks Azure Event Grid kubernetes

In deze quickstart maakt u een onderwerp in Event Grid op Kubernetes, maakt u een abonnement voor het onderwerp en verzendt u vervolgens een voorbeeldgebeurtenis naar het onderwerp om het scenario te testen.

Belangrijk

Event Grid kubernetes met Azure Arc is momenteel in openbare preview. Deze preview-versie wordt aangeboden zonder service level agreement en wordt niet aanbevolen voor productieworkloads. Misschien worden bepaalde functies niet ondersteund of zijn de mogelijkheden ervan beperkt. Zie Supplemental Terms of Use for Microsoft Azure Previews (Aanvullende gebruiksvoorwaarden voor Microsoft Azure-previews) voor meer informatie.

Vereisten

  1. Verbinding maken Kubernetes-cluster naar Azure Arc.
  2. Installeer Event Grid-extensie in het Kubernetes-cluster. Deze extensie implementeert Event Grid in een Kubernetes-cluster.

Een aangepaste locatie maken

Als Azure-locatie-extensie kunt u met een aangepaste locatie uw Kubernetes-cluster met Azure Arc-mogelijkheden gebruiken als doellocatie voor het implementeren van resources zoals Event Grid onderwerpen. Een aangepaste locatie vertegenwoordigt een naamruimte in het cluster en dit is de plaats waar onderwerpen en gebeurtenisabonnementen worden geïmplementeerd. In deze sectie maakt u een aangepaste locatie.

  1. Declareer de volgende variabelen voor het bevatten van waarden Azure Arc cluster, resourcegroep en aangepaste locatienamen. Kopieer deze instructies naar een editor, vervang de waarden en kopieer/plak deze vervolgens naar het bash-venster.

    resourcegroupname="<AZURE RESOURCE GROUP NAME>"
    arcclustername="<AZURE ARC CLUSTER NAME>"
    customlocationname="<CUSTOM LOCATION NAME>"
    
  2. Haal de resource-id van het Azure Arc verbonden cluster op. Werk waarden voor de Azure Arc clusternaam en resourcegroepparameters bij voordat u de opdracht uit te voeren.

    hostresourceid=$(az connectedk8s show -n $arcclustername -g $resourcegroupname --query id -o tsv)    
    
  3. Haal de resource Event Grid-id van de extensie op. In deze stap wordt ervan uitgenomen dat de naam die u hebt Event Grid de extensie eventgrid-ext is. Werk Azure Arc cluster- en resourcegroepnamen bij voordat u de opdracht uit te voeren.

    clusterextensionid=$(az k8s-extension show --name eventgrid-ext --cluster-type connectedClusters -c $arcclustername -g $resourcegroupname  --query id -o tsv)    
    
  4. Maak een aangepaste locatie met behulp van de bovenstaande twee waarden. Werk de namen van de aangepaste locatie en resourcegroep bij voordat u de opdracht gaat uitvoeren.

    az customlocation create -n $customlocationname -g $resourcegroupname --namespace arc --host-resource-id $hostresourceid --cluster-extension-ids $clusterextensionid    
    
  5. Haal de resource-id van de aangepaste locatie op. Werk de naam van de aangepaste locatie bij voordat u de opdracht gaat uitvoeren.

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

    Zie Aangepaste locaties maken en beheren op kubernetesmet Azure Arc voor meer informatie over het maken van aangepaste locaties.

Een onderwerp maken

In deze sectie maakt u een onderwerp op de aangepaste locatie die u in de vorige stap hebt gemaakt. Werk de namen van resourcegroep- en Event Grid-onderwerpen bij voordat u de opdracht gaat uitvoeren. Werk de locatie bij als u een andere locatie gebruikt dan VS - oost.

  1. Declareer een variabele voor het plaatsen van de onderwerpnaam.

    topicname="<TOPIC NAME>"
    
  2. Voer de volgende opdracht uit om een onderwerp te maken.

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

    Zie voor meer informatie over de az eventgrid topic create CLI-opdracht.

Het eindpunt van een bericht maken

Voordat u een abonnement voor het aangepaste onderwerp maakt, moet u een eindpunt voor het gebeurtenisbericht maken. Het eindpunt onderneemt normaal gesproken actie op basis van de gebeurtenisgegevens. Ter vereenvoudiging van deze snelstart gaat u een vooraf gebouwde web-app implementeren waarmee de gebeurtenisberichten worden weergegeven. De geïmplementeerde oplossing omvat een App Service-plan, een App Service-web-app en broncode van GitHub.

  1. Selecteer Implementeren in Azure op de artikelpagina om de oplossing voor uw abonnement te implementeren. Geef in Azure Portal waarden op voor de parameters.

    Button to deploy to Azure.

  2. De implementatie kan enkele minuten duren. Controleer of uw web-app wordt uitgevoerd nadat de implementatie is voltooid. Navigeer in een webbrowser naar: https://<your-site-name>.azurewebsites.net

    Controleer het foutbericht als de implementatie mislukt. Mogelijk wordt dit veroorzaakt doordat de naam van de website al wordt gebruikt. Implementeer de sjabloon opnieuw en kies een andere naam voor de site.

  3. De site wordt weergegeven, maar er zijn nog geen gebeurtenissen op gepubliceerd.

    Nieuwe site weergeven

Een abonnement maken

Abonnees kunnen zich registreren voor gebeurtenissen die naar een onderwerp zijn gepubliceerd. Als u een gebeurtenis wilt ontvangen, moet u een Event Grid maken voor een onderwerp dat van belang is. Een gebeurtenisabonnement definieert de bestemming waar deze gebeurtenissen naar worden verzonden. Zie Gebeurtenis-handlers voor meer informatie over alle ondersteunde bestemmingen of handlers.

Als u een gebeurtenisabonnement wilt maken met een webhookbestemming (HTTPS-eindpunt), voert u een naam in voor het gebeurtenisabonnement, werk u de naam van de website bij en voert u de volgende opdracht uit.

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

Zie voor meer informatie over de az eventgrid event-subscription create CLI-opdracht.

Gebeurtenissen naar het onderwerp verzenden

  1. Voer de volgende opdracht uit om het eindpunt voor het onderwerp op te halen: Nadat u de opdracht hebt gekopieerd en geplakt, werkt u de onderwerpnaam en naam van de resourcegroep bij voordat u de opdracht uitvoert. U publiceert voorbeeldgebeurtenissen naar dit onderwerp-eindpunt.

    az eventgrid topic show --name $topicname -g $resourcegroupname --query "endpoint" --output tsv
    
  2. Voer de volgende opdracht uit om de sleutel voor het aangepaste onderwerp op te halen: Nadat u de opdracht hebt gekopieerd en geplakt, werkt u de onderwerpnaam en naam van de resourcegroep bij voordat u de opdracht uitvoert. Het is de primaire sleutel van het onderwerp. Ga naar het tabblad Toegangssleutels van de pagina Event Grid-onderwerp om deze sleutel op te halen in Azure Portal. U hebt de toegangssleutel nodig als u een gebeurtenis voor een aangepast onderwerp wilt plaatsen.

    az eventgrid topic key list --name $topicname -g $resourcegroupname --query "key1" --output tsv
    
  3. Voer de volgende Curl-opdracht uit om de gebeurtenis te posten. Geef de eindpunt-URL en -sleutel uit stap 1 en 2 op voordat u de opdracht gaat uitvoeren.

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

    Als de eindpunt-URL van het onderwerp uit stap 1 een privé-IP-adres is, zoals wanneer het servicetype van de Event Grid-broker ClusterIP is, kunt u Curl uitvoeren vanuit een andere pod in het cluster om toegang te krijgen tot dat IP-adres. U kunt bijvoorbeeld de volgende stappen uitvoeren:

    1. Maak een manifestbestand met de volgende configuratie. Mogelijk wilt u de aanpassen dnsPolicy op basis van uw behoeften. Raadpleeg DNS voor Services en Pods voor meer informatie.

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

          kubectl apply -f <name_of_your_yaml_manifest_file>
      
    3. Controleer of de pod wordt uitgevoerd.

          kubectl get pod test-pod
      
    4. Een shell-sessie starten vanuit de container

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

    Op dit moment hebt u een shell-sessie van een container die wordt uitgevoerd in het cluster, van waaruit u de curl-opdracht kunt uitvoeren die in een eerdere stap hierboven is beschreven.

    Notitie

    Zie de volgende voorbeelden voor meer informatie over het verzenden van cloudgebeurtenissen met behulp van programmeertalen:

Controleren in de Event Grid-viewer

U hebt de gebeurtenis geactiveerd en Event Grid heeft het bericht verzonden naar het eindpunt dat u hebt geconfigureerd toen u zich abonneerde. Bekijk uw web-app om de gebeurtenis te zien die u zojuist hebt verzonden.

Ontvangen gebeurtenis weergeven in Event Grid Viewer

Volgende stappen

Zie de volgende artikelen: