Wdrażanie składników podłączonych w języku Dapr
Środowisko uruchomieniowe aplikacji rozproszonej (Dapr) to przenośne, bezserwerowe, sterowane zdarzeniami środowisko uruchomieniowe, które upraszcza proces tworzenia aplikacji rozproszonych. Język Dapr umożliwia tworzenie aplikacji stanowych lub bezstanowych bez obaw o sposób działania bloków konstrukcyjnych. Dapr udostępnia kilka bloków konstrukcyjnych: pub/sub, zarządzanie stanem, wywołanie usługi, aktorów i nie tylko.
Operacje usługi Azure IoT obsługują dwa z tych bloków konstrukcyjnych obsługiwane przez brokera MQTT:
- Publikowanie i subskrybowanie
- Zarządzanie stanem
Aby użyć składników podłączanych języka Dapr, zdefiniuj specyfikację składników dla każdego interfejsu API, a następnie zarejestruj się w klastrze. Składniki języka Dapr nasłuchują gniazda domeny systemu Unix umieszczonego na udostępnionym woluminie. Środowisko uruchomieniowe języka Dapr łączy się z każdym gniazdem i odnajduje wszystkie usługi z danego interfejsu API bloku konstrukcyjnego, który implementuje składnik.
Instalowanie środowiska uruchomieniowego języka Dapr
Aby zainstalować środowisko uruchomieniowe Dapr, użyj następującego polecenia helm:
Uwaga
Jeśli ukończono podany przewodnik Szybki start Dotyczący operacji usługi Azure IoT, środowisko uruchomieniowe języka Dapr zostało już zainstalowane, a poniższe kroki nie są wymagane.
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
Rejestrowanie składników wtyczki brokera MQTT
Aby zarejestrować składniki podłączane do zarządzania pub/sub i stan, utwórz plik yaml manifestu składnika i zastosuj go do klastra.
Aby utworzyć plik yaml, użyj następujących definicji składników:
Składnik | opis |
---|---|
metadata:name |
Nazwa składnika jest ważna i jak aplikacja dapr odwołuje się do składnika. |
metadata:annotations:dapr.io/component-container |
Adnotacje składników używane przez iniektor przyczepki dapr, definiując lokalizację obrazu, instalację woluminu i konfigurację rejestrowania |
spec:type |
Typ składnika, który musi być zadeklarowany dokładnie tak, jak pokazano |
spec:metadata:keyPrefix |
Definiuje prefiks klucza używany podczas komunikacji z zapleczem magazynu stanów. Zobacz więcej informacji, zobacz dokumentację języka Dapr, aby uzyskać więcej informacji |
spec:metadata:hostname |
Nazwa hosta brokera MQTT. Wartość domyślna to aio-broker |
spec:metadata:tcpPort |
Numer portu brokera MQTT. Wartość domyślna to 18883 |
spec:metadata:useTls |
Określ, czy protokół TLS jest używany przez brokera MQTT. Wartość domyślna to true |
spec:metadata:caFile |
Ścieżka łańcucha certyfikatów do weryfikacji brokera MQTT. Wymagane, jeśli useTls ma wartość true . Ten plik musi być zainstalowany w zasobniku o określonej nazwie woluminu |
spec:metadata:satAuthFile |
Plik tokenu konta usługi (SAT) służy do uwierzytelniania składników języka Dapr za pomocą brokera MQTT. Ten plik musi być zainstalowany w zasobniku o określonej nazwie woluminu |
Zapisz następujący plik yaml, który zawiera definicje składników operacji usługi Azure IoT, do pliku o nazwie
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
Zastosuj składnik do klastra, uruchamiając następujące polecenie:
kubectl apply -f components.yaml
Sprawdź następujące dane wyjściowe:
component.dapr.io/iotoperations-pubsub created component.dapr.io/iotoperations-statestore created
Tworzenie zasad autoryzacji dla brokera MQTT
Aby skonfigurować zasady autoryzacji dla brokera MQTT, najpierw należy utworzyć zasób BrokerAuthorization .
Uwaga
Jeśli autoryzacja brokera nie jest włączona w tym klastrze, możesz pominąć tę sekcję, ponieważ aplikacje będą miały dostęp do wszystkich tematów MQTT, w tym tych wymaganych do uzyskania dostępu do magazynu stanów brokera MQTT.
Zapisz następujący plik yaml, który zawiera definicję brokerAuthorization, do pliku o nazwie
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/#"
Zastosuj definicję BrokerAuthorization do klastra:
kubectl apply -f aio-dapr-authz.yaml
Następne kroki
Teraz, gdy składniki języka Dapr są wdrażane w klastrze, możesz użyć języka Dapr do tworzenia aplikacji rozproszonych.