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 的容器應用程式 (具有 Dapr 應用程式識別碼 APP-ID-1
和 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]
注意
Dapr 元件範圍提供更好的安全性措施,並對應至容器應用程式的 Dapr 應用程式識別碼,而不是容器應用程式名稱。
元件範例
若要透過 Container Apps 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