Megosztás a következőn keresztül:


Felhőesemények átirányítása Webhookokra az Azure Event Grid használatával a Kubernetesen

Ebben a rövid útmutatóban létrehoz egy témakört az Event Gridben a Kubernetesen, létrehoz egy előfizetést a témakörhöz, majd elküld egy mintaeseményt a témakörnek a forgatókönyv teszteléséhez.

Fontos

Az Event Grid a Kubernetesen és az Azure Arcon jelenleg nyilvános előzetes verzióban érhető el. Erre az előzetes verzióra nem vonatkozik szolgáltatói szerződés, és a használata nem javasolt éles számítási feladatok esetén. Előfordulhat, hogy néhány funkció nem támogatott, vagy korlátozott képességekkel rendelkezik. További információ: Kiegészítő használati feltételek a Microsoft Azure előzetes verziójú termékeihez.

Előfeltételek

  1. Csatlakozás a Kubernetes-fürtöt az Azure Arcba.
  2. Telepítse az Event Grid-bővítményt a Kubernetes-fürtre. Ez a bővítmény üzembe helyezi az Event Gridet egy Kubernetes-fürtön.

Egyéni hely létrehozása

Azure-helybővítményként egy egyéni hely lehetővé teszi, hogy az Azure Arc-kompatibilis Kubernetes-fürtöt célhelyként használja az erőforrások, például az Event Grid-témakörök üzembe helyezéséhez. Az egyéni hely egy névteret jelöl a fürtben, és a témakörök és az esemény-előfizetések üzembe helyezésének helye. Ebben a szakaszban létrehoz egy egyéni helyet.

  1. Deklarálja az alábbi változókat az Azure Arc-fürt, az erőforráscsoport és az egyéni helynevek értékeinek tárolásához. Másolja ezeket az utasításokat egy szerkesztőbe, cserélje le az értékeket, majd másolja/illessze be a bash ablakba.

    resourcegroupname="<AZURE RESOURCE GROUP NAME>"
    arcclustername="<AZURE ARC CLUSTER NAME>"
    customlocationname="<CUSTOM LOCATION NAME>"
    
  2. Kérje le az Azure Archoz csatlakoztatott fürt erőforrás-azonosítóját. A parancs futtatása előtt frissítse az Azure Arc-fürt nevének és erőforráscsoport-paramétereinek értékeit.

    hostresourceid=$(az connectedk8s show -n $arcclustername -g $resourcegroupname --query id -o tsv)    
    
  3. Kérje le az Event Grid-bővítmény erőforrás-azonosítóját. Ez a lépés feltételezi, hogy az Event Grid-bővítményhez megadott név eventgrid-ext. A parancs futtatása előtt frissítse az Azure Arc-fürt és az erőforráscsoport nevét.

    clusterextensionid=$(az k8s-extension show --name eventgrid-ext --cluster-type connectedClusters -c $arcclustername -g $resourcegroupname  --query id -o tsv)    
    
  4. Hozzon létre egy egyéni helyet az előző lépés két értékével. A parancs futtatása előtt frissítse az egyéni hely- és erőforráscsoportneveket.

    az customlocation create -n $customlocationname -g $resourcegroupname --namespace arc --host-resource-id $hostresourceid --cluster-extension-ids $clusterextensionid    
    
  5. Kérje le az egyéni hely erőforrás-azonosítóját. A parancs futtatása előtt frissítse az egyéni hely nevét.

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

    Az egyéni helyek létrehozásával kapcsolatos további információkért lásd : Egyéni helyek létrehozása és kezelése az Azure Arc-kompatibilis Kubernetesben.

Üzenettémakör létrehozása

Ebben a szakaszban egy témakört hoz létre az előző lépésben létrehozott egyéni helyen. A parancs futtatása előtt frissítse az erőforráscsoport és az Event Grid-témakör nevét. Frissítse a helyet, ha az USA keleti régiójától eltérő helyet használ.

  1. Deklaráljon egy változót a témakör nevének tárolásához.

    topicname="<TOPIC NAME>"
    
  2. Témakör létrehozásához futtassa a következő parancsot.

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

    A parancssori felület parancsával kapcsolatos további információkért lásd: az eventgrid topic create.

Üzenetvégpont létrehozása

Mielőtt létrehoz egy előfizetést az egyéni témakörhöz, hozzon létre egy végpontot az eseményüzenethez. A végpont általában az eseményadatok alapján hajt végre műveleteket. A rövid útmutató egyszerűsítése érdekében üzembe kell helyeznie egy előre összeállított webalkalmazást , amely megjeleníti az eseményüzeneteket. Az üzembe helyezett megoldás egy App Service-csomagot, egy App Service-webalkalmazást és egy, a GitHubról származó forráskódot tartalmaz.

  1. A cikkoldalon válassza az Üzembe helyezés az Azure-ban lehetőséget a megoldás előfizetésben való üzembe helyezéséhez. Az Azure Portalon adjon meg értékeket a paraméterekhez.

    Button to deploy the Resource Manager template to Azure.

  2. Az üzembe helyezés befejezése eltarthat néhány percig. A sikeres üzembe helyezést követően tekintse meg a webalkalmazást, hogy meggyőződjön annak működéséről. Egy webböngészőben navigáljon a következő helyre: https://<your-site-name>.azurewebsites.net.

    Ha az üzembe helyezés sikertelen, ellenőrizze a hibaüzenetet. Ennek az lehet az oka, hogy a webhely neve már elkészült. Telepítse újra a sablont, és válasszon másik nevet a webhelynek.

  3. A hely látható, de még nem lett közzétéve esemény.

    View new site

Előfizetés létrehozása

Az előfizetők regisztrálhatnak a témában közzétett eseményekre. Az események fogadásához létre kell hoznia egy Event Grid-előfizetést egy érdekes témához. Az esemény-előfizetés határozza meg, hogy a rendszer mely célhelyre küldi ezeket az eseményeket. Az összes támogatott célhelyről vagy kezelőről további információt az Eseménykezelők című témakörben talál.

Ha WebHook -célhelyet (HTTPS-végpontot) tartalmazó esemény-előfizetést szeretne létrehozni, adja meg az esemény-előfizetés nevét, frissítse a webhely nevét, és futtassa a következő parancsot.

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

A parancssori felület parancsával kapcsolatos további információkért lásd: az eventgrid event-subscription create.

Események küldése a témakörbe

  1. Futtassa a következő parancsot a témakör végpontjának lekéréséhez: A parancs másolása és beillesztése után frissítse a témakör nevét és az erőforráscsoport nevét a parancs futtatása előtt. A mintaeseményeket közzéteheti ebben a témakörvégpontban.

    az eventgrid topic show --name $topicname -g $resourcegroupname --query "endpoint" --output tsv
    
  2. Futtassa a következő parancsot az egyéni témakör kulcsának lekéréséhez: A parancs másolása és beillesztése után frissítse a témakör nevét és az erőforráscsoport nevét a parancs futtatása előtt. Ez a témakör elsődleges kulcsa. Ha le szeretné szerezni ezt a kulcsot az Azure Portalról, váltson az Event Grid-témakör lapJának Hozzáférési kulcsok lapjára. Ahhoz, hogy egy eseményt közzétehessen egy egyéni témakörbe, szüksége van a hozzáférési kulcsra.

    az eventgrid topic key list --name $topicname -g $resourcegroupname --query "key1" --output tsv
    
  3. Futtassa a következő Curl-parancsot az esemény közzétételéhez. A parancs futtatása előtt adja meg a végpont URL-címét és kulcsát az 1. és a 2. lépésben.

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

    Ha az 1. lépésből származó témakörvégpont URL-címe egy privát IP-cím, például abban az esetben, ha az Event Grid-közvetítő szolgáltatástípusa ClusterIP, akkor a Fürt egy másik podján belülről hajthatja végre a Curlt , hogy hozzáférhessen az adott IP-címhez. Például a következő lépéseket hajthatja végre:

    1. Hozzon létre egy jegyzékfájlt az alábbi konfigurációval. Előfordulhat, hogy az igényeinek megfelelően szeretné módosítani a dnsPolicy módosításokat. További információ: DNS for Services and Pods.

      apiVersion: v1
      kind: Pod
      metadata:
          name: test-pod2
      spec:
          containers:
            - name: nginx
              image: nginx
          hostNetwork: true
          dnsPolicy: ClusterFirstWithHostNet       
      
    2. Hozza létre a podot.

          kubectl apply -f <name_of_your_yaml_manifest_file>
      
    3. Ellenőrizze, hogy fut-e a pod.

          kubectl get pod test-pod
      
    4. Rendszerhéj-munkamenet indítása a tárolóból

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

    Ezen a ponton a fürt egy futó tárolójából származó rendszerhéj-munkamenettel rendelkezik, amelyből végrehajthatja a korábbi lépésben leírt Curl-parancsot .

    Feljegyzés

    A felhőesemények programozási nyelvek használatával történő küldéséhez tekintse meg az alábbi példákat:

Ellenőrzés az Event Grid-megjelenítőben

Ön kiváltotta az eseményt, az Event Grid pedig elküldte az üzenetet a feliratkozáskor konfigurált végpontnak. Tekintse meg a webalkalmazást az imént elküldött esemény megtekintéséhez.

View received event in Event Grid Viewer

Következő lépések

Tekintse meg az alábbi cikkeket:

  • Eseménykezelők és -célhelyek – információkat nyújt a Kubernetes Event Grid által támogatott eseménykezelőiről és célhelyeiről.
  • Eseményszűrés – információkat nyújt az esemény-előfizetések eseményeinek szűréséről.