共用方式為


使用適用於 Azure Kubernetes Service (AKS) 的 Dapr 延伸模組部署和執行工作流程

透過 Dapr 工作流程,您可以輕鬆地跨各種微服務協調傳訊、狀態管理和失敗處理邏輯。 Dapr 工作流程可協助您建立長時間執行、具容錯能力的具狀態的應用程式。

在此指南中,您會使用已提供的訂單處理工作流程範例 (英文) 來:

  • 建立適用於此範例的 Azure Container Registry 和 AKS 叢集。
  • 在 AKS 叢集上安裝 Dapr 延伸模組。
  • 將範例應用程式部署至 AKS。
  • 使用 HTTP API 呼叫來啟動和查詢工作流程執行個體。

工作流程範例是含有下列項目的 ASP.NET Core 專案:

注意

Dapr 工作流程目前是一項 Beta (英文) 功能,其為自助式且可選擇加入的功能。 Beta Dapr API 和元件會以「現狀」和「可用」的形式提供,並隨著其走向穩定狀態而不斷演進。 客戶支援並未涵蓋 Beta API 和元件。

必要條件

設定環境

複製範例專案

複製範例工作流程應用程式。

git clone https://github.com/Azure/dapr-workflows-aks-sample.git

瀏覽至範例的根目錄。

cd dapr-workflows-aks-sample

建立 Kubernetes 叢集

建立資源群組來保存 AKS 叢集。

az group create --name myResourceGroup --location eastus

建立 AKS 叢集。

az aks create --resource-group myResourceGroup --name myAKSCluster --node-count 2 --generate-ssh-keys 

確定 kubectl 已安裝且指向您的 AKS 叢集。 如果您使用 Azure Cloud Shell,則 kubectl 已安裝。

如需詳細資訊,請參閱部署 AKS 叢集 (部分機器翻譯) 教學課程。

將應用程式部署至 AKS

在 AKS 叢集上安裝 Dapr

在 AKS 叢集上安裝 Dapr 延伸模組。 在開始之前,請確定您有下列項目:

az k8s-extension create --cluster-type managedClusters --cluster-name myAKSCluster --resource-group myResourceGroup --name dapr --extension-type Microsoft.Dapr

確認已安裝 Dapr:

kubectl get pods -A

部署 Redis 執行者狀態存放區元件

瀏覽至範例分支版本中的 Deploy 目錄:

cd Deploy

部署 Redis 元件:

helm repo add bitnami https://charts.bitnami.com/bitnami
helm install redis bitnami/redis
kubectl apply -f redis.yaml

執行應用程式

部署 Redis 之後,請將應用程式部署至 AKS:

kubectl apply -f deployment.yaml

公開 Dapr sidecar 和範例應用程式:

kubectl apply -f service.yaml
export APP_URL=$(kubectl get svc/workflows-sample -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
export DAPR_URL=$(kubectl get svc/workflows-sample-dapr -o jsonpath='{.status.loadBalancer.ingress[0].ip}')

確認已匯出上述命令:

echo $APP_URL
echo $DAPR_URL

啟動工作流程

應用程式和 Dapr 目前均已部署至 AKS 叢集,您現在可以啟動並查詢工作流程執行個體。 對範例應用程式使用下列 API 呼叫,將項目補充至庫存中:

curl -X GET $APP_URL/stock/restock

啟動工作流程:

curl -i -X POST $DAPR_URL/v1.0-beta1/workflows/dapr/OrderProcessingWorkflow/start?instanceID=1234 \
  -H "Content-Type: application/json" \
  -d '{ "input" : {"Name": "Paperclips", "TotalCost": 99.95, "Quantity": 1}}'

預期輸出:

HTTP/1.1 202 Accepted
Content-Type: application/json
Traceparent: 00-00000000000000000000000000000000-0000000000000000-00
Date: Tue, 23 Apr 2024 15:35:00 GMT
Content-Length: 21

檢查工作流程狀態:

curl -i -X GET $DAPR_URL/v1.0-beta1/workflows/dapr/1234

預期輸出:

HTTP/1.1 200 OK
Content-Type: application/json
Traceparent: 00-00000000000000000000000000000000-0000000000000000-00
Date: Tue, 23 Apr 2024 15:51:02 GMT
Content-Length: 580

{
  "instanceID":"1234",
  "workflowName":"OrderProcessingWorkflow",
  "createdAt":"2024-04-23T15:35:00.156714334Z",
  "lastUpdatedAt":"2024-04-23T15:35:00.176459055Z",
  "runtimeStatus":"COMPLETED",
  "dapr.workflow.input":"{ \"input\" : {\"Name\": \"Paperclips\", \"TotalCost\": 99.95, \"Quantity\": 1}}",
  "dapr.workflow.output":"{\"Processed\":true}"
}

請注意,工作流程狀態會標示為已完成。

下一步