Použití Dapr k vývoji distribuovaných aplikačních úloh, které komunikují s zprostředkovatelem MQTT
Pokud chcete použít komponenty dapr pluggable zprostředkovatele MQTT, nasaďte komponenty pub/sub i state store v nasazení aplikace spolu s vaší aplikací. V této příručce se dozvíte, jak nasadit aplikaci pomocí komponent pluggable zprostředkovatele Dapr SDK a MQTT.
Požadavky
- Nasazené operace Azure IoT – Rychlý start: Spuštění operací Azure IoT v GitHub Codespaces s využitím K3s
- Nasazené komponenty dapr zprostředkovatele MQTT – Nasazení komponent dapr zprostředkovatele MQTT
Vytvoření aplikace Dapr
Sestavení aplikace
Prvním krokem je napsat aplikaci, která k publikování nebo odběru nebo správě stavu používá sadu Dapr SDK.
Zabalení aplikace
Po napsání aplikace Dapr sestavte kontejner:
Zabalte aplikaci do kontejneru pomocí následujícího příkazu:
docker build . -t my-dapr-app
Nasdílejte ho do služby Container Registry podle svého výběru, například:
Nasazení aplikace Dapr
Následující definice nasazení obsahuje svazky pro ověřování SAT a řetěz certifikátů TLS a využívá injektáž sajdkáru Dapr k automatickému přidání připojitelných komponent do podu.
Následující komponenty definic můžou vyžadovat přizpůsobení konkrétní aplikace:
Komponenta Popis template:metadata:annotations:dapr.io/inject-pluggable-components
Umožňuje, aby se do podu automaticky vložily komponenty pro operace IoT. template:metadata:annotations:dapr.io/app-port
Řekne Dapr, na kterém portu vaše aplikace naslouchá. Pokud vaše aplikace tuto funkci nepoužívá (například předplatné pubsub), odeberte tento řádek. volumes:mqtt-client-token
Ověřovací token systému používaný k ověřování komponent pluggable dapr pomocí zprostředkovatele MQTT volumes:aio-ca-trust-bundle
Řetěz důvěryhodnosti pro ověření certifikátu TLS zprostředkovatele MQTT. Výchozí hodnota je testovacího certifikátu nasazeného pomocí operací Azure IoT. containers:name
Název zadaný kontejneru aplikace containers:image
Kontejner aplikace, který chcete nasadit
Upozornění
Pokud vaše aplikace Dapr neposlouchá provoz ze sajdkáru Dapr, odeberte dapr.io/app-port
anotace dapr.io/app-protocol
, jinak se nepovede inicializovat sajdkárna Dapr.
Uložte následující yaml do souboru s názvem
dapr-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: my-dapr-app namespace: azure-iot-operations spec: selector: matchLabels: app: my-dapr-app template: metadata: labels: app: my-dapr-app annotations: dapr.io/enabled: "true" dapr.io/inject-pluggable-components: "true" dapr.io/app-id: "my-dapr-app" dapr.io/app-port: "6001" dapr.io/app-protocol: "grpc" spec: serviceAccountName: dapr-client volumes: # SAT 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: # Container for the Dapr application - name: mq-dapr-app image: <YOUR_DAPR_APPLICATION>
Nasaďte komponentu spuštěním následujícího příkazu:
kubectl apply -f dapr-app.yaml kubectl get pods -w
Pod by měl hlásit tři kontejnery spuštěné po krátkém intervalu, jak je znázorněno v následujícím příkladu výstupu:
NAME READY STATUS RESTARTS AGE ... my-dapr-app 3/3 Running 0 30s
Řešení problému
Pokud se aplikace nespustí nebo uvidíte kontejnery ve CrashLoopBackoff
stavu, protokol kontejneru daprd
č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=my-dapr-app -c daprd
Další kroky
Teď, když víte, jak vyvíjet aplikaci Dapr, můžete projít kurzem vytvoření aplikace řízené událostmi pomocí Dapr.