Partager via


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é
  1. 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    
    
  2. 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.

  1. 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/#"
    
  2. 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.