共用方式為


Dapr

Distributed Application Runtime (Dapr) (英文) 提供 API,可協助您撰寫及實作簡單、可攜式、具復原性且安全的微服務。 Dapr API 會與您的應用程式一起以側車程式的形式執行,並擷取您在建置分散式應用程式時可能會遇到的常見複雜度,例如:

  • 服務探索
  • 訊息代理程式整合
  • 加密
  • 可檢視性
  • 秘密管理

Dapr 可逐步採用。 您可以視需要使用任何 API 建置組塊。 瞭解每個 Dapr API 和元件的支援層級Microsoft供應專案。

功能

使用 Dapr 延伸模組在 AKS 或已啟用 Arc 的 Kubernetes 叢集上佈建 Dapr (部分機器翻譯) 可消除下列動作所產生的額外負荷:

  • 下載 Dapr 工具
  • 在 AKS 叢集上手動安裝及管理 Dapr 運行時間

您可以使用 Azure CLI 或 Bicep 範本,在您的叢集上安裝、部署及設定 Dapr 擴充功能。

此外,延伸模組透過簡單的命令列引數,為所有原生 Dapr 設定功能提供支援。

Dapr 提供下列一組功能,協助您在 AKS 上進行微服務開發:

  • 透過叢集延伸模組在 AKS 上輕鬆佈建 Dapr。
  • 透過 HTTP 和 gRPC API 啟用可攜性,以抽象化基礎技術選擇
  • 透過 HTTP 和 gRPC API 可靠、安全且具彈性的服務對服務呼叫
  • 發佈和訂閱傳訊可讓您輕鬆地支援 CloudEvent 篩選,以及訊息傳遞的「至少一次」語意
  • 插入式可檢視性和透過開放式遙測 API 收集器進行監視
  • 與語言無關,同時提供語言特定的軟體開發工具組(SDK)
  • 透過 Dapr 擴充功能與 Visual Studio Code 整合
  • 解決分散式應用程式挑戰的更多 API

目前支援

Dapr 延伸模組是 AKS 中 Dapr 唯一支援Microsoft選項。

問題處理

Microsoft將 Dapr 擴充功能所引發的問題分類為兩個部分:

  • 延伸模組作業
  • Dapr 執行時間 (包括 API 和元件)

下表細分每個類別的支持優先順序級。

描述 安全性風險/回歸 功能問題
延伸模組作業 擴充功能作業期間遇到的問題,例如安裝/卸載或升級Dapr擴充功能。 Microsoft立即解決的優先順序。 Microsoft視需要調查和位址。
Dapr 運行時間 透過擴充功能使用 Dapr 運行時間、API 和元件時遇到的問題。 Microsoft與 開放原始碼 社群合作,以調查高優先順序的問題。 視問題的優先順序、嚴重性和大小而定,Microsoft直接在延伸模組中解決問題,或與 Dapr 開放原始碼 專案搭配使用,以在 Hotfix 或未來的 Dapr 開放原始碼 版本中解決。 在 Dapr 開放原始碼 中發行修正之後,這些修正就會在 Dapr 擴充功能中提供。 Microsoft會與 Dapr 開放原始碼 專案一起調查新的功能問題,並與它們共同作業,以解決 Hotfix 或未來的 Dapr 開放原始碼 版本。 目前Microsoft不會調查已知的 開放原始碼 功能問題。

Dapr 版本

Microsoft提供最新版 Dapr 和兩個舊版 (N-2) 的最佳支援。 最新的修補程式版本是每個次要版本版本的唯一支援版本。 目前,AKS 或已啟用 Arc 的 Kubernetes 的 Dapr 擴充功能支援下列 Dapr 版本:

  • 1.13.x
  • 1.12.x
  • 1.11.x

您可以執行 Azure CLI 命令來復原叢集中位置中可用版本的清單。

若要檢視受控 AKS 叢集可用的穩定 Dapr 版本清單,請執行下列命令:

az k8s-extension extension-types list-versions-by-cluster --resource-group myResourceGroup --cluster-name myCluster --cluster-type managedClusters --extension-type microsoft.dapr --release-train stable

若要查看受控 AKS 叢集可用的最新穩定 Dapr 版本,請執行下列命令:

az k8s-extension extension-types list-versions-by-cluster --resource-group myResourceGroup --cluster-name myCluster --cluster-type managedClusters --extension-type microsoft.dapr  --release-train stable --show-latest

若要檢視依位置提供的穩定 Dapr 版本清單:

  1. 請確定您已向 Azure 訂用帳戶註冊 ExtenstionTypes 此功能。
  2. 執行下列命令。
az k8s-extension extension-types list-versions-by-location --location westus --extension-type microsoft.dapr

執行階段支援

Dapr 延伸模組支援會根據您管理執行階段的方式而不同。

自我管理

自我管理執行階段需要手動升級,才能保留在支援時間範圍中。 若要透過延伸模組來升級 Dapr,請遵循更新延伸模組執行個體 (部分機器翻譯) 指示。

在 Dapr 執行時間版本終止 Microsoft 支援之後,您的應用程式會繼續執行不變。 不過,Microsoft無法再針對該運行時間版本提供安全性修補程式或相關的客戶支援。 如果您的應用程式遇到該版本終止支援日期之後的任何問題,建議您升級至支援的版本,以接收最新的安全性修補程式和功能。

自動升級

啟用自動升級需要仔細考慮。 自動升級可讓 Dapr 擴充功能更新為最新的次要版本時,您可能會在更新之間發生重大變更。 Microsoft不負責因為自動更新之間的重大變更而造成的任何停機時間。

元件和 API

您可以透過 Dapr 延伸模組使用所有 Dapr 元件和 API,包括 Alpha 和 Beta 狀態元件和 API。 不過,Microsoft只支援一部分 API 和元件,並遵循 定義的問題處理原則

穩定 Dapr API

Dapr 延伸模組支援穩定版本的 Dapr API(建置組塊)。

Dapr API 狀態 描述
服務對服務叫用 穩定 探索服務,並使用自動 mTLS 驗證和加密來執行可靠、直接的服務對服務呼叫。(#limitations)
狀態管理 穩定 提供交易和 CRUD 作業的狀態管理功能。
發行/訂閱 穩定 允許發行者和訂閱者應用程式透過中繼訊息代理程式進行通訊。 您也可以使用外部元件 JSON 檔案,建立主題的宣告式訂閱
繫結 穩定 根據事件觸發您的應用程式。
執行者 穩定 Dapr 執行者是訊息驅動型的單一執行緒工作單位,專為快速調整而設計。 例如,在高載工作負載的情況下。
可檢視性 穩定 將追蹤資訊傳送至 Application Insights 後端。
密碼 穩定 從應用程式程式碼存取祕密,或參考 Dapr 元件中的安全值。
Configuration 穩定 擷取並訂閱支援組態的應用程式組態專案。 商店。

第 1 層與第 2 層元件

支援 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
祕密管理 Azure Key Vault secrets.azure.keyvault
第 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
configuration.postgresql
configuration.redis

雲端/區域

下列區域支援 AKS 和 Arc 支援全域 Azure 雲端:

區域 AKS 支援 適用於 Kubernetes 的 Arc 支援
australiaeast ✔️ ✔️
australiasoutheast ✔️
brazilsouth ✔️
canadacentral ✔️ ✔️
canadaeast ✔️ ✔️
centralindia ✔️ ✔️
centralus ✔️ ✔️
eastasia ✔️ ✔️
eastus ✔️ ✔️
eastus2 ✔️ ✔️
eastus2euap ✔️
francecentral ✔️ ✔️
francesouth ✔️
germanywestcentral ✔️ ✔️
japaneast ✔️ ✔️
japanwest ✔️
koreacentral ✔️ ✔️
koreasouth ✔️
northcentralus ✔️ ✔️
northeurope ✔️ ✔️
norwayeast ✔️
southafricanorth ✔️
southcentralus ✔️ ✔️
southeastasia ✔️ ✔️
southindia ✔️
swedencentral ✔️ ✔️
switzerlandnorth ✔️ ✔️
uaenorth ✔️
uksouth ✔️ ✔️
ukwest ✔️
westcentralus ✔️ ✔️
westeurope ✔️ ✔️
westus ✔️ ✔️
westus2 ✔️ ✔️
westus3 ✔️ ✔️

常見問題集

Dapr 和服務網格的比較方式為何?

答:其中服務網格定義為網路服務網格,Dapr 不是服務網格。 雖然 Dapr 和服務網格確實提供一些重疊的功能,但服務網格著重於網路考量,而 Dapr 則著重於提供建置組塊,以讓開發人員更輕鬆地建置應用程式作為微服務。 Dapr 是以開發人員為中心的,而服務網格則以基礎結構為中心。

Dapr 與服務網格共用的一些常見功能包括:

  • 使用 mTLS 加密保護服務對服務通訊
  • 服務對服務計量集合
  • 服務對服務分散式追蹤
  • 透過重試進行復原

此外,Dapr 提供其他應用層級建置組塊,用於狀態管理、發佈/子傳訊、執行者等。 不過,Dapr 不提供流量行為的功能,例如路由或流量分割。 如果您的解決方案會受益於服務網格所提供的流量,則請考慮使用 Open Service Mesh

如需 Dapr 和服務網格的詳細資訊,以及如何將其搭配使用,請造訪 Dapr 文件

Dapr 祕密 API 與祕密存放區 CSI 驅動程式相比有何差異?

Dapr 祕密 API 和受控祕密存放區 CSI 驅動程式都允許整合保留在外部存放區中的祕密,並從應用程式程式碼抽象化祕密存放區技術。 祕密存放區 CSI 驅動程式會掛接 Azure Key Vault 中所保留的祕密,作為應用程式取用的 CSI 磁碟區。 Dapr 會透過 RESTful API 公開秘密,其可以是:

  • 由應用程式程式代碼呼叫
  • 使用各種秘密存放區設定

下表列出每個供應項目的功能:

Dapr 祕密 API 祕密存放區 CSI 驅動程式
支援的祕密存放區 本機環境變數 (適用於開發); 本機檔案 (適用於開發); Kubernetes 祕密; AWS 祕密管理員; Azure Key Vault 祕密存放區; 在 Kubernetes 上使用受控身分識別的 Azure Key Vault; GCP 祕密管理員; HashiCorp Vault Azure Key Vault 祕密存放區
存取應用程式程式碼中的祕密 呼叫 Dapr 祕密 API 以 Kubernetes 祕密形式存取掛接的磁碟區或同步掛接的內容,並設定環境變數
祕密輪替 新的 API 呼叫會取得已更新的祕密 輪詢祕密,並以可設定的間隔來更新掛接
記錄和計量 Dapr 側車會產生記錄,其可使用 Azure 監視器這類收集器進行設定、透過 Prometheus 發出計量,並公開 HTTP 端點以進行健康情況檢查 透過 Prometheus 發出驅動程式和 Azure Key Vault 提供者計量

如需 Dapr 中秘密管理的詳細資訊,請參閱 秘密管理概觀

如需祕密存放區 CSI 驅動程式和 Azure Key Vault 提供者的詳細資訊,請參閱祕密存放區 CSI 驅動程式概觀

受控 Dapr 叢集延伸模組與開放原始碼 Dapr 供應項目相比有何差異?

受控 Dapr 叢集延伸模組是在 AKS 叢集上佈建 Dapr 的最簡單方法。 透過此延伸模組,您可以選擇自動升級,以卸載 Dapr 執行階段版本的管理。 此外,此延伸模組會安裝具有智慧預設值的 Dapr (例如,以高可用性模式佈建 Dapr 控制平面)。

透過 helm 或 Dapr CLI 安裝 Dapr 開放原始碼 時,開發人員和叢集維護人員也會負責運行時間版本和組態選項。

最後,Dapr 延伸模組是 AKS 的延伸模組,因此您可以預期與其他 AKS 功能相同的支援原則。

深入瞭解如何從 Dapr 開放原始碼 移轉至 AKS 的 Dapr 擴充功能。

如何使用受控識別向 Microsoft Entra ID 驗證 Dapr 元件?

如果我已透過 Helm 這類方法來安裝 Dapr,則該如何切換至使用 Dapr 延伸模組?

建議的指導是從 AKS 叢集完全解除安裝 Dapr,然後透過叢集延伸模組重新安裝。

如果您透過 AKS 延伸模組安裝 Dapr,我們建議繼續使用延伸模組來管理 Dapr,而不是 Dapr CLI。 合併這兩個工具可能會導致衝突,並導致出現不想要的行為。

後續步驟

了解 Dapr 和其所解決的一些挑戰之後,請嘗試使用 Dapr 叢集延伸模組部署應用程式