Kubernetes üzerinde Azure Event Grid bulut olaylarını Web kancalarına yönlendirme
Bu hızlı başlangıçta, Kubernetes üzerinde Event Grid bir konu oluşturacaksınız, konu için bir abonelik oluşturacaksınız ve ardından senaryoyu test etmek için konuya örnek bir olay göndereceğiz.
Önemli
Azure Arc ile Kubernetes üzerinde Event Grid Şu anda genel önizlemededir. Önizleme sürümü bir hizmet düzeyi sözleşmesi olmadan sağlanır ve üretim iş yüklerinde kullanılması önerilmez. Bazı özellikler desteklenmiyor olabileceği gibi özellikleri sınırlandırılmış da olabilir. Daha fazla bilgi için bkz. Microsoft Azure Önizlemeleri için Ek Kullanım Koşulları.
Önkoşullar
- kubernetes kümenizi Azure yaya Bağlan.
- Kubernetes kümesine Event Grid uzantısını yükler. Bu uzantı bir Kubernetes kümesine Event Grid dağıtır.
Özel konum oluşturma
Bir Azure konum uzantısı olarak özel bir konum, Azure Arc özellikli Kubernetes kümenizi, Event Grid konular gibi kaynakları dağıtmak için hedef konum olarak kullanmanıza olanak tanır. Özel bir konum kümedeki bir ad alanını temsil eder ve konuların ve olay aboneliklerinin dağıtıldığı yerdir. Bu bölümde, özel bir konum oluşturacaksınız.
Azure yay kümesi, kaynak grubu ve özel konum adlarının değerlerini tutmak için aşağıdaki değişkenleri bildirin. Bu deyimleri bir düzenleyiciye kopyalayın, değerleri değiştirin ve sonra Bash penceresine kopyalayın/yapıştırın.
resourcegroupname="<AZURE RESOURCE GROUP NAME>" arcclustername="<AZURE ARC CLUSTER NAME>" customlocationname="<CUSTOM LOCATION NAME>"Azure Arc bağlantılı kümesinin kaynak KIMLIĞINI alın. Komutu çalıştırmadan önce Azure Arc küme adı ve kaynak grubu parametrelerinin değerlerini güncelleştirin.
hostresourceid=$(az connectedk8s show -n $arcclustername -g $resourcegroupname --query id -o tsv)Event Grid uzantısı kaynak KIMLIĞINI alın. Bu adım Event Grid uzantısı için verdiğiniz adın eventgrid-ext olduğunu varsayar. Komutu çalıştırmadan önce Azure Arc kümesi ve kaynak grubu adlarını güncelleştirin.
clusterextensionid=$(az k8s-extension show --name eventgrid-ext --cluster-type connectedClusters -c $arcclustername -g $resourcegroupname --query id -o tsv)Yukarıdaki iki değeri kullanarak bir özel konum oluşturun. Komutu çalıştırmadan önce özel konum ve kaynak grubu adlarını güncelleştirin.
az customlocation create -n $customlocationname -g $resourcegroupname --namespace arc --host-resource-id $hostresourceid --cluster-extension-ids $clusterextensionidÖzel konumun kaynak KIMLIĞINI alır. Komutu çalıştırmadan önce özel konum adını güncelleştirin.
customlocationid=$(az customlocation show -n $customlocationname -g $resourcegroupname --query id -o tsv)Özel konumlar oluşturma hakkında daha fazla bilgi için bkz. Azure yay özellikli Kubernetes 'te özel konumlar oluşturma ve yönetme.
Konu başlığı oluşturma
Bu bölümde, önceki adımda oluşturduğunuz özel konumda bir konu oluşturacaksınız. Komutu çalıştırmadan önce kaynak grubunu ve olay Kılavuzu konu adlarını güncelleştirin. Doğu ABD dışında bir konum kullanıyorsanız konumu güncelleştirin.
Konu adını tutacak bir değişken bildirin.
topicname="<TOPIC NAME>"Bir konu oluşturmak için aşağıdaki komutu çalıştırın.
az eventgrid topic create -g $resourcegroupname --name $topicname --kind azurearc --extended-location-name $customlocationid --extended-location-type customlocation --input-schema CloudEventSchemaV1_0 --location $regionCLı komutu hakkında daha fazla bilgi için bkz
az eventgrid topic create..
İleti uç noktası oluşturma
Özel konu için bir abonelik oluşturmadan önce, olay iletisi için bir uç nokta oluşturun. Normalde, olay verileri temelinde uç nokta eylemleri gerçekleştirir. Bu hızlı başlangıcı basitleştirmek için, olay iletilerini görüntüleyin bir önceden oluşturulmuş web uygulaması dağıtırsınız. Dağıtılan çözüm bir App Service planı, App Service web uygulaması ve GitHub'dan kaynak kod içerir.
Çözümü aboneliğinize dağıtmak için makale sayfasında Azure 'A dağıt ' ı seçin. Azure portalında parametre değerlerini girin.
Dağıtımın tamamlanması birkaç dakika sürebilir. Dağıtım başarıyla gerçekleştirildikten sonra, web uygulamanızı görüntüleyip çalıştığından emin olun. Web tarayıcısında şu adrese gidin:
https://<your-site-name>.azurewebsites.netDağıtım başarısız olursa, hata iletisini kontrol edin. Bunun nedeni, Web sitesi adının zaten alınmış olması olabilir. Şablonu yeniden dağıtın ve site için farklı bir ad seçin.
Siteyi görürsünüz ancak henüz yayımlanmış olay yoktur.

Abonelik oluşturma
Aboneler, bir konuya yayımlanan olaylara kaydolabilirler. Herhangi bir olay almak için, ilgilendiğiniz konu başlığı için bir Event Grid aboneliği oluşturmanız gerekir. Bir olay aboneliği, bu olayların gönderildiği hedefi tanımlar. Desteklenen tüm hedefler veya işleyiciler hakkında bilgi edinmek için bkz. olay işleyicileri.
Bir Web kancası (HTTPS uç noktası) hedefi ile bir olay aboneliği oluşturmak için, olay aboneliği için bir ad girin, Web sitesinin adını güncelleştirin ve aşağıdaki komutu çalıştırın.
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
CLı komutu hakkında daha fazla bilgi için bkz az eventgrid event-subscription create ..
Konuya olay gönderme
Konunun uç noktasını almak için aşağıdaki komutu çalıştırın: komutunu kopyalayıp yapıştırdıktan sonra, komutu çalıştırmadan önce konu adını ve kaynak grubu adını güncelleştirin. Bu konu uç noktasında örnek olayları yayımlayacaksınız.
az eventgrid topic show --name $topicname -g $resourcegroupname --query "endpoint" --output tsvÖzel konunun anahtarını almak için aşağıdaki komutu çalıştırın: komutunu kopyalayıp yapıştırdıktan sonra, komutu çalıştırmadan önce konu adını ve kaynak grubu adını güncelleştirin. Konunun birincil anahtarıdır. Bu anahtarı Azure portal almak için Event Grid konu sayfasının erişim tuşları sekmesine geçin. Özel bir konuya bir olay göndermek için erişim anahtarınız olması gerekir.
az eventgrid topic key list --name $topicname -g $resourcegroupname --query "key1" --output tsvOlayı göndermek için aşağıdaki kıvrımlı komutunu çalıştırın. Komutu çalıştırmadan önce, 1. ve 2. adımdaki bir uç nokta URL 'SI ve anahtar belirtin.
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" } }]'Adım 1 ' den gelen konu uç nokta URL 'SI, Event Grid aracısının hizmet türü ClusterIP olduğunda olduğu gibi özel bir IP adresi ise, bu IP adresine erişim sağlamak için kümedeki başka bir pod içinden kıvrımlı yürütebilirsiniz. Örneğin, aşağıdaki adımları uygulayabilirsiniz:
Aşağıdaki yapılandırmayla bir bildirim dosyası oluşturun.
dnsPolicyGereksinimlerinize göre ayarlamak isteyebilirsiniz. Daha fazla bilgi için Hizmetler ve pods Için DNS 'ye başvurun.apiVersion: v1 kind: Pod metadata: name: test-pod2 spec: containers: - name: nginx image: nginx hostNetwork: true dnsPolicy: ClusterFirstWithHostNetPod 'ı oluşturun.
kubectl apply -f <name_of_your_yaml_manifest_file>Pod 'ın çalıştığını doğrulayın.
kubectl get pod test-podKapsayıcıdan bir kabuk oturumu başlatın
kubectl exec --stdin --tty test-pod -- /bin/bash
Bu noktada, yukarıdaki daha önceki bir adımda açıklanan kıvrımlı komutunu yürütebilmeniz için kümedeki çalışan bir kapsayıcıdan bir kabuk oturumunuz vardır.
Not
Programlama dillerini kullanarak bulut olaylarının nasıl gönderileceğini öğrenmek için aşağıdaki örneklere bakın:
- C#.
- Java
- JavaScript ve TypeScript
- Python
Event Grid görüntüleyicisinde doğrulama
Olayı tetiklediniz ve Event Grid, iletiyi abone olurken yapılandırdığınız uç noktaya gönderdi. Az önce gönderdiğiniz olayı görmek için web uygulamanızı görüntüleyin.
Sonraki adımlar
Aşağıdaki makalelere bakın:
- Olay işleyicileri ve hedefleri -Kubernetes Event Grid 'in desteklediği tüm olay işleyicileri ve hedefler hakkında bilgi sağlar.
- Olay filtreleme -olay aboneliklerinde olayları filtreleme hakkında bilgi sağlar.
