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:
- En
Program.cs
fil som innehåller konfigurationen av appen, inklusive registrering av arbetsflödes- och arbetsflödesaktiviteter. - Arbetsflödesdefinitioner som finns i
Workflows
katalogen. - Definitioner för
Activities
arbetsflödesaktivitet som finns i katalogen.
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
- En Azure-prenumeration med rollen Ägare eller Administratör.
- Den senaste versionen av Azure CLI
- Senaste Docker
- Senaste Helm
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:
- Installerade eller uppdaterade
k8s-extension
. Microsoft.KubernetesConfiguration
Registrerade tjänstleverantören
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
Azure Kubernetes Service