Compartir vía


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

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.

Empaquetado de la aplicación

Cuando termines de escribir la aplicación Dapr, compila el contenedor:

  1. Para empaquetar la aplicación en un contenedor, use el siguiente comando:

    docker build . -t my-dapr-app
    
  2. 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.

  1. 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>
    
  2. 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.