Bagikan melalui


Gunakan Dapr untuk mengembangkan beban kerja aplikasi terdistribusi yang berbicara dengan broker MQTT

Untuk menggunakan komponen dapr broker MQTT yang dapat dicolokkan, sebarkan komponen pub/sub dan penyimpanan status dalam penyebaran aplikasi Anda bersama dengan aplikasi Dapr Anda. Panduan ini menunjukkan kepada Anda cara menyebarkan aplikasi menggunakan komponen dapr SDK dan broker MQTT yang dapat dicolokkan.

Prasyarat

Membuat aplikasi Dapr

Membangun aplikasi

Langkah pertama adalah menulis aplikasi yang menggunakan Dapr SDK untuk menerbitkan/berlangganan atau melakukan manajemen status.

  • Mulai cepat Terbitkan dan Berlangganan Dapr
  • Mulai cepat Manajemen Status Dapr

Kemasi aplikasi

Setelah Anda selesai menulis aplikasi Dapr, buat kontainer:

  1. Kemas aplikasi ke dalam kontainer dengan perintah berikut:

    docker build . -t my-dapr-app
    
  2. Dorong ke Container Registry pilihan Anda, seperti:

Menyebarkan aplikasi Dapr

Definisi Penyebaran berikut berisi volume untuk autentikasi SAT dan rantai sertifikat TLS, dan menggunakan injeksi sidecar Dapr untuk secara otomatis menambahkan komponen yang dapat dicolokkan ke Pod.

Komponen definisi berikut mungkin memerlukan kustomisasi ke aplikasi spesifik Anda:

Komponen Deskripsi
template:metadata:annotations:dapr.io/inject-pluggable-components Memungkinkan komponen IoT Operations yang dapat dicolokkan secara otomatis disuntikkan ke dalam pod
template:metadata:annotations:dapr.io/app-port Memberi tahu Dapr port mana yang didengarkan aplikasi Anda. Jika aplikasi Anda tidak menggunakan fitur ini (seperti langganan pubsub), hapus baris ini
volumes:mqtt-client-token Token Autentikasi Sistem yang digunakan untuk mengautentikasi komponen dapr yang dapat dicolokkan dengan broker MQTT
volumes:aio-ca-trust-bundle Rantai kepercayaan untuk memvalidasi sertifikasi TLS broker MQTT. Ini default ke sertifikat pengujian yang disebarkan dengan Operasi Azure IoT
containers:name Nama yang diberikan ke kontainer aplikasi Anda
containers:image Kontainer aplikasi yang ingin Anda sebarkan

Caution

Jika aplikasi Dapr Anda tidak mendengarkan lalu lintas dari sidecar Dapr, maka hapus dapr.io/app-port anotasi dan dapr.io/app-protocoljika tidak, sidecar Dapr akan gagal diinisialisasi.

  1. Simpan yaml berikut ke file bernama dapr-app.yaml:

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: dapr-client
      namespace: azure-iot-operations
      annotations:
        aio-broker-auth/group: dapr-workload
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: my-dapr-app
      namespace: azure-iot-operations
    spec:
      selector:
        matchLabels:
          app: my-dapr-app
      template:
        metadata:
          labels:
            app: my-dapr-app
          annotations:
            dapr.io/enabled: "true"
            dapr.io/inject-pluggable-components: "true"
            dapr.io/app-id: "my-dapr-app"
            dapr.io/app-port: "6001"
            dapr.io/app-protocol: "grpc"
        spec:
          serviceAccountName: dapr-client
    
          volumes:
          # SAT used to authenticate between Dapr and the MQTT broker
          - name: mqtt-client-token
            projected:
              sources:
                - serviceAccountToken:
                    path: mqtt-client-token
                    audience: aio-internal
                    expirationSeconds: 86400
    
          # Certificate chain for Dapr to validate the MQTT broker
          - name: aio-ca-trust-bundle
            configMap:
              name: azure-iot-operations-aio-ca-trust-bundle
    
          containers:
          # Container for the Dapr application 
          - name: mq-dapr-app
            image: <YOUR_DAPR_APPLICATION>
    
  2. Sebarkan komponen dengan menjalankan perintah berikut:

    kubectl apply -f dapr-app.yaml
    kubectl get pods -w
    

    Pod harus melaporkan tiga kontainer yang berjalan setelah interval singkat, seperti yang ditunjukkan dalam contoh output berikut:

    NAME                          READY   STATUS              RESTARTS   AGE
    ...
    my-dapr-app                   3/3     Running             0          30s
    

Penyelesaian Masalah

Jika aplikasi tidak dimulai atau Anda melihat kontainer dalam CrashLoopBackoff status, log untuk daprd kontainer sering berisi informasi yang berguna.

Jalankan perintah berikut untuk melihat log untuk komponen daprd:

kubectl logs -l app=my-dapr-app -c daprd

Langkah selanjutnya

Sekarang setelah Anda tahu cara mengembangkan aplikasi Dapr, Anda dapat menjalankan tutorial untuk Membangun aplikasi berbasis peristiwa dengan Dapr.