Partilhar via


Use o Dapr para desenvolver cargas de trabalho de aplicativos distribuídos que conversam com o broker MQTT

Para usar os componentes conectáveis do Dapr do broker MQTT, implante os componentes pub/sub e state store na implantação do aplicativo junto com o aplicativo Dapr. Este guia mostra como implantar um aplicativo usando os componentes conectáveis do Dapr SDK e do MQTT broker.

Pré-requisitos

Criando um aplicativo Dapr

Construindo o aplicativo

A primeira etapa é escrever um aplicativo que usa um SDK do Dapr para publicar/assinar ou fazer gerenciamento de estado.

  • Guia de início rápido de publicação e assinatura do Dapr
  • Guia de início rápido do Dapr State Management

Empacotar o aplicativo

Depois de terminar de escrever o aplicativo Dapr, crie o contêiner:

  1. Empacote o aplicativo em um contêiner com o seguinte comando:

    docker build . -t my-dapr-app
    
  2. Envie-o para o seu Registo de Contentores à sua escolha, tal como:

Implantar um aplicativo Dapr

A definição de implantação a seguir contém volumes para autenticação SAT e cadeia de certificados TLS e utiliza a injeção de sidecar Dapr para adicionar automaticamente os componentes conectáveis ao Pod.

Os seguintes componentes de definição podem exigir personalização para seu aplicativo específico:

Componente Description
template:metadata:annotations:dapr.io/inject-pluggable-components Permite que os componentes conectáveis do IoT Operations sejam injetados automaticamente no pod
template:metadata:annotations:dapr.io/app-port Informa ao Dapr em qual porta seu aplicativo está escutando. Se a sua aplicação não estiver a utilizar esta funcionalidade (como uma subscrição pubsub), remova esta linha
volumes:mqtt-client-token O token de autenticação do sistema usado para autenticar os componentes conectáveis do Dapr com o broker MQTT
volumes:aio-ca-trust-bundle A cadeia de confiança para validar o certificado TLS do broker MQTT. O padrão é o certificado de teste implantado com o Azure IoT Operations
containers:name Um nome dado ao seu contêiner de aplicativo
containers:image O contêiner de aplicativo que você deseja implantar

Atenção

Se o seu aplicativo Dapr não estiver escutando o tráfego do sidecar Dapr, remova as dapr.io/app-port anotações e dapr.io/app-protocol , caso contrário, o sidecar Dapr não será inicializado.

  1. Salve o seguinte yaml em um arquivo chamado 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. Implante o componente executando o seguinte comando:

    kubectl apply -f dapr-app.yaml
    kubectl get pods -w
    

    O pod deve relatar três contêineres em execução após um curto intervalo, conforme mostrado na saída de exemplo a seguir:

    NAME                          READY   STATUS              RESTARTS   AGE
    ...
    my-dapr-app                   3/3     Running             0          30s
    

Resolução de Problemas

Se o aplicativo não iniciar ou você vir os contêineres no CrashLoopBackoff estado, o log do daprd contêiner geralmente contém informações úteis.

Execute o seguinte comando para exibir os logs do componente daprd:

kubectl logs -l app=my-dapr-app -c daprd

Próximos passos

Agora que você sabe como desenvolver um aplicativo Dapr, você pode executar o tutorial para Criar um aplicativo controlado por eventos com o Dapr.