Sdílet prostřednictvím


Nasazení komponent pluggable dapr

Modul runtime distribuované aplikace (Dapr) je přenosný bezserverový modul runtime řízený událostmi, který zjednodušuje proces vytváření distribuovaných aplikací. Dapr umožňuje vytvářet stavové nebo bezstavové aplikace bez obav o fungování stavebních bloků. Dapr poskytuje několik stavebních bloků: pub/sub, správa stavu, vyvolání služby, aktéři a další.

Operace Azure IoT podporují dva z těchto stavebních bloků, které využívají zprostředkovatele MQTT:

  • Publikování a přihlášení k odběru
  • Správa stavu

Pokud chcete použít připojitelné komponenty Dapr, definujte specifikaci komponenty pro každé rozhraní API a pak se zaregistrujte v clusteru. Komponenty Dapr naslouchají soketu domény unixu umístěnému na sdíleném svazku. Modul runtime Dapr se připojuje ke každému soketu a zjišťuje všechny služby z daného rozhraní API stavebního bloku, které komponenta implementuje.

Instalace modulu runtime Dapr

Pokud chcete nainstalovat modul runtime Dapr, použijte následující příkaz Helm:

Poznámka:

Pokud jste dokončili zadaný rychlý start pro operace Azure IoT, modul runtime Dapr jste už nainstalovali a následující kroky se nevyžadují.

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

Registrace komponent zprostředkovatele MQTT pluggable

Pokud chcete zaregistrovat součásti pro správu pub/sub a stavu, vytvořte yaml manifestu komponenty a použijte ho pro váš cluster.

K vytvoření souboru yaml použijte následující definice komponent:

Komponenta Popis
metadata:name Název komponenty je důležitý a je to, jak aplikace Dapr odkazuje na komponentu.
metadata:annotations:dapr.io/component-container Poznámky komponent používané injektorem sajdkáru Dapr, definování umístění image, připojení svazku a konfigurace protokolování
spec:type Typ komponenty, která musí být deklarována přesně tak, jak je znázorněno
spec:metadata:keyPrefix Definuje předponu klíče použitou při komunikaci s back-endem statestore. Další informace najdete v dokumentaci k Dapr.
spec:metadata:hostname Název hostitele zprostředkovatele MQTT. Výchozí hodnota je aio-broker
spec:metadata:tcpPort Číslo portu zprostředkovatele MQTT. Výchozí hodnota je 18883
spec:metadata:useTls Definujte, jestli zprostředkovatel MQTT používá protokol TLS. Výchozí hodnota je true
spec:metadata:caFile Cesta řetězu certifikátů pro ověření zprostředkovatele MQTT. Vyžaduje se, pokud useTls je true. Tento soubor musí být připojený do podu se zadaným názvem svazku.
spec:metadata:satAuthFile Soubor tokenu účtu služby (SAT) slouží k ověření komponent Dapr pomocí zprostředkovatele MQTT. Tento soubor musí být připojený do podu se zadaným názvem svazku.
  1. Uložte následující yaml, který obsahuje definice komponent Azure IoT Operations, do souboru s názvem 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. Na cluster použijte komponentu spuštěním následujícího příkazu:

    kubectl apply -f components.yaml
    

    Ověřte následující výstup:

    component.dapr.io/iotoperations-pubsub created
    component.dapr.io/iotoperations-statestore created
    

Vytvoření zásad autorizace pro zprostředkovatele MQTT

Pokud chcete nakonfigurovat zásady autorizace pro zprostředkovatele MQTT, nejprve vytvoříte prostředek BrokerAuthorization .

Poznámka:

Pokud v tomto clusteru není povolená autorizace zprostředkovatele, můžete tuto část přeskočit, protože aplikace budou mít přístup ke všem tématům MQTT, včetně těch, které jsou potřeba pro přístup k úložišti stavů zprostředkovatele MQTT.

  1. Uložte následující yaml, který obsahuje definici BrokerAuthorization, do souboru s názvem 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. Použití definice BrokerAuthorization v clusteru:

    kubectl apply -f aio-dapr-authz.yaml
    

Další kroky

Teď, když jsou komponenty Dapr nasazené do clusteru, můžete k vývoji distribuovaných aplikací použít Dapr.