Implantar componentes conectáveis do Dapr
O Distributed Application Runtime (Dapr) é um tempo de execução portátil, sem servidor e controlado por eventos que simplifica o processo de criação de aplicativos distribuídos. O Dapr permite que você crie aplicativos com ou sem monitoração de estado sem se preocupar com o funcionamento dos blocos de construção. O Dapr fornece vários blocos de construção: pub/sub, gerenciamento de estado, chamada de serviços, atores e muito mais.
O Azure IoT Operations dá suporte a dois desses blocos de construção, alimentados pelo agente MQTT:
- Publicar e subscrever
- Gestão de estados
Para usar os componentes conectáveis do Dapr, defina a especificação do componente para cada uma das APIs e registre-se no cluster. Os componentes do Dapr escutam um soquete de domínio Unix colocado no volume compartilhado. O tempo de execução do Dapr se conecta a cada soquete e descobre todos os serviços de uma determinada API de bloco de construção que o componente implementa.
Instalar o tempo de execução do Dapr
Para instalar o tempo de execução do Dapr, use o seguinte comando Helm:
Nota
Se você concluiu o início rápido das Operações do Azure IoT fornecido, já instalou o tempo de execução do Dapr e as etapas a seguir não são necessárias.
helm repo add dapr https://dapr.github.io/helm-charts/
helm repo update
helm upgrade --install dapr dapr/dapr --version=1.14 --namespace dapr-system --create-namespace --wait
Registrar componentes conectáveis do broker MQTT
Para registrar os componentes conectáveis de gerenciamento de pub/sub e estado, crie o yaml de manifesto do componente e aplique-o ao cluster.
Para criar o arquivo yaml, use as seguintes definições de componente:
Componente | Description |
---|---|
metadata:name |
O nome do componente é importante e é como um aplicativo Dapr faz referência ao componente. |
metadata:annotations:dapr.io/component-container |
Anotações de componentes usadas pelo injetor de sidecar Dapr, definindo a localização da imagem, montagens de volume e configuração de registro |
spec:type |
O tipo do componente, que precisa ser declarado exatamente como mostrado |
spec:metadata:keyPrefix |
Define o prefixo de chave usado ao se comunicar com o back-end statestore. Consulte mais informações, consulte a documentação do Dapr para obter mais informações |
spec:metadata:hostname |
O nome do host do broker MQTT. O padrão é aio-broker |
spec:metadata:tcpPort |
O número da porta do broker MQTT. O padrão é 18883 |
spec:metadata:useTls |
Defina se o TLS é usado pelo broker MQTT. O padrão é true |
spec:metadata:caFile |
O caminho da cadeia de certificados para validar o broker MQTT. Obrigatório se useTls for true . Este arquivo deve ser montado no pod com o nome do volume especificado |
spec:metadata:satAuthFile |
O arquivo SAT (Service Account Token) é usado para autenticar os componentes do Dapr com o broker MQTT. Este arquivo deve ser montado no pod com o nome do volume especificado |
Salve o yaml a seguir, que contém as definições do componente Operações do Azure IoT, em um arquivo chamado
components.yaml
:apiVersion: dapr.io/v1alpha1 kind: Component metadata: name: iotoperations-pubsub namespace: azure-iot-operations annotations: dapr.io/component-container: > { "name": "iot-operations-dapr-components", "image": "ghcr.io/azure/iot-operations-dapr-components:latest", "volumeMounts": [ { "name": "mqtt-client-token", "mountPath": "/var/run/secrets/tokens" }, { "name": "aio-ca-trust-bundle", "mountPath": "/var/run/certs/aio-internal-ca-cert" } ], "env": [ { "name": "pubSubLogLevel", "value": "Information" }, { "name": "stateStoreLogLevel", "value": "Information" }, { "name": "defaultLogLevel", "value": "Warning" } ] } spec: type: pubsub.azure.iotoperations version: v1 metadata: - name: hostname value: aio-broker - name: tcpPort value: 18883 - name: useTls value: true - name: caFile value: /var/run/certs/aio-internal-ca-cert/ca.crt - name: satAuthFile value: /var/run/secrets/tokens/mqtt-client-token --- apiVersion: dapr.io/v1alpha1 kind: Component metadata: name: iotoperations-statestore namespace: azure-iot-operations spec: type: state.azure.iotoperations version: v1 metadata: - name: hostname value: aio-broker - name: tcpPort value: 18883 - name: useTls value: true - name: caFile value: /var/run/certs/aio-internal-ca-cert/ca.crt - name: satAuthFile value: /var/run/secrets/tokens/mqtt-client-token
Aplique o componente ao cluster executando o seguinte comando:
kubectl apply -f components.yaml
Verifique a seguinte saída:
component.dapr.io/iotoperations-pubsub created component.dapr.io/iotoperations-statestore created
Criar política de autorização para o broker MQTT
Para configurar políticas de autorização para o broker MQTT, primeiro crie um recurso BrokerAuthorization .
Nota
Se a Autorização do Broker não estiver habilitada neste cluster, você poderá ignorar esta seção, pois os aplicativos terão acesso a todos os tópicos do MQTT, incluindo aqueles necessários para acessar o State Store do broker MQTT.
Salve o seguinte yaml, que contém uma definição BrokerAuthorization, em um arquivo chamado
aio-dapr-authz.yaml
:apiVersion: mqttbroker.iotoperations.azure.com/v1 kind: BrokerAuthorization metadata: name: my-dapr-authz-policies namespace: azure-iot-operations spec: listenerRef: - my-listener # change to match your listener name as needed authorizationPolicies: enableCache: false rules: - principals: attributes: - group: dapr-workload # match to the attribute annotated to the service account brokerResources: - method: Connect - method: Publish topics: - "$services/statestore/#" - method: Subscribe topics: - "clients/{principal.clientId}/services/statestore/#"
Aplique a definição BrokerAuthorization ao cluster:
kubectl apply -f aio-dapr-authz.yaml
Próximos passos
Agora que os componentes do Dapr estão implantados no cluster, você pode usar o Dapr para desenvolver aplicativos distribuídos.