Usar o Dapr para desenvolver cargas de trabalho de aplicativos distribuídos que conversam com o Agente MQTT
Para usar os componentes plugáveis do Dapr do Agente MQTT, implante os componentes pub/sub e de armazenamento de estado na implantação do aplicativo junto com o aplicativo Dapr. Este guia mostra como implantar um aplicativo usando o SDK do Dapr e os componentes plugáveis do Agente MQTT.
Pré-requisitos
- Operações do Azure IoT implantadas - Início Rápido: executar operações do Azure IoT em GitHub Codespaces com K3s
- Componentes do Dapr do Agente MQTT implantados – Implantar componentes do Dapr do Agente MQTT
Criando um aplicativo Dapr
Compilando o aplicativo
A primeira etapa é escrever um aplicativo que use um SDK do Dapr para publicar/assinar ou fazer o gerenciamento de estado.
- Dapr Guia de início rápido para publicação e assinatura
- Dapr Guia de início rápido do Gerenciamento de Estado
Empacotar o aplicativo
Após terminar de escrever o aplicativo Dapr, compile o container:
Empacote o aplicativo em um contêiner usando o seguinte comando:
docker build . -t my-dapr-app
Efetue push dele para o Registro de Contêiner de sua escolha, como, por exemplo:
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 do Dapr para adicionar automaticamente os componentes plugáveis ao pod.
Os componentes de definição a seguir podem exigir personalização para o seu aplicativo específico:
Componente Descrição template:metadata:annotations:dapr.io/inject-pluggable-components
Permite que os componentes plugáveis de Operações de IoT sejam injetados automaticamente no pod template:metadata:annotations:dapr.io/app-port
Informa ao Dapr em qual porta seu aplicativo está escutando. Se seu aplicativo não estiver usando esse recurso (como uma assinatura pubsub), remova esta linha volumes:mqtt-client-token
O token de autenticação do sistema usado para autenticar os componentes plugáveis do Dapr com o Agente MQTT volumes:aio-ca-trust-bundle
A cadeia de confiança para validar o certificado TLS do agente MQTT. Esse padrão é o certificado de teste implantado com as Operações do Azure IoT containers:name
Um nome dado ao contêiner do aplicativo containers:image
O contêiner do aplicativo que você quer implantar
Cuidado
Se seu aplicativo Dapr não estiver escutando o tráfego do sidecar Dapr, remova as anotações dapr.io/app-port
e dapr.io/app-protocol
, caso contrário, o sidecar Dapr não conseguirá inicializar.
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>
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 no exemplo de saída a seguir:
NAME READY STATUS RESTARTS AGE ... my-dapr-app 3/3 Running 0 30s
Solução de problemas
Se o aplicativo não iniciar ou você ver os contêineres em estado CrashLoopBackoff
, verifique o log do contêiner daprd
, pois costuma conter informações úteis.
Execute o seguinte comando para exibir os logs do componente do Daprd:
kubectl logs -l app=my-dapr-app -c daprd
Próximas etapas
Agora que você sabe como desenvolver um aplicativo Dapr, poderá executar o tutorial para Compilar um aplicativo controlado por eventos com o Dapr.