Implementación de los componentes conectables de Dapr
Distributed Application Runtime (Dapr) es un runtime portátil, sin servidor y controlado por eventos que simplifica el proceso de creación de aplicaciones distribuidas. Dapr te permite compilar aplicaciones con estado o sin estado sin preocuparse por cómo funcionan los bloques de creación. Dapr proporciona varios bloques de creación: pub/sub, administración de estado, invocación de servicio, actores, etc.
Azure IoT Operations admite dos de estos bloques de creación, con tecnología del corredor MQTT:
- Publish y Subscribe
- Administración de estados
Para usar los componentes conectables de Dapr, define la especificación de componentes para cada una de las API y, a continuación, regístrela en el clúster. Los componentes de Dapr escuchan un socket de dominio de Unix colocado en el volumen compartido. El entorno de ejecución de Dapr se conecta con cada socket y detecta todos los servicios de una API de bloque de creación determinada que implementa el componente.
Instalación del runtime de Dapr
Para instalar el runtime de Dapr, usa el siguiente comando de Helm:
Nota:
Si ha completado el inicio rápido proporcionado de Azure IoT Operations, ya ha instalado el runtime de Dapr y no necesita los pasos siguientes.
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
Registro de componentes conectables del corredor MQTT
Para registrar los componentes conectables de administración de estado y pub/sub, crea el YAML de manifiesto del componente y aplícalo al clúster.
Para crear el archivo YAML, use las siguientes definiciones de componente:
Componente | Descripción |
---|---|
metadata:name |
El nombre del componente es importante y es cómo una aplicación Dapr hace referencia al componente. |
metadata:annotations:dapr.io/component-container |
Anotaciones de componente usadas por el inyector sidecar Dapr, definiendo la ubicación de la imagen, los montajes de volumen y la configuración de registro |
spec:type |
Tipo del componente, que debe declararse exactamente como se muestra |
spec:metadata:keyPrefix |
Define el prefijo de clave que se usa al comunicarse con el back-end del almacén de estado. Para obtener más información, consulte Documentación de Dapr |
spec:metadata:hostname |
Nombre de host del corredor MQTT. Valor predeterminado: aio-broker |
spec:metadata:tcpPort |
Número de puerto del corredor MQTT. Valor predeterminado: 18883 |
spec:metadata:useTls |
Defina si el MQTT broker usa TLS. Valor predeterminado: true |
spec:metadata:caFile |
Ruta de acceso de la cadena de certificados para validar el corredor MQTT. Necesario si useTls es true . Este archivo debe montarse en el pod con el nombre de volumen especificado |
spec:metadata:satAuthFile |
El token de cuenta de servicio (SAT) se usa para autenticar los componentes de Dapr con el corredor MQTT. Este archivo debe montarse en el pod con el nombre de volumen especificado |
Guarde el siguiente archivo YAML, que contiene las definiciones de componentes de Operaciones de IoT de Azure, en un archivo denominado
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
Ejecute el comando siguiente para aplicar el componente al clúster:
kubectl apply -f components.yaml
Compruebe la siguiente salida:
component.dapr.io/iotoperations-pubsub created component.dapr.io/iotoperations-statestore created
Creación de una directiva de autorización para el corredor MQTT
Para configurar directivas de autorización en el corredor MQTT, primero debe crear un recurso BrokerAuthorization.
Nota:
Si la autorización de agente no está habilitada en este clúster, puedes omitir esta sección, ya que las aplicaciones tendrán acceso a todos los temas de MQTT, incluidos los necesarios para acceder al almacén de estado del corredor MQTT.
Guarda el siguiente código yaml, que contiene una definición BrokerAuthorization, en un archivo denominado
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/#"
Aplique la definición BrokerAuthorization al clúster:
kubectl apply -f aio-dapr-authz.yaml
Pasos siguientes
Ahora que los componentes de Dapr se han implementado en el clúster, puede Usar Dapr para desarrollar aplicaciones distribuidas.