Usare Dapr per sviluppare carichi di lavoro di applicazioni distribuite che comunicano con il broker MQTT
Per usare i componenti collegabili di Dapr per il broker MQTT, distribuire entrambi i componenti di pubblicazione/sottoscrizione e di archiviazione stati nella distribuzione dell'applicazione insieme all'applicazione Dapr. Questa guida illustra come distribuire un'applicazione usando i componenti collegabili Dapr SDK e broker MQTT.
Prerequisiti
- Operazioni IoT di Azure distribuite - Guida introduttiva: Eseguire operazioni IoT di Azure in GitHub Codespaces con K3s
- Componenti Dapr del broker MQTT distribuiti: Distribuire i componenti Dapr del broker MQTT
Creazione di un'applicazione Dapr
Compilazione dell'applicazione
Il primo passaggio consiste nello scrivere un'applicazione che usa un SDK Dapr per pubblicare/sottoscrivere o eseguire la gestione dello stato.
- Guida introduttiva alla pubblicazione e alla sottoscrizione di Dapr
- Guida introduttiva alla gestione dello stato di Dapr
Creare il pacchetto dell'applicazione
Dopo aver terminato di scrivere l'applicazione Dapr, compilare il contenitore:
Creare un pacchetto dell'applicazione in un contenitore con il comando seguente:
docker build . -t my-dapr-app
Eseguirne il push nel registro contenitori preferito, ad esempio:
Distribuire un'applicazione Dapr
La definizione di distribuzione seguente contiene volumi per l'autenticazione SAT e la catena di certificati TLS e usa l'inserimento sidecar dapr per aggiungere automaticamente i componenti collegabili al pod.
I componenti di definizione seguenti potrebbero richiedere la personalizzazione per l'applicazione specifica:
Componente Descrizione template:metadata:annotations:dapr.io/inject-pluggable-components
Consente l'inserimento automatico dei componenti collegabili alle operazioni IoT nel pod template:metadata:annotations:dapr.io/app-port
Indica a Dapr la porta su cui è in ascolto l'applicazione. Se l'applicazione non usa questa funzionalità (ad esempio una sottoscrizione pubsub), rimuovere questa riga volumes:mqtt-client-token
Token di autenticazione di sistema usato per autenticare i componenti collegabili Dapr con il broker MQTT volumes:aio-ca-trust-bundle
Catena di attendibilità per convalidare il certificato TLS del broker MQTT. Il valore predefinito è il certificato di test distribuito con Operazioni di Azure IoT containers:name
Nome assegnato al contenitore dell'applicazione containers:image
Contenitore dell'applicazione da distribuire
Attenzione
Se l'applicazione Dapr non è in ascolto del traffico dal sidecar Dapr, rimuovere le dapr.io/app-port
annotazioni e dapr.io/app-protocol
in caso contrario il sidecar Dapr non riuscirà a inizializzare.
Salvare il codice YAML seguente in un file denominato
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>
Distribuire il componente eseguendo il comando seguente:
kubectl apply -f dapr-app.yaml kubectl get pods -w
Il pod deve segnalare tre contenitori in esecuzione dopo un breve intervallo, come illustrato nell'output di esempio seguente:
NAME READY STATUS RESTARTS AGE ... my-dapr-app 3/3 Running 0 30s
Risoluzione dei problemi
Se l'applicazione non viene avviata o viene visualizzato lo stato dei contenitori CrashLoopBackoff
, il log per il daprd
contenitore spesso contiene informazioni utili.
Eseguire il comando seguente per visualizzare i log per il componente daprd:
kubectl logs -l app=my-dapr-app -c daprd
Passaggi successivi
Dopo avere appreso come sviluppare un'applicazione Dapr, è possibile seguire l'esercitazione per creare un'app guidata dagli eventi con Dapr.