Componentes de Dapr en Azure Container Apps

Distributed Application Runtime (Dapr) usa un diseño modular en el que la funcionalidad se entrega como componente. El uso de componentes de Dapr es opcional y está determinado por las necesidades de la aplicación.

Los componentes de Dapr de las aplicaciones de contenedor son recursos de nivel de entorno que hacen lo siguiente:

  • Pueden proporcionar un modelo de abstracción enchufable para conectarse a servicios externos compatibles.
  • Se pueden compartir entre aplicaciones de contenedor o limitarse a aplicaciones de contenedor específicas.
  • Puede usar secretos de Dapr para recuperar de forma segura los metadatos de configuración.

En esta guía, aprenderá a configurar componentes de Dapr para los servicios de Azure Container Apps.

Esquema de componentes

En el proyecto de código abierto de Dapr, todos los componentes se ajustan al siguiente esquema básico.

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: [COMPONENT-NAME]
  namespace: [COMPONENT-NAMESPACE]
spec:
  type: [COMPONENT-TYPE]
  version: v1
  initTimeout: [TIMEOUT-DURATION]
  ignoreErrors: [BOOLEAN]
  metadata:
    - name: [METADATA-NAME]
      value: [METADATA-VALUE]

En Azure Container Apps, este esquema se simplifica ligeramente para admitir componentes de Dapr. La versión simplificada elimina los campos innecesarios, incluidos apiVersion, kind, los metadatos redundantes y las propiedades redundantes de la especificación.

componentType: [COMPONENT-TYPE]
version: v1
initTimeout: [TIMEOUT-DURATION]
ignoreErrors: [BOOLEAN]
metadata:
  - name: [METADATA-NAME]
    value: [METADATA-VALUE]

Ámbitos de componente

De forma predeterminada, todas las aplicaciones de contenedor habilitadas para Dapr en el mismo entorno cargan el conjunto completo de componentes implementados. Para asegurarse de que solo las aplicaciones de contenedor adecuadas cargan componentes en tiempo de ejecución, debe usar ámbitos de aplicación. En el ejemplo siguiente, el componente solo lo cargan las dos aplicaciones de contenedor habilitadas para Dapr con identificadores APP-ID-1 de aplicación de Dapr y APP-ID-2.

componentType: [COMPONENT-TYPE]
version: v1
initTimeout: [TIMEOUT-DURATION]
ignoreErrors: [BOOLEAN]
metadata:
  - name: [METADATA-NAME]
    value: [METADATA-VALUE]
scopes:
  - [APP-ID-1]
  - [APP-ID-2]

Nota:

Los ámbitos de componentes de Dapr proporcionan mejores medidas de seguridad y corresponden al identificador de aplicación de Dapr de una aplicación contenedora, no al nombre de la aplicación contenedora.

Ejemplos de componentes

Para crear un componente Dapr mediante la CLI de Container Apps, puede usar un manifiesto YAML de aplicaciones de contenedor. Al configurar varios componentes, cree y aplique un archivo YAML independiente para cada componente.

az containerapp env dapr-component set --name <your-environment-name> --resource-group <your-resource-group> --dapr-component-name pubsub --yaml "./pubsub.yaml"
# pubsub.yaml for Azure Service Bus component
componentType: pubsub.azure.servicebus.queue
version: v1
secretStoreComponent: "my-secret-store"
metadata:
  - name: namespaceName
    # Required when using Azure Authentication.
    # Must be a fully-qualified domain name
    value: "[your_servicebus_namespace.servicebus.windows.net]"
  - name: azureTenantId
    value: "[your_tenant_id]"
  - name: azureClientId 
    value: "[your_client_id]"
  - name: azureClientSecret
    secretRef: azClientSecret
scopes:
  - publisher-app
  - subscriber-app

Paso siguiente