Déployer des composants enfichables Dapr
Le Dapr (Runtime d’application distribuée) est un runtime portable, serverless et piloté par les événements qui simplifie le processus de création d’applications distribuées. Dapr vous permet de créer des applications avec état ou sans état, sans vous soucier du fonctionnent des blocs de construction. Dapr fournit plusieurs blocs de construction : publication/abonnement, gestion de l’état, appel de service, acteurs, etc.
Les opérations Azure IoT prend en charge deux de ces blocs de construction, avec MQTT broker :
- Publication et abonnement
- Gestion de l’état
Pour utiliser les composants enfichables Dapr, définissez la spécification du composant pour chaque API, puis inscrivez-la au cluster. Les composants Dapr écoutent un socket de domaine Unix disposé sur le volume partagé. Le runtime Dapr se connecte à chaque socket et découvre tous les services depuis une API de bloc de construction donnée que le composant implémente.
Installer un runtime Dapr
Pour installer le runtime Dapr, utilisez la commande Helm suivante :
Remarque
Si le démarrage rapide des Opérations Azure IoT fourni est achevé, vous avez déjà installé le runtime Dapr et les étapes suivantes ne sont pas requises.
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
Inscrire des composants enfichables MQTT broker
Pour enregistrer les composants enfichables pub/sub et state management, créez le component manifest yaml et appliquez-le à votre cluster.
Pour créer le fichier yaml, utilisez les définitions de composants suivantes :
Composant | Description |
---|---|
metadata:name |
Le nom du composant est important et représente la façon dont une application Dapr référence le composant. |
metadata:annotations:dapr.io/component-container |
Annotations de composant utilisées par l’injecteur side-car Dapr, définition de l’emplacement de l’image, des montages de volume et de la configuration de la journalisation |
spec:type |
Le type du composant, qui doit être déclaré exactement comme indiqué |
spec:metadata:keyPrefix |
Définit le préfixe de clé utilisé lors de la communication vers le serveur principal du magasin d’états. Pour plus d’informations, consultez la documentation Dapr |
spec:metadata:hostname |
Le nom d’hôte du MQTT Broker. La valeur par défaut est aio-broker |
spec:metadata:tcpPort |
Le numéro de port du MQTT broker. La valeur par défaut est 18883 |
spec:metadata:useTls |
Définissez si TLS est utilisé par MQTT broker. La valeur par défaut est true |
spec:metadata:caFile |
Chemin d’accès de la chaîne de certificats pour la validation du MQTT broker. Obligatoire si useTls est true . Ce fichier doit être monté dans le pod avec le nom de volume spécifié |
spec:metadata:satAuthFile |
Le fichier du jeton de compte de service (SAT) sert à authentifier les composants Dapr auprès du MQTT broker. Ce fichier doit être monté dans le pod avec le nom de volume spécifié |
Enregistrez le yaml suivant, qui contient les définitions de composants des opérations Azure IoT, dans un fichier nommé
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
Appliquez le composant à votre cluster en exécutant la commande suivante :
kubectl apply -f components.yaml
Vérifiez la sortie suivante :
component.dapr.io/iotoperations-pubsub created component.dapr.io/iotoperations-statestore created
Créer une stratégie d’autorisation pour MQTT broker
Pour configurer des stratégies d’autorisation sur MQTT broker, vous devez d’abord créer une ressource BrokerAuthorization.
Remarque
Si l’autorisation Broker n’est pas activée sur ce cluster, vous pouvez ignorer cette section, car les applications auront accès à toutes les rubriques MQTT, y compris celles nécessaires pour accéder au Store d’états MQTT broker.
Enregistrez le yaml suivant, qui contient une définition BrokerAuthorization, dans un fichier nommé
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/#"
Appliquez la définition BrokerAuthorizaion au cluster :
kubectl apply -f aio-dapr-authz.yaml
Étapes suivantes
Maintenant que les composants Dapr sont déployés sur le cluster, vous pouvez utiliser Dapr pour développer des applications distribuées.