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