Dapr 與 Azure Container Apps 整合
分散式應用程式運行時間 (Dapr) 提供 API,以側車程式的形式執行,可協助您撰寫及實作簡單、可攜式、彈性且安全的微服務。 Dapr 會與 Azure Container Apps 一起運作為抽象層,以提供低維護、無伺服器且可調整的平臺。 在您的容器應用程式 上啟用 Dapr 會與應用程式程式代碼一起建立次要程式,以簡化透過 HTTP 或 gRPC 與 Dapr 的應用程式通訊。
Azure Container Apps 中的 Dapr
使用已啟用 Dapr 的容器應用程式、針對解決方案設定的 Dapr 元件,以及叫用兩者之間通訊的 Dapr Sidecar,為您的容器應用程式環境設定 Dapr。 下圖示範這些與 Azure Container Apps 中 Dapr 相關的核心概念。
標籤 | Dapr 設定 | 描述 |
---|---|---|
1 | 已啟用 Dapr 的容器應用程式 | 透過設定一組 Dapr 引數,在容器應用程式層級啟用 Dapr。 在多個修訂模式下執行時,這些值會套用至指定容器應用程式的所有修訂。 |
2 | Dapr | 完全受控的 Dapr API 會透過 Dapr Sidecar 向每個容器應用程式公開。 您可以透過 HTTP 或 gRPC 從容器應用程式叫用 Dapr API。 Dapr Sidecar 會在 HTTP 連接埠 3500 和 gRPC 連接埠 50001 上執行。 |
3 | Dapr 元件設定 | Dapr 使用模組化設計,其中功能會以元件的形式提供。 Dapr 元件可以跨多個容器應用程式共用。 範圍陣列中提供的 Dapr 應用程式識別碼會指定哪些已啟用 Dapr 的容器應用程式會在執行階段載入指定的元件。 |
支援的 Dapr API、元件和工具
受控 API
Azure Container Apps 提供受控正式運作的 Dapr API(建置組塊)。 這些 API 完全受控並支援在生產環境中使用。
若要深入瞭解如何使用 Alpha Dapr API 和功能, 請參閱 Dapr 常見問題。
API | 狀態 | 描述 |
---|---|---|
服務對服務叫用 | GA | 探索服務,並使用自動 mTLS 驗證和加密來執行可靠、直接的服務對服務呼叫。 請參閱 Azure Container Apps 中 Dapr 服務調用的已知限制。 |
狀態管理 | GA | 提供交易和 CRUD 作業的狀態管理功能。 |
發行/訂閱 | GA | 允許發行者和訂閱者容器應用程式透過中繼訊息代理程式進行互通。 您也可以使用外部元件 JSON 檔案來建立主題的宣告式訂閱。 深入瞭解宣告式發行/子 API。 |
繫結 | GA | 根據事件觸發您的應用程式 |
執行者 | GA | Dapr 執行者是訊息驅動型的單一執行緒工作單位,專為快速調整而設計。 例如,在高載工作負載的情況下。 |
可檢視性 | GA | 將追蹤資訊傳送至 Application Insights 後端。 |
密碼 | GA | 從應用程式程式碼存取祕密,或參考 Dapr 元件中的安全值。 |
Configuration | GA | 擷取並訂閱支援組態存放區的應用程式組態專案。 |
第 1 層與第 2 層元件
AKS 和已啟用 Arc 的 Kubernetes 的 Dapr 擴充功能支援 Dapr 元件的子集。 在該子集內,Dapr 元件分成兩個支持類別:第 1 層或第 2 層。
- 第 1 層元件: 在重大(安全性或嚴重回歸)案例中立即接受調查的穩定元件。 否則,Microsoft 會與 開放原始碼 共同作業,以在 Hotfix 或下一個一般版本中尋址。
- 第 2 層元件: 在較不優先的優先順序上調查的元件,因為它們狀態不穩定,或與第三方提供者一起調查。
第 1 層元件
API | 元件 | 類型 |
---|---|---|
狀態管理 | Azure Blob 儲存體 v1 Azure 資料表儲存體 Microsoft SQL Server |
state.azure.blobstorage state.azure.tablestorage state.sqlserver |
發佈與訂閱 | Azure 服務匯流排佇列 Azure 服務匯流排主題 Azure 事件中樞 |
pubsub.azure.servicebus.queues pubsub.azure.servicebus.topics pubsub.azure.eventhubs |
繫結 | Azure 儲存體佇列 Azure 服務匯流排佇列 Azure Blob 儲存體 Azure 事件中樞 |
bindings.azure.storagequeues bindings.azure.servicebusqueues bindings.azure.blobstorage bindings.azure.eventhubs |
第 2 層元件
API | 元件 | 類型 |
---|---|---|
狀態管理 | Azure Cosmos DB PostgreSQL MySQL 和 MariaDB Redis |
state.azure.cosmosdb state.postgresql state.mysql state.redis |
發佈與訂閱 | Apache Kafka Redis Streams |
pubsub.kafka pubsub.redis |
繫結 | 事件格線 Azure Cosmos DB Apache Kafka PostgreSQL Redis Cron |
bindings.azure.eventgrid bindings.azure.cosmosdb bindings.kafka bindings.postgresql bindings.redis bindings.cron |
組態 | PostgreSQL Redis |
bindings.postgresql bindings.redis |
工具
Azure Container Apps 可確保與 Dapr 開放原始碼 工具的相容性,例如 SDK 和 CLI。
限制
- Dapr 組態規格:任何需要使用 Dapr 組態規格的功能。
- 未列在 Dapr 啟用指南中的任何 Dapr 側車註釋
- API 和元件支援:Azure Container Apps 僅支援本文中列為 GA、第 1 層或第 2 層的 Dapr API 和元件。
- 動作專案提醒:需要 1+ 的 minReplicas,以確保提醒一律為作用中且正確引發。
- 作業:作業不支援Dapr。