Dapr-Komponenten in Azure-Container-Apps

Distributed Application Runtime (Dapr) verwendet ein modulares Design, in dem Funktionen als Komponente bereitgestellt werden. Die Verwendung von Dapr-Komponenten ist optional und wird durch die Anforderungen Ihrer Anwendung bestimmt.

Dapr-Komponenten in Container-Apps sind Ressourcen auf Umgebungsebene, die Folgendes können:

  • Kann ein austauschbares Abstraktionsmodell bereitstellen, um eine Verbindung zu unterstützenden externen Diensten herzustellen.
  • Kann zwischen Container-Apps geteilt oder auf bestimmte Anwendungen beschränkt werden.
  • Kann Dapr-Geheimnisse verwenden, um Konfigurationsmetadaten sicher abzurufen.

In diesem Handbuch erfahren Sie, wie Sie Dapr-Komponenten für Ihre Azure-Container-Apps-Dienste konfigurieren.

Komponentenschema

Im Open-Source-Projekt Dapr entsprechen alle Komponenten dem folgendenBasisschema.

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]

In Azure Container Apps ist dieses Schema leicht vereinfacht, um Dapr-Komponenten zu unterstützen. Die vereinfachte Version entfernt unnötige Felder, einschließlich apiVersion, kindund redundante Metadaten und Spezifikationseigenschaften.

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

Komponentenbereiche

Standardmäßig laden alle Dapr-fähigen Container-Apps in derselben Umgebung den vollständigen Satz bereitgestellter Komponenten. Um sicherzustellen, dass nur die entsprechenden Container-Apps Komponenten zur Laufzeit laden, sollten Sie Anwendungsbereiche verwenden. Im folgenden Beispiel wird die Komponente nur von den beiden für Dapr aktivierten Container-Apps mit den Dapr-Anwendungs-IDs APP-ID-1 und APP-ID-2 geladen.

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

Hinweis

Dapr-Komponentenbereiche bieten bessere Sicherheitsmaßnahmen und entsprechen der Dapr-Anwendungs-ID einer Container-App, nicht dem Container-App-Namen.

Komponentenbeispiele

Zum Erstellen einer Dapr-Komponente mithilfe der Container Apps CLI können Sie ein YAML-Manifest für Container-Apps verwenden. Wenn Sie mehrere Komponenten konfigurieren, erstellen Und anwenden Sie eine separate YAML-Datei für jede Komponente.

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

Nächster Schritt