分享方式:


適用於 Azure Kubernetes Service (AKS) 和已啟用 Arc 的 Kubernetes 的 Dapr 延伸模組

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

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

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

功能

使用 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.14.x
  • 1.13.x
  • 1.12.x

您可以執行 Azure CLI 命令,以擷取叢集中或位置中可用的版本清單。

了解如何檢視並鎖定受控 AKS 叢集可用的最新穩定 Dapr 版本。

執行階段支援

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

自我管理

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

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

自動升級

啟用自動升級 需要仔細考慮。 雖然自動升級可讓 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 Cosmos DB
Azure Blob 儲存體 v1
Azure 資料表儲存體
Microsoft SQL Server
state.azure.cosmosdb
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 secretstores.azure.keyvault

第 2 層元件

API 元件 類型
狀態管理 PostgreSQL
MySQL & MariaDB
Redis
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 與服務網格共用的一些常見功能包括:

  • 使用 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 開放原始碼時,開發人員和叢集維護人員也會負責 run-time 版本和設定選項。

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

深入了解如何從 Dapr 開放原始碼遷移至 AKS 的 Dapr 延伸模組

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

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

建議的指導是從 AKS 叢集完全解除安裝 Dapr,然後透過叢集延伸模組重新安裝。 您也可以檢查現有的 Dapr 安裝,並將其遷移至 AKS。

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

後續步驟