Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto názorném postupu nasadíte do clusteru aplikaci Dapr. Aplikace Dapr využívá simulovaná data MQTT publikovaná ve zprostředkovateli MQTT, použije funkci vytváření oken a potom publikuje výsledek zpět do zprostředkovatele MQTT. Publikovaný výstup představuje, jak se dají na hraničních zařízeních agregovat data s velkým objemem, aby se snížila frekvence a velikost zpráv. Aplikace Dapr je bezstavová a používá úložiště stavů zprostředkovatele MQTT k ukládání minulých hodnot potřebných pro výpočty oken.
Aplikace Dapr provádí následující kroky:
- Přihlásí se k odběru
sensor/datatématu pro data snímačů. - Při příjmu dat v tématu se publikuje do úložiště stavů zprostředkovatele MQTT.
- Každých 10 sekund načte data z úložiště stavu a vypočítá min, maximum, střední hodnotu, medián a 75. percentil na základě časových razítek dat snímačů za posledních 30 sekund.
- Platnost dat starších než 30 sekund vyprší z úložiště stavů.
- Výsledek se publikuje do
sensor/window_datatématu ve formátu JSON.
Poznámka:
Tento kurz zakáže Dapr CloudEvents , které umožňují publikovat a odebírat pomocí nezpracovaného MQTT.
Požadavky
- Nainstalované operace Azure IoT – Rychlý start: Spuštění operací Azure IoT v GitHub Codespaces s využitím K3s
- Nainstalované komponenty dapr zprostředkovatele MQTT – Instalace komponent dapr zprostředkovatele MQTT
Nasazení aplikace Dapr
V tuto chvíli můžete nasadit aplikaci Dapr. Registrace komponent nenasazuje přidružený binární soubor, který je zabalený v kontejneru. Pokud chcete nasadit binární soubor společně s vaší aplikací, můžete pomocí nasazení seskupit kontejnerizovanou aplikaci Dapr a dvě komponenty dohromady.
Začněte vytvořením souboru yaml, který používá následující definice:
| Součást | Popis |
|---|---|
volumes.mqtt-client-token |
Sat sloužící k ověřování komponent pluggable Dapr pomocí zprostředkovatele MQTT a úložiště stavů |
volumes.aio-internal-ca-cert-chain |
Řetěz důvěryhodnosti pro ověření certifikátu TLS zprostředkovatele MQTT |
containers.mq-event-driven |
Předem připravený kontejner aplikace Dapr. |
Uložte následující yaml nasazení do souboru s názvem
app.yaml:apiVersion: v1 kind: ServiceAccount metadata: name: dapr-client namespace: azure-iot-operations annotations: aio-broker-auth/group: dapr-workload --- apiVersion: apps/v1 kind: Deployment metadata: name: mq-event-driven-dapr namespace: azure-iot-operations spec: selector: matchLabels: app: mq-event-driven-dapr template: metadata: labels: app: mq-event-driven-dapr annotations: dapr.io/enabled: "true" dapr.io/inject-pluggable-components: "true" dapr.io/app-id: "mq-event-driven-dapr" dapr.io/app-port: "6001" dapr.io/app-protocol: "grpc" spec: serviceAccountName: dapr-client volumes: # SAT token used to authenticate between Dapr and the MQTT broker - name: mqtt-client-token projected: sources: - serviceAccountToken: path: mqtt-client-token audience: aio-internal expirationSeconds: 86400 # Certificate chain for Dapr to validate the MQTT broker - name: aio-ca-trust-bundle configMap: name: azure-iot-operations-aio-ca-trust-bundle containers: - name: mq-event-driven-dapr image: ghcr.io/azure-samples/explore-iot-operations/mq-event-driven-dapr:latestNasaďte aplikaci spuštěním následujícího příkazu:
kubectl apply -f app.yamlOvěřte, že se aplikace úspěšně nasadila. Pod by měl hlásit, že všechny kontejnery jsou připravené po krátkém intervalu, jak je znázorněno následujícím příkazem:
kubectl get pods -l app=mq-event-driven-dapr -n azure-iot-operationsS následujícím výstupem:
NAME READY STATUS RESTARTS AGE mq-event-driven-dapr 3/3 Running 0 30s
Nasazení simulátoru
Simulace testovacích dat nasazením úlohy Kubernetes Simuluje senzor odesláním vzorkové teploty, vibrací a čtení tlaku pravidelně do zprostředkovatele MQTT pomocí klienta MQTT v sensor/data tématu.
Nasaďte simulátor z úložiště Prozkoumat operace IoT:
kubectl apply -f https://raw.githubusercontent.com/Azure-Samples/explore-iot-operations/main/tutorials/mq-event-driven-dapr/simulate-data.yamlOvěřte, že simulátor běží správně:
kubectl logs deployment/mqtt-publisher-deployment -n azure-iot-operations -fS následujícím výstupem:
Get:1 http://deb.debian.org/debian stable InRelease [151 kB] Get:2 http://deb.debian.org/debian stable-updates InRelease [52.1 kB] Get:3 http://deb.debian.org/debian-security stable-security InRelease [48.0 kB] Get:4 http://deb.debian.org/debian stable/main amd64 Packages [8780 kB] Get:5 http://deb.debian.org/debian stable-updates/main amd64 Packages [6668 B] Get:6 http://deb.debian.org/debian-security stable-security/main amd64 Packages [101 kB] Fetched 9139 kB in 3s (3570 kB/s) ... Messages published in the last 10 seconds: 10 Messages published in the last 10 seconds: 10 Messages published in the last 10 seconds: 10
Nasazení klienta MQTT
Pokud chcete ověřit, že most MQTT funguje, nasaďte do clusteru klienta MQTT.
V novém souboru s názvem
client.yamlzadejte nasazení klienta:apiVersion: v1 kind: ServiceAccount metadata: name: mqtt-client namespace: azure-iot-operations --- apiVersion: v1 kind: Pod metadata: name: mqtt-client namespace: azure-iot-operations spec: serviceAccountName: mqtt-client containers: - image: alpine name: mqtt-client command: ["sh", "-c"] args: ["apk add mosquitto-clients mqttui && sleep infinity"] volumeMounts: - name: mqtt-client-token mountPath: /var/run/secrets/tokens - name: aio-ca-trust-bundle mountPath: /var/run/certs/aio-internal-ca-cert/ volumes: - name: mqtt-client-token projected: sources: - serviceAccountToken: path: mqtt-client-token audience: aio-internal expirationSeconds: 86400 - name: aio-ca-trust-bundle configMap: name: azure-iot-operations-aio-ca-trust-bundlePoužijte soubor nasazení s kubectl:
kubectl apply -f client.yamlOvěření výstupu:
pod/mqtt-client created
Ověření výstupu aplikace Dapr
Otevřete prostředí pro klientský pod Mosquitto:
kubectl exec --stdin --tty mqtt-client -n azure-iot-operations -- shPřihlaste se k odběru
sensor/window_datatématu, abyste mohli sledovat publikovaný výstup z aplikace Dapr:mosquitto_sub -L mqtt://aio-broker/sensor/window_dataOvěřte, že aplikace provádí výpočet posuvných oken pro různé senzory každých 10 sekund:
{ "timestamp": "2023-11-16T21:59:53.939690+00:00", "window_size": 30, "temperature": { "min": 553.024, "max": 598.907, "mean": 576.4647857142858, "median": 577.4905, "75_per": 585.96125, "count": 28 }, "pressure": { "min": 290.605, "max": 299.781, "mean": 295.521, "median": 295.648, "75_per": 297.64050000000003, "count": 28 }, "vibration": { "min": 0.00124192, "max": 0.00491257, "mean": 0.0031171810714285715, "median": 0.003199235, "75_per": 0.0038769150000000003, "count": 28 } }
Volitelné – Vytvoření aplikace Dapr
Tento kurz používá předem připravený kontejner aplikace Dapr. Pokud chcete kód upravit a sestavit sami, postupujte takto:
Požadavky
- Docker – pro sestavení kontejneru aplikace
- Registr kontejneru – pro hostování kontejneru aplikace
Sestavení aplikace
Naklonujte úložiště Prozkoumat operace IoT:
git clone https://github.com/Azure-Samples/explore-iot-operationsPřejděte do adresáře kurzu Dapr:
cd explore-iot-operations/tutorials/mq-event-driven-dapr/srcSestavte image Dockeru:
docker build docker build . -t mq-event-driven-daprPokud chcete využívat aplikaci v clusteru Kubernetes, musíte odeslat image do registru kontejneru, jako je Azure Container Registry. Můžete také odeslat do místního registru kontejneru, jako je minikube nebo Docker.
docker tag mq-event-driven-dapr <container-alias> docker push <container-alias>Aktualizujte si
app.yamlnově vytvořenou image.
Řešení problémů
Pokud se aplikace nespustí nebo se kontejnery zobrazí, CrashLoopBackoffdaprd protokol kontejneru často obsahuje užitečné informace.
Spuštěním následujícího příkazu zobrazte protokoly pro komponentu daprd:
kubectl logs -l app=mq-event-driven-dapr -n azure-iot-operations -c daprd