Merutekan peristiwa cloud ke Webhooks dengan Azure Event Grid di Kubernetes

Dalam mulai cepat ini, Anda membuat topik di Event Grid di Kubernetes, membuat langganan untuk topik tersebut, lalu mengirim contoh peristiwa ke topik untuk menguji skenario.

Penting

Event Grid di Kubernetes dengan Azure Arc saat ini sedang dalam pratinjau publik. Versi pratinjau ini diberikan tanpa perjanjian tingkat layanan, dan tidak disarankan untuk beban kerja produksi. Fitur tertentu mungkin tidak didukung atau mungkin memiliki kemampuan terbatas. Untuk mengetahui informasi selengkapnya, lihat Ketentuan Penggunaan Tambahan untuk Pratinjau Microsoft Azure.

Prasyarat

  1. Hubungkan kluster Kubernetes Anda ke Azure Arc.
  2. Instal ekstensi Event Grid pada kluster Kubernetes. Ekstensi ini menyebarkan Event Grid ke kluster Kubernetes.

Buat lokasi khusus

Sebagai ekstensi lokasi Azure, lokasi kustom memungkinkan Anda menggunakan kluster Kubernetes berkemampuan Azure Arc sebagai lokasi target untuk menyebarkan sumber daya seperti topik Event Grid. Lokasi kustom mewakili namespace layanan dalam kluster dan merupakan tempat di mana topik dan langganan peristiwa disebarkan. Di bagian ini, Anda membuat lokasi kustom.

  1. Buatlah pernyataan variabel berikut untuk menyimpan nilai kluster Azure Arc, grup sumber daya, dan nama lokasi kustom. Salin pernyataan ini ke editor, ganti nilai, lalu salin/tempel ke jendela bash.

    resourcegroupname="<AZURE RESOURCE GROUP NAME>"
    arcclustername="<AZURE ARC CLUSTER NAME>"
    customlocationname="<CUSTOM LOCATION NAME>"
    
  2. Dapatkan ID sumber daya kluster yang terhubung dengan Azure Arc. Perbarui nilai untuk nama kluster Azure Arc dan parameter grup sumber daya sebelum menjalankan perintah.

    hostresourceid=$(az connectedk8s show -n $arcclustername -g $resourcegroupname --query id -o tsv)    
    
  3. Dapatkan ID sumber daya ekstensi Event Grid. Langkah ini mengasumsikan bahwa nama yang Anda berikan untuk ekstensi Event Grid adalah eventgrid-ext. Perbarui kluster Azure Arc dan nama grup sumber daya sebelum menjalankan perintah.

    clusterextensionid=$(az k8s-extension show --name eventgrid-ext --cluster-type connectedClusters -c $arcclustername -g $resourcegroupname  --query id -o tsv)    
    
  4. Buat lokasi kustom menggunakan dua nilai dari langkah sebelumnya. Perbarui nama grup lokasi dan sumber daya kustom sebelum menjalankan perintah.

    az customlocation create -n $customlocationname -g $resourcegroupname --namespace arc --host-resource-id $hostresourceid --cluster-extension-ids $clusterextensionid    
    
  5. Dapatkan ID sumber daya dari lokasi kustom. Perbarui nama lokasi kustom sebelum menjalankan perintah.

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

    Untuk informasi selengkapnya tentang pembuatan lokasi kustom, lihat Membuat dan mengelola lokasi kustom pada Kube dengan dukungan Azure Arc.

Buat topik

Di bagian ini, Anda membuat topik di lokasi kustom yang Anda buat di langkah sebelumnya. Perbarui grup sumber daya dan nama topik Event Grid sebelum menjalankan perintah. Perbarui lokasi jika Anda menggunakan lokasi selain AS Timur.

  1. Tuliskan variabel untuk menyimpan nama topik.

    topicname="<TOPIC NAME>"
    
  2. Jalankan perintah berikut untuk membuat topik.

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

    Untuk informasi lebih lanjut tentang perintah CLI, lihat az eventgrid topic create.

Buat titik akhir pesan

Sebelum Anda membuat langganan untuk topik kustom, buat titik akhir untuk pesan peristiwa. Biasanya, titik akhir mengambil tindakan berdasarkan data kejadian. Untuk menyederhanakan mulai cepat ini, Anda menyebarkan aplikasi web bawaan yang menampilkan pesan peristiwa. Solusi yang disebarkan mencakup rencana App Service, aplikasi web App Service, dan kode sumber dari GitHub.

  1. Di halaman artikel, pilih Sebarkan ke Azure untuk menyebarkan solusi untuk langganan Anda. Di portal Microsoft Azure, berikan nilai untuk parameter.

    Button to deploy the Resource Manager template to Azure.

  2. Perlu beberapa menit untuk menyelesaikan penyebaran. Setelah penyebaran berhasil, lihat aplikasi web Anda untuk memastikannya berjalan. Di browser web, navigasi ke: https://<your-site-name>.azurewebsites.net

    Jika penyebaran gagal, periksa pesan kesalahan. Mungkin karena nama situs web sudah diambil. Sebarkan templat lagi dan pilih nama yang berbeda untuk situs tersebut.

  3. Anda melihat situs tetapi belum ada peristiwa yang diposting ke situs tersebut.

    View new site

Buat langganan

Pelanggan dapat mendaftar untuk peristiwa yang diterbitkan ke topik. Untuk menerima peristiwa apa pun, Anda perlu membuat langganan Event Grid untuk topik yang menarik. Langganan acara menentukan tujuan tempat acara tersebut dikirim. Untuk mempelajari semua tujuan atau penanganan yang didukung, lihat Penanganan aktivitas.

Untuk membuat langganan acara dengan tujuan WebHook (titik akhir HTTPS), masukkan nama untuk langganan acara, perbarui nama situs web, dan jalankan perintah berikut ini.

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

Untuk informasi lebih lanjut tentang perintah CLI, lihat az eventgrid event-subscription create.

Kirim kegiatan ke topik

  1. Jalankan perintah berikut untuk mendapatkan titik akhir untuk topik: Setelah Anda menyalin dan menempelkan perintah, perbarui nama topik dan nama grup sumber daya sebelum Anda menjalankan perintah. Anda menerbitkan contoh peristiwa ke titik akhir topik ini.

    az eventgrid topic show --name $topicname -g $resourcegroupname --query "endpoint" --output tsv
    
  2. Jalankan perintah berikut untuk mendapatkan kunci untuk topik kustom: Setelah Anda menyalin dan menempelkan perintah, perbarui nama topik dan nama grup sumber daya sebelum Anda menjalankan perintah. Ini adalah kunci primer dari topik. Untuk mendapatkan kunci ini dari portal Microsoft Azure, beralihlah ke tab Kunci akses di halaman Topik Event Grid. Agar dapat memposting peristiwa ke topik kustom, Anda memerlukan kunci akses.

    az eventgrid topic key list --name $topicname -g $resourcegroupname --query "key1" --output tsv
    
  3. Jalankan perintah Curl berikut untuk memposting peristiwa. Tentukan URL dan kunci titik akhir dari langkah 1 dan 2 sebelum menjalankan perintah.

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

    Jika URL titik akhir topik dari langkah 1 adalah alamat IP privat, misalnya ketika jenis layanan broker Event Grid adalah ClusterIP, Anda dapat mengeksekusi Curl dari dalam pod lain di kluster agar dapat mengakses alamat IP tersebut. Misalnya, Anda dapat melakukan langkah-langkah berikut:

    1. Buat file manifes dengan konfigurasi berikut. Anda mungkin ingin menyesuaikan dnsPolicy sesuai dengan kebutuhan Anda. Untuk informasi selengkapnya, lihat DNS untuk Layanan dan Pod.

      apiVersion: v1
      kind: Pod
      metadata:
          name: test-pod2
      spec:
          containers:
            - name: nginx
              image: nginx
          hostNetwork: true
          dnsPolicy: ClusterFirstWithHostNet       
      
    2. Buat pod.

          kubectl apply -f <name_of_your_yaml_manifest_file>
      
    3. Verifikasi bahwa pod sedang berjalan.

          kubectl get pod test-pod
      
    4. Memulai sesi shell dari kontainer

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

    Pada titik ini, Anda memiliki sesi shell dari kontainer yang sedang berjalan di kluster tempat Anda dapat menjalankan perintah Curl yang dijelaskan pada langkah sebelumnya.

    Catatan

    Untuk mempelajari cara mengirim acara cloud menggunakan bahasa pemrograman, lihat contoh berikut:

Memverifikasi di Penampil Event Grid

Anda telah memicu kejadian, dan Event Grid mengirim pesan ke titik akhir yang Anda konfigurasi saat berlangganan. Lihat aplikasi web Anda untuk melihat peristiwa yang baru saja Anda kirim.

View received event in Event Grid Viewer

Langkah berikutnya

Lihat artikel berikut: