Compartir a través de


Utilizar Dapr para desarrollar cargas de trabajo de aplicaciones distribuidas que se comuniquen con la versión preliminar de MQ de Azure IoT

Importante

Operaciones de IoT de Azure, habilitado por Azure Arc, está actualmente en VERSIÓN PRELIMINAR. No se debería usar este software en versión preliminar en entornos de producción.

Consulte Términos de uso complementarios para las versiones preliminares de Microsoft Azure para conocer los términos legales que se aplican a las características de Azure que se encuentran en la versión beta, en versión preliminar o que todavía no se han publicado para que estén disponibles con carácter general.

Para usar los componentes conectables de Dapr de la versión preliminar de MQ de Azure IoT, implemente 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 IoT MQ.

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, ejecute 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 los volúmenes necesarios para implementar la aplicación junto con los contenedores necesarios. Esta implementación utiliza el inyector sidecar de Dapr para agregar automáticamente el pod de componente conectable.

El yaml contiene una instancia de ServiceAccount, que se usa para generar SAT para la autenticación con IoT Mq y la implementación de la aplicación Dapr.

Para crear el archivo YAML, use las siguientes definiciones de componente:

Componente Descripción
volumes.mqtt-client-token Token de autenticación del sistema que se usa para autenticar los componentes conectables de Dapr con el agente de IoT MQ.
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.mq-dapr-app El contenedor de la aplicación Dapr que deseas implementar.
  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-mq-broker-auth/group: dapr-workload
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: mq-dapr-app
      namespace: azure-iot-operations
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: mq-dapr-app
      template:
        metadata:
          labels:
            app: mq-dapr-app
          annotations:
            dapr.io/enabled: "true"
            dapr.io/inject-pluggable-components: "true"
            dapr.io/app-id: "mq-dapr-app"
            dapr.io/app-port: "6001"
            dapr.io/app-protocol: "grpc"
        spec:
          serviceAccountName: dapr-client
    
          volumes:
          # SAT token used to authenticate between Dapr and the MQTT broker
          - name: mqtt-client-token
            projected:
              sources:
                - serviceAccountToken:
                    path: mqtt-client-token
                    audience: aio-mq
                    expirationSeconds: 86400
    
          # Certificate chain for Dapr to validate the MQTT broker
          - name: aio-ca-trust-bundle
            configMap:
              name: aio-ca-trust-bundle-test-only
    
          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 de carga de trabajo debe notificar todos los pods que se ejecutan después de un intervalo corto, como se muestra en la salida de ejemplo siguiente:

    pod/dapr-workload created
    NAME                          READY   STATUS              RESTARTS   AGE
    ...
    dapr-workload                 3/3     Running             0          30s
    

Solución de problemas

Si la aplicación no se inicia o ve los pods en CrashLoopBackoff, los registros de daprd son más útiles. daprd es un contenedor que se implementa automáticamente con la aplicación Dapr.

Para ver los registros, ejecute el siguiente comando:

kubectl logs dapr-workload 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.