你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure 容器应用中的 Dapr 组件
Dapr 使用模块化设计,将功能作为组件交付。 可以选择使用 Dapr 组件,这完全取决于应用程序的需求。
容器应用中的 Dapr 组件为环境级别资源:
- 可以提供可插入的抽象模型,用于连接到支持的外部服务。
- 可以跨容器应用共享,也可以将范围限定在特定的容器应用之间。
- 可以使用 Dapr 机密安全地检索配置元数据。
本指南介绍如何为 Azure 容器应用程序服务配置 Dapr 组件。
组件架构
在 Dapr 开放源代码项目中,所有组件都符合以下基本架构。
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]
在 Azure 容器应用中,上述架构已稍作简化,以支持 Dapr 组件并删除不必要的字段,其中包括 apiVersion
、kind
以及冗余元数据和规范属性。
componentType: [COMPONENT-TYPE]
version: v1
initTimeout: [TIMEOUT-DURATION]
ignoreErrors: [BOOLEAN]
metadata:
- name: [METADATA-NAME]
value: [METADATA-VALUE]
组件范围
默认情况下,同一环境中所有已启用 Dapr 的容器应用都将加载完整的一组已部署组件。 为了确保只有适当的容器应用在运行时加载组件,应使用应用程序范围。 在以下示例中,组件将仅由具有 Dapr 应用程序 ID APP-ID-1
和 APP-ID-2
的两个已启用 Dapr 的容器应用加载:
componentType: [COMPONENT-TYPE]
version: v1
initTimeout: [TIMEOUT-DURATION]
ignoreErrors: [BOOLEAN]
metadata:
- name: [METADATA-NAME]
value: [METADATA-VALUE]
scopes:
- [APP-ID-1]
- [APP-ID-2]
注意
Dapr 组件范围提供更好的安全措施,并对应于容器应用的 Dapr 应用程序 ID,而不是容器应用名称。
组件示例
若要通过容器应用 CLI 创建 Dapr 组件,可以使用容器应用 YAML 清单。 配置多个组件时,必须为每个组件创建并应用单独的 YAML 文件。
az containerapp env dapr-component set --name ENVIRONMENT_NAME --resource-group RESOURCE_GROUP_NAME --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