Kubernetes'te Azure Event Grid ile bulut olaylarını Web kancalarına yönlendirme

Bu hızlı başlangıçta, Kubernetes üzerinde Event Grid'de bir konu oluşturacak, konu için bir abonelik oluşturacak ve ardından senaryoyu test etmek için konuya örnek bir olay göndereceksiniz.

Önemli

Azure Arc ile Kubernetes üzerinde Event Grid şu anda genel önizleme aşamasındadır. Ö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 Arc'a Bağlan.
  2. Event Grid uzantısını Kubernetes kümesine yükleyin. Bu uzantı Event Grid'i bir Kubernetes kümesine dağıtır.

Özel konum oluşturma

Azure konum uzantısı olarak özel 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 konum, kümedeki bir ad alanını temsil eder ve konu başlıklarının ve olay aboneliklerinin dağıtıldığı yerdir. Bu bölümde özel bir konum oluşturacaksınız.

  1. Azure Arc kümesinin, kaynak grubunun 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 bash penceresine kopyalayıp yapıştırın.

    resourcegroupname="<AZURE RESOURCE GROUP NAME>"
    arcclustername="<AZURE ARC CLUSTER NAME>"
    customlocationname="<CUSTOM LOCATION NAME>"
    
  2. Azure Arc'a bağlı kümenin kaynak kimliğini alın. Komutu çalıştırmadan önce Azure Arc kümesi 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ımda, Event Grid uzantısı için verdiğiniz adın eventgrid-ext olduğu varsayılır. Komutunu ç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 özel bir 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ın. Komutunu ç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 Arc ö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 grubu 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ı tutmak için bir değişken bildirin.

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

    CLI 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 denetleyin. 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.

    View new site

Abonelik oluşturma

Aboneler bir konuda yayımlanan olaylara kaydolabilir. Herhangi bir olayı almak için ilgilendiğiniz bir konu için bir Event Grid aboneliği oluşturmanız gerekir. Olay aboneliği, bu olayların gönderileceği hedefi tanımlar. Desteklenen tüm hedefler veya işleyiciler hakkında bilgi edinmek için bkz . Olay işleyicileri.

Web Kancası (HTTPS uç noktası) hedefine sahip 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

CLI komutu hakkında daha fazla bilgi için bkz az eventgrid event-subscription create. .

Konu başlığına olay gönderme

  1. Konunun uç noktasını almak için aşağıdaki komutu çalıştırın: Komutu kopyalayıp yapıştırdıktan sonra, komutu çalıştırmadan önce konu adını ve kaynak grubu adını güncelleştirin. Örnek olayları bu konu uç noktasına 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: Komutu 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 başlığının birincil anahtarıdır. Bu anahtarı Azure portal almak için Event Grid Konu SayfasınınErişim anahtarları sekmesine geçin. Özel bir konuya olay gönderebilmek için erişim anahtarına ihtiyacınız vardır.

    az eventgrid topic key list --name $topicname -g $resourcegroupname --query "key1" --output tsv
    
  3. Olayı göndermek için aşağıdaki Curl komutunu çalıştırın. Komutu çalıştırmadan önce 1. ve 2. adımdaki uç nokta URL'sini ve anahtarını 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"
          }
    }]'
    

    1. adımdaki konu uç noktası URL'si, Event Grid aracısının hizmet türünün ClusterIP olduğu durumlarda olduğu gibi özel bir IP adresiyse, bu IP adresine erişebilmek için Curl'i kümedeki başka bir poddan yürütebilirsiniz. Örneğin, aşağıdaki adımları gerçekleştirebilirsiniz:

    1. Aşağıdaki yapılandırmayla bir bildirim dosyası oluşturun. değerini ihtiyaçlarınıza göre ayarlamak dnsPolicy isteyebilirsiniz. Daha fazla bilgi için Hizmetler ve Podlar 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'u oluşturun.

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

          kubectl get pod test-pod
      
    4. Kapsayıcıdan kabuk oturumu başlatma

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

    Bu noktada, yukarıdaki önceki bir adımda açıklanan Curl komutunu yürütebileceğiniz kümede çalışan bir kapsayıcıdan kabuk oturumuna sahipsiniz.

    Not

    Programlama dillerini kullanarak bulut olayları göndermeyi öğrenmek için aşağıdaki örneklere bakın:

Event Grid Görüntüleyicisi'nde 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.

View received event in Event Grid Viewer

Sonraki adımlar

Aşağıdaki makalelere bakın: