Distribuera Dapr-pluggbara komponenter
Dapr (Distributed Application Runtime) är en portabel, serverlös, händelsedriven körning som förenklar processen med att skapa distribuerade program. Med Dapr kan du skapa tillståndskänsliga eller tillståndslösa appar utan att behöva oroa dig för hur byggblocken fungerar. Dapr innehåller flera byggstenar: pub/sub, delstatshantering, tjänstanrop, aktörer med mera.
Azure IoT Operations stöder två av dessa byggstenar som drivs av MQTT Broker:
- Publicera och prenumerera
- Tillståndshantering
Om du vill använda Dapr-pluggbara komponenter definierar du komponentspecifikationen för var och en av API:erna och registrerar sedan med klustret. Dapr-komponenterna lyssnar på en Unix-domänsocket som placeras på den delade volymen. Dapr-körningen ansluter till varje socket och identifierar alla tjänster från ett visst byggblocks-API som komponenten implementerar.
Installera Dapr-körning
Om du vill installera Dapr-körningen använder du följande Helm-kommando:
Kommentar
Om du har slutfört den angivna Azure IoT Operations-snabbstarten har du redan installerat Dapr-körningen och följande steg krävs inte.
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
Registrera MQTT-asynkrona anslutningsbara komponenter
Om du vill registrera de anslutbara komponenterna pub/sub och tillståndshantering skapar du komponentmanifestet yaml och tillämpar det på klustret.
Om du vill skapa yaml-filen använder du följande komponentdefinitioner:
Komponent | beskrivning |
---|---|
metadata:name |
Komponentnamnet är viktigt och är hur ett Dapr-program refererar till komponenten. |
metadata:annotations:dapr.io/component-container |
Komponentanteckningar som används av Dapr-sidovagnsinjektor, som definierar avbildningsplats, volymmonteringar och loggningskonfiguration |
spec:type |
Typen av komponent, som måste deklareras exakt som det visas |
spec:metadata:keyPrefix |
Definierar nyckelprefixet som används vid kommunikation till statestore-serverdelen. Mer information finns i Dapr-dokumentationen för mer information |
spec:metadata:hostname |
Värdnamnet för MQTT-koordinatorn. Standardvärdet är aio-broker |
spec:metadata:tcpPort |
MQTT-koordinatorportnumret. Standardvärdet är 18883 |
spec:metadata:useTls |
Definiera om TLS används av MQTT-koordinatorn. Standardvärdet är true |
spec:metadata:caFile |
Certifikatkedjans sökväg för att verifiera MQTT-asynkron meddelandekö. Krävs om useTls är true . Den här filen måste monteras i podden med det angivna volymnamnet |
spec:metadata:satAuthFile |
Sat-filen (Service Account Token) används för att autentisera Dapr-komponenterna med MQTT-koordinatorn. Den här filen måste monteras i podden med det angivna volymnamnet |
Spara följande yaml, som innehåller komponentdefinitionerna för Azure IoT Operations, i en fil med namnet
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
Använd komponenten i klustret genom att köra följande kommando:
kubectl apply -f components.yaml
Kontrollera följande utdata:
component.dapr.io/iotoperations-pubsub created component.dapr.io/iotoperations-statestore created
Skapa auktoriseringsprincip för MQTT-koordinator
Om du vill konfigurera auktoriseringsprinciper för MQTT-asynkronisering skapar du först en BrokerAuthorization-resurs .
Kommentar
Om auktorisering av auktorisering inte är aktiverat i det här klustret kan du hoppa över det här avsnittet eftersom programmen har åtkomst till alla MQTT-ämnen, inklusive de som behövs för att få åtkomst till MQTT Broker State Store.
Spara följande yaml, som innehåller en BrokerAuthorization-definition, i en fil med namnet
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/#"
Tillämpa BrokerAuthorization-definitionen på klustret:
kubectl apply -f aio-dapr-authz.yaml
Nästa steg
Nu när Dapr-komponenterna har distribuerats till klustret kan du använda Dapr för att utveckla distribuerade program.