Dapr 與 Azure 容器應用的集成
Distributed Application Runtime (Dapr) 是一組可逐步採用的 API,用於簡化基於微服務的分佈式應用程序的創作。 例如,Dapr 提供了用於啓用應用程序相互通信(無論通信方式是通過發佈 / 訂閱進行的消息傳遞還是可靠且安全的服務到服務調用)的功能。 一旦在容器應用中啓用,Dapr 將通過一個跨鬥(一個與你的每個容器應用一起運行的進程)公開其 HTTP 和 gRPC API。
Dapr API(也稱爲構建基塊)是基於最佳做法行業標準構建的,它們:
-
可以無縫適應首選語言或框架
-
可逐步採用;你可以根據需求使用一個、幾個或所有構建基塊
Dapr 構建基塊
Dapr 設置
以下發布 / 訂閱示例演示了 Dapr 如何與容器應用一起工作:
啓用 Dapr
可以通過 Azure CLI 或使用 “基礎結構即代碼” 模板(例如 bicep 或 Azure 資源管理器 (ARM) 模板)爲容器應用定義 Dapr 配置。 可以使用以下設置在應用中啓用 Dapr:
以下示例演示瞭如何通過將 Dapr 配置添加到容器應用資源聲明的 properties.configuration
部分來在模板中定義 Dapr
Bicep
dapr: {
enabled: true
appId: 'nodeapp'
appProtocol: 'http'
appPort: 3000
}
由於 Dapr 設置被視爲應用程序範圍的更改,因此更改 Dapr 設置時不會創建新的修訂版本。 但是,當更改 Dapr 設置時,會自動重啓容器應用修訂版和副本。
配置 Dapr 組件
在容器應用上啓用 Dapr 後,可以根據需要插入並使用 Dapr API。 還可以創建 Dapr 組件,這些組件是給定構建基塊的特定實現。 Dapr 組件是環境級資源,這意味着它們可以在啓用了 Dapr 的容器應用之間共享。 組件是可插拔的模塊,它們:
-
讓你可以使用單個 Dapr 構建基塊 API。
-
可以限定爲作用於特定的容器應用。
-
可以輕鬆修改爲指向任一組件實現。
-
可以使用容器應用機密引用安全配置值。
根據你的需求,可以 “插入” 某些 Dapr 組件類型,例如狀態存儲、發佈 / 訂閱代理等。 在下面的示例中,你將找到可用於在 Azure 容器應用中定義 Dapr 組件的各種架構。 容器應用清單與 Dapr OSS 清單略有不同,這是爲了簡化組件創建體驗。
備註
默認情況下,同一環境中所有已啓用 Dapr 的容器應用都將加載完整的一組已部署組件。 通過將範圍添加到組件,可以告知每個相應容器應用的 Dapr 跨鬥在運行時要加載哪些組件。 建議對生產工作負荷使用範圍。
-
YAML
-
Bicep
-
ARM
通過 YAML 定義 Dapr 組件時,需將組件清單傳遞到 Azure CLI 中。 例如,使用以下命令部署 pubsub.yaml
組件:
Azure CLI
az containerapp env dapr-component set --name ENVIRONMENT_NAME --resource-group RESOURCE_GROUP_NAME --dapr-component-name pubsub --yaml "./pubsub.yaml"
pubsub.yaml
規範的作用範圍將限定爲應用 ID 爲 publisher-app
和 subscriber-app
的已啓用 dapr 的容器應用。
YAML
# pubsub.yaml for Azure Service Bus component
componentType: pubsub.azure.servicebus
version: v1
metadata:
- name: connectionString
secretRef: sb-root-connectionstring
secrets:
- name: sb-root-connectionstring
value: "value"
# Application scopes
scopes:
- publisher-app
- subscriber-app
爲了進行比較,Dapr OSS pubsub.yaml
文件將包括:
yml
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: dapr-pubsub
spec:
type: pubsub.azure.servicebus
version: v1
metadata:
- name: connectionString
secretKeyRef:
name: sb-root-connectionstring
key: "value"
# Application scopes
scopes:
- publisher-app
- subscriber-app
當前支持的 Dapr 版本
Azure 容器應用支持 Dapr 版本 1.8.3。
版本升級由 Azure 容器應用以透明方式處理。 可以通過 Azure 門戶和 CLI 找到當前版本。
限制
不支持的 Dapr 功能
-
Dapr 機密管理 API:使用容器應用機密機制作爲替代方法。
-
Dapr 可觀測性的自定義配置:使用 Application Insights 檢測環境以便將分佈式跟蹤可視化。
-
Dapr 配置規範:任何需要使用 Dapr 配置規範的功能。
-
高級 Dapr 跨鬥配置:容器應用允許你指定跨鬥設置,包括
app-protocol
、app-port
和app-id
。 有關不受支持的配置選項的列表,請參閱 Dapr 文檔。
已知的限制
-
聲明性 pub/sub 訂閱
-
執行組件提醒:要求 minReplicas 大於 1,以確保提醒始終處於活動狀態並會正確觸發。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/lcvmdEcAZ94rjr4r--G6xg