Dela via


Distribuera och köra arbetsflöden med Dapr-tillägget för Azure Kubernetes Service (AKS)

Med Dapr Workflow kan du enkelt orkestrera meddelandehantering, tillståndshantering och felhanteringslogik över olika mikrotjänster. Dapr Workflow kan hjälpa dig att skapa tidskrävande, feltoleranta och tillståndskänsliga program.

I den här guiden använder du det angivna arbetsflödesexemplet för orderbearbetning för att:

  • Skapa ett Azure Container Registry och ett AKS-kluster för det här exemplet.
  • Installera Dapr-tillägget i AKS-klustret.
  • Distribuera exempelprogrammet till AKS.
  • Starta och fråga arbetsflödesinstanser med HJÄLP av HTTP API-anrop.

Arbetsflödesexemplet är ett ASP.NET Core-projekt med:

Kommentar

Dapr Workflow är för närvarande en betafunktion och är på självbetjäning, opt-in basis. Beta Dapr-API:er och komponenter tillhandahålls "som är" och "som tillgängliga" och utvecklas kontinuerligt när de går mot stabil status. Beta-API:er och komponenter omfattas inte av kundsupport.

Förutsättningar

Konfigurera miljön

Klona exempelprojektet

Klona exempelarbetsflödesprogrammet.

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

Navigera till exemplets rotkatalog.

cd dapr-workflows-aks-sample

Skapa ett Kubernetes-kluster

Skapa en resursgrupp som ska innehålla AKS-klustret.

az group create --name myResourceGroup --location eastus

Skapa ett AKS-kluster.

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

Kontrollera att kubectl är installerat och pekat på ditt AKS-kluster. Om du använder Azure Cloud Shell är kubectl redan installerat.

Mer information finns i självstudien Distribuera ett AKS-kluster .

Distribuera programmet till AKS

Installera Dapr på ditt AKS-kluster

Installera Dapr-tillägget i AKS-klustret. Innan du börjar kontrollerar du att du har:

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

Kontrollera att Dapr är installerat:

kubectl get pods -A

Distribuera redis-aktörens tillståndslagerkomponent

Navigera till Deploy katalogen i din förgrenade version av exemplet:

cd Deploy

Distribuera Redis-komponenten:

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

Kör appen

När Redis har distribuerats distribuerar du programmet till AKS:

kubectl apply -f deployment.yaml

Exponera Dapr-sidovagnen och exempelappen:

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}')

Kontrollera att ovanstående kommandon har exporterats:

echo $APP_URL
echo $DAPR_URL

Starta arbetsflödet

Nu när programmet och Dapr har distribuerats till AKS-klustret kan du nu starta och fråga arbetsflödesinstanser. Fylla på objekt i lagret med hjälp av följande API-anrop till exempelappen:

curl -X GET $APP_URL/stock/restock

Starta arbetsflödet:

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}}'

Förväntad utdata:

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

Kontrollera arbetsflödets status:

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

Förväntad utdata:

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}"
}

Observera att arbetsflödesstatusen är markerad som slutförd.

Nästa steg