Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Per usare i componenti pluggabili Dapr per il broker MQTT, distribuire sia il componente pub/sub sia il componente di archivio di stato nella distribuzione della propria applicazione insieme all'applicazione Dapr. Questa guida illustra come distribuire un'applicazione usando i componenti collegabili Dapr SDK e broker MQTT.
Prerequisiti
- Un cluster Kubernetes con Azure Arc abilitato in cui è distribuito Operazioni di Azure IoT. Se non ne hai uno, puoi seguire le istruzioni di Quickstart: Esegui Operazioni di Azure IoT in GitHub Codespaces con K3 per crearne rapidamente uno in GitHub Codespaces.
- 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
- Dapr Guida introduttiva alla gestione dello stato
Imballare l'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-appEsegui il push nel registro dei container che preferisci, ad esempio:
Distribuire un'applicazione Dapr
La seguente definizione di Deployment contiene volumi per l'autenticazione SAT e la catena di certificati TLS e utilizza l'iniezione del 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-componentsConsente ai componenti plug-in di IoT Operations di essere iniettati automaticamente nel pod template:metadata:annotations:dapr.io/app-portIndica 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-tokenToken di autenticazione di sistema usato per autenticare i componenti collegabili Dapr con il broker MQTT volumes:aio-ca-trust-bundleCatena di attendibilità per la convalida del certificato TLS del broker MQTT. Per impostazione predefinita, è impostato sul certificato di test distribuito con Operazioni di Azure IoT containers:nameNome assegnato al contenitore dell'applicazione containers:imageContenitore dell'applicazione da distribuire
Attenzione
Se l'applicazione Dapr non è configurata per ricevere traffico dal sidecar Dapr, rimuovi dapr.io/app-port e dapr.io/app-protocolannotazioni, altrimenti il sidecar Dapr non riuscirà a inizializzarsi.
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 -wIl 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.