Dapr 與 Azure 容器應用的集成

Distributed Application Runtime (Dapr) 是一組可逐步採用的 API,用於簡化基於微服務的分佈式應用程序的創作。 例如,Dapr 提供了用於啓用應用程序相互通信(無論通信方式是通過發佈 / 訂閱進行的消息傳遞還是可靠且安全的服務到服務調用)的功能。 一旦在容器應用中啓用,Dapr 將通過一個跨鬥(一個與你的每個容器應用一起運行的進程)公開其 HTTP 和 gRPC API。

Dapr API(也稱爲構建基塊)是基於最佳做法行業標準構建的,它們:

Dapr 構建基塊

USTyn4

Dapr 設置

以下發布 / 訂閱示例演示了 Dapr 如何與容器應用一起工作:

ahlkvF

啓用 Dapr

可以通過 Azure CLI 或使用 “基礎結構即代碼” 模板(例如 bicep 或 Azure 資源管理器 (ARM) 模板)爲容器應用定義 Dapr 配置。 可以使用以下設置在應用中啓用 Dapr:

dj6aN1

以下示例演示瞭如何通過將 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 組件類型,例如狀態存儲、發佈 / 訂閱代理等。 在下面的示例中,你將找到可用於在 Azure 容器應用中定義 Dapr 組件的各種架構。 容器應用清單與 Dapr OSS 清單略有不同,這是爲了簡化組件創建體驗。

 備註

默認情況下,同一環境中所有已啓用 Dapr 的容器應用都將加載完整的一組已部署組件。 通過將範圍添加到組件,可以告知每個相應容器應用的 Dapr 跨鬥在運行時要加載哪些組件。 建議對生產工作負荷使用範圍。

通過 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 功能

已知的限制

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/lcvmdEcAZ94rjr4r--G6xg