Componentes do Dapr em Aplicativos de Contêiner do Azure

O Distributed Application Runtime (Dapr) utiliza um design modular onde a funcionalidade é entregue como um componente. A utilização de componentes Dapr é opcional e ditada pelas necessidades da sua aplicação.

Os componentes do Dapr em aplicativos de contêiner são recursos no nível do ambiente que:

  • Pode fornecer um modelo de abstração conectável para conexão com serviços externos de suporte.
  • Pode ser partilhado entre aplicações de contentores ou delimitado para aplicações de contentores específicas.
  • Pode usar segredos do Dapr para recuperar com segurança os metadados de configuração.

Neste guia, você aprenderá a configurar componentes do Dapr para seus serviços de Aplicativos de Contêiner do Azure.

Esquema do componente

No projeto de código aberto Dapr, todos os componentes estão em conformidade com o esquema básico a seguir.

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]

No Azure Container Apps, este esquema é ligeiramente simplificado para suportar componentes Dapr. A versão simplificada remove campos desnecessários, incluindo apiVersion, kind, e propriedades redundantes de metadados e especificações.

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

Escopos de componentes

Por defeito, todas as aplicações de contentores com Dapr no mesmo ambiente carregam o conjunto completo de componentes implementados. Para garantir que apenas as aplicações container apropriadas carregam componentes em tempo de execução, deve usar os escopos de aplicação. No exemplo seguinte, o componente é carregado apenas pelas duas aplicações em contentor com Dapr ativado, com os IDs de aplicação Dapr APP-ID-1 e 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

Os escopos do componente Dapr fornecem melhores medidas de segurança e correspondem à ID do aplicativo Dapr de um aplicativo contêiner, não ao nome do aplicativo contêiner.

Exemplos de componentes

Para criar um componente Dapr usando a CLI Container Apps, pode usar um manifesto YAML de aplicações container. Quando configuras vários componentes, cria e aplica um ficheiro YAML separado 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

Próximo passo