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

  1. kubernetes kümenizi Azure yaya Bağlan.
  2. 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.

  1. 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>"
    
  2. 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)    
    
  3. 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)    
    
  4. 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    
    
  5. Ö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.

  1. Konu adını tutacak bir değişken bildirin.

    topicname="<TOPIC NAME>"
    
  2. 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 $region    
    

    CLı 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.

  1. Çözümü aboneliğinize dağıtmak için makale sayfasında Azure 'A dağıt ' ı seçin. Azure portalında parametre değerlerini girin.

    Button to deploy to Azure.

  2. 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.net

    Dağı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.

  3. Siteyi görürsünüz ancak henüz yayımlanmış olay yoktur.

    Yeni siteyi görüntüleme

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

  1. 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
    
  2. Ö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 tsv
    
  3. Olayı 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:

    1. 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: ClusterFirstWithHostNet       
      
    2. Pod 'ı oluşturun.

          kubectl apply -f <name_of_your_yaml_manifest_file>
      
    3. Pod 'ın çalıştığını doğrulayın.

          kubectl get pod test-pod
      
    4. Kapsayı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:

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.

Event Grid görüntüleyicisinde alındı olayını görüntüle

Sonraki adımlar

Aşağıdaki makalelere bakın: