Utilizar Dapr para desarrollar cargas de trabajo de aplicaciones distribuidas que se comuniquen con la versión preliminar de MQTT broker
Para usar los componentes conectables de Dapr de MQTT broker, implementa los componentes pub/sub y del almacén de estado en la implementación de la aplicación junto con la aplicación Dapr. En esta guía se muestra cómo implementar una aplicación mediante el SDK de Dapr y los componentes conectables de MQTT broker.
Requisitos previos
- Operaciones de Azure IoT implementadas: Inicio rápido: Ejecución de operaciones de Azure IoT en GitHub Codespaces con K3s
- Componentes de Dapr de MQTT broker implementados: Implementar componentes de Dapr de MQTT broker
Creación de una aplicación Dapr
Compilación de la aplicación
El primer paso es escribir una aplicación que use un SDK de Dapr para publicar o suscribir, o realizar la administración del estado.
- Inicio rápido de publicación y suscripción de Dapr
- Inicio rápido de administración de estado de Dapr
Empaquetado de la aplicación
Cuando termines de escribir la aplicación Dapr, compila el contenedor:
Para empaquetar la aplicación en un contenedor, use el siguiente comando:
docker build . -t my-dapr-app
Insértalo en un Container Registry de tu elección, como:
Implementación de una aplicación Dapr
La siguiente definición de implementación contiene volúmenes para la autenticación SAT y la cadena de certificados TLS, y usa la inyección de sidecar de Dapr para agregar automáticamente los componentes conectables al pod.
Los siguientes componentes de definición pueden requerir personalización para la aplicación específica:
Componente Descripción template:metadata:annotations:dapr.io/inject-pluggable-components
Permite inyectar automáticamente los componentes conectables de operaciones de IoT en el pod template:metadata:annotations:dapr.io/app-port
Indica a Dapr en qué puerto escucha la aplicación. Si su aplicación no usa esta característica (por ejemplo, una suscripción pubsub), quite esta línea volumes:mqtt-client-token
Token de autenticación del sistema que se usa para autenticar los componentes conectables de Dapr con el MQTT broker volumes:aio-ca-trust-bundle
Cadena de confianza para validar el certificado TLS de MQTT broker. Este valor predeterminado es el certificado de prueba implementado con Azure IoT Operations. containers:name
Un nombre asignado al contenedor de aplicaciones containers:image
El contenedor de aplicaciones que quiere implementar
Precaución
Si la aplicación Dapr no escucha el tráfico desde el sidecar de Dapr, quite las anotaciones dapr.io/app-port
y dapr.io/app-protocol
; de lo contrario, el sidecar de Dapr no podrá inicializarse.
Guarde el siguiente archivo YAML en un archivo denominado
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>
Implemente el componente mediante la ejecución del comando siguiente:
kubectl apply -f dapr-app.yaml kubectl get pods -w
El pod debe notificar tres contenedores que se ejecutan después de un intervalo corto, como se muestra en la salida de ejemplo siguiente:
NAME READY STATUS RESTARTS AGE ... my-dapr-app 3/3 Running 0 30s
Solución de problemas
Si la aplicación no se inicia o si ve los contenedores en el estado CrashLoopBackoff
, el registro del contenedor daprd
suele contener información útil.
Ejecute el comando siguiente para ver los registros del componente daprd:
kubectl logs -l app=my-dapr-app -c daprd
Pasos siguientes
Ahora que sabes cómo desarrollar una aplicación Dapr, puedes ejecutar el tutorial para compilar una aplicación controlada por eventos con Dapr.