使用適用於 Azure Kubernetes Service (AKS) 的 Dapr 延伸模組部署和執行工作流程
透過 Dapr 工作流程,您可以輕鬆地跨各種微服務協調傳訊、狀態管理和失敗處理邏輯。 Dapr 工作流程可協助您建立長時間執行、具容錯能力的具狀態的應用程式。
在此指南中,您會使用已提供的訂單處理工作流程範例 (英文) 來:
- 建立適用於此範例的 Azure Container Registry 和 AKS 叢集。
- 在 AKS 叢集上安裝 Dapr 延伸模組。
- 將範例應用程式部署至 AKS。
- 使用 HTTP API 呼叫來啟動和查詢工作流程執行個體。
工作流程範例是含有下列項目的 ASP.NET Core 專案:
- 包含應用程式設定的
Program.cs
檔案 (英文),包括工作流程的註冊和工作流程活動。 - 在
Workflows
目錄中找到的工作流程定義。 - 在
Activities
目錄 (英文) 中找到的工作流程活動定義。
注意
Dapr 工作流程目前是一項 Beta (英文) 功能,其為自助式且可選擇加入的功能。 Beta Dapr API 和元件會以「現狀」和「可用」的形式提供,並隨著其走向穩定狀態而不斷演進。 客戶支援並未涵蓋 Beta API 和元件。
必要條件
- 具有擁有者或系統管理員角色的 Azure 訂用帳戶。
- 最新版本的 Azure CLI
- 最新版的 Docker (英文)
- 最新版的 Helm (英文)
設定環境
複製範例專案
複製範例工作流程應用程式。
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 延伸模組。 在開始之前,請確定您有下列項目:
- 安裝或更新
k8s-extension
(部分機器翻譯)。 - 註冊
Microsoft.KubernetesConfiguration
服務提供者 (部分機器翻譯)
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}"
}
請注意,工作流程狀態會標示為已完成。