在 Kubernetes 上使用 Azure 事件方格將雲端事件路由傳送至 Webhook
在此快速入門中,您會在 Kubernetes 上的事件方格中建立主題、建立該主題的訂用帳戶,然後將範例事件傳送至主題以測試案例。
重要
具有 Azure Arc 的 Kubernetes 上的事件方格目前處於公開預覽狀態。 此預覽版本是在沒有服務等級協定的情況下提供,不建議用於生產工作負載。 可能不支援特定功能,或可能已經限制功能。 如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款。
必要條件
- 將 Kubernetes 叢集連線至 Azure Arc。
- 在 Kubernetes 叢集上安裝事件方格延伸模組。 此延伸模組會將事件方格部署到 Kubernetes 叢集。
建立自訂位置
作為 Azure 位置延伸模組,自訂位置可讓您使用已啟用 Azure Arc 的 Kubernetes 叢集作為部署事件方格主題等資源的目標位置。 自訂位置代表叢集中的命名空間,而其是部署主題和事件訂用帳戶的位置。 在本節中,您會建立自訂位置。
宣告下列變數來保存 Azure Arc 叢集、資源群組和自訂位置名稱的值。 將這些陳述式複製到編輯器、取代值,然後複製/貼到 Bash 視窗。
resourcegroupname="<AZURE RESOURCE GROUP NAME>" arcclustername="<AZURE ARC CLUSTER NAME>" customlocationname="<CUSTOM LOCATION NAME>"
取得連線到 Azure Arc 之叢集的資源識別碼。 執行命令之前,請先更新 Azure Arc 叢集名稱和資源群組參數的值。
hostresourceid=$(az connectedk8s show -n $arcclustername -g $resourcegroupname --query id -o tsv)
取得事件方格延伸模組資源識別碼。 此步驟假設您為事件方格延伸模組提供的名稱是 eventgrid-ext。在執行命令之前,請先更新 Azure Arc 叢集和資源群組名稱。
clusterextensionid=$(az k8s-extension show --name eventgrid-ext --cluster-type connectedClusters -c $arcclustername -g $resourcegroupname --query id -o tsv)
使用上一個步驟中的兩個值來建立自訂位置。 執行命令之前,請先更新自訂位置和資源群組名稱。
az customlocation create -n $customlocationname -g $resourcegroupname --namespace arc --host-resource-id $hostresourceid --cluster-extension-ids $clusterextensionid
取得自訂位置的資源識別碼。 執行命令之前,請先更新自訂位置名稱。
customlocationid=$(az customlocation show -n $customlocationname -g $resourcegroupname --query id -o tsv)
如需建立自訂位置的詳細資訊,請參閱在已啟用 Azure Arc 的 Kubernetes 上建立和管理自訂位置。
建立主題
在此節中,您會在上一個步驟所建立的自訂位置中建立主題。 執行命令之前,請先更新資源群組和事件方格主題名稱。 如果您使用美國東部以外的位置,請更新位置。
宣告變數來保留主題名稱。
topicname="<TOPIC NAME>"
執行下列命令來建立主題。
az eventgrid topic create -g $resourcegroupname --name $topicname --kind azurearc --extended-location-name $customlocationid --extended-location-type customlocation --input-schema CloudEventSchemaV1_0 --location $region
如需 CLI 命令的詳細資訊,請參閱
az eventgrid topic create
。
建立訊息端點
建立自訂主題的訂閱之前,請建立事件訊息的端點。 端點通常會根據事件資料來採取動作。 若要簡化此快速入門,請部署預先建置的 Web 應用程式,此應用程式會顯示事件訊息。 部署的解決方案包括 App Service 方案、App Service Web 應用程式,以及 GitHub 的原始程式碼。
在文章頁面中,選取 [部署至 Azure],將解決方案部署至您的訂用帳戶。 在 Azure 入口網站中,提供參數的值。
部署需要幾分鐘的時間才能完成。 成功部署之後,檢視 Web 應用程式,確定它正在執行。 在網頁瀏覽器中,瀏覽至:
https://<your-site-name>.azurewebsites.net
如果部署失敗,請檢查錯誤訊息。 這可能是因為已經採用網站名稱。 再次部署範本,並為網站選擇不同的名稱。
您看到網站,但其中尚未發佈任何事件。
建立訂用帳戶
訂閱者可以註冊發行至主題的事件。 若要接收任何事件,您必須針對感興趣的主題建立事件方格訂用帳戶。 事件訂用帳戶會定義傳送那些事件的目的地。 若要了解支援的所有目的地或處理常式,請參閱事件處理常式。
若要使用 Webhook (HTTPS 端點) 目的地建立事件訂用帳戶,請輸入事件訂用帳戶的名稱、更新網站的名稱,然後執行下列命令。
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
如需 CLI 命令的詳細資訊,請參閱 az eventgrid event-subscription create
。
將事件傳送至主題
執行下列命令以取得主題的端點:複製並貼上命令之後,請先更新主題名稱和資源群組名稱,再執行命令。 您會將範例事件發佈到這個主題端點。
az eventgrid topic show --name $topicname -g $resourcegroupname --query "endpoint" --output tsv
執行下列命令以取得自訂主題的金鑰:複製並貼上命令之後,請先更新主題名稱和資源群組名稱,再執行命令。 其為主題的主要金鑰。 若要從 Azure 入口網站取得此金鑰,請切換至 [事件方格主題] 頁面的 [存取金鑰] 索引標籤。 若要能夠將事件張貼到自訂主題,您需要存取金鑰。
az eventgrid topic key list --name $topicname -g $resourcegroupname --query "key1" --output tsv
執行下列 Curl 命令來張貼事件。 執行命令之前,請先指定步驟 1 和 2 中的端點 URL 和金鑰。
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" } }]'
如果步驟 1 的主題端點 URL 是私人 IP 位址 (例如,當事件方格訊息代理程式的服務類型為 ClusterIP 時),您可以從叢集的另一個 Pod 執行 Curl,以存取該 IP 位址。 例如,您可以執行下列步驟︰
使用下列設定來建立資訊清單檔。 建議您根據自己的需求來調整
dnsPolicy
。 如需詳細資訊,請參閱適用於服務與 Pod 的 DNS。apiVersion: v1 kind: Pod metadata: name: test-pod2 spec: containers: - name: nginx image: nginx hostNetwork: true dnsPolicy: ClusterFirstWithHostNet
建立 Pod。
kubectl apply -f <name_of_your_yaml_manifest_file>
驗證 Pod 正在執行中。
kubectl get pod test-pod
從容器啟動殼層工作階段
kubectl exec --stdin --tty test-pod -- /bin/bash
此時,您會有來自叢集內執行中容器的殼層工作階段;您可以從中執行先前步驟所述的 Curl 命令。
在事件方格檢視器中驗證
您已觸發此事件,而 Event Grid 會將訊息傳送至您在訂閱時設定的端點。 檢視您的 Web 應用程式,以查看您剛剛傳送的事件。
下一步
請參閱以下文章:
- 事件處理常式和目的地:提供 Kubernetes 上事件方格所支援之所有事件處理常式和目的地的相關資訊。
- 事件篩選:提供有關篩選事件訂閱相關事件的資訊。