Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Met Dapr Workflow kunt u eenvoudig berichtbeheer, statusbeheer en foutafhandelingslogica in verschillende microservices organiseren. Met Dapr Workflow kunt u langlopende, fouttolerante en toestandbewarende applicaties maken.
In deze handleiding gebruikt u het opgegeven werkstroomvoorbeeld voor orderverwerking om het volgende te doen:
- Maak een Azure Container Registry en een AKS-cluster voor dit voorbeeld.
- Installeer de Dapr-extensie op uw AKS-cluster.
- Implementeer de voorbeeldtoepassing in AKS.
- Werkstroomexemplaren starten en er query's op uitvoeren met behulp van HTTP-API-aanroepen.
Het werkstroomvoorbeeld is een ASP.NET Core-project met:
- Een
Program.csbestand dat de installatie van de app bevat, inclusief de registratie van de werkstroom- en werkstroomactiviteiten. - Werkstroomdefinities gevonden in de
Workflowsmap. - Definities van werkstroomactiviteit gevonden in de
Activitiesmap.
Vereisten
- Een Azure-abonnement met de rol Eigenaar of Beheerder
- Een rol voor beheer van op rollen gebaseerd toegangsbeheer voor Azure Kubernetes Service
- De nieuwste versie van de Azure CLI
- De nieuwste versie van Dapr
- Nieuwste Docker
- Nieuwste Helm
De omgeving instellen
Het voorbeeldproject klonen
Kloon de voorbeeldwerkstroomtoepassing.
git clone https://github.com/Azure-Samples/dapr-workflows-aks-sample.git
Navigeer naar de hoofdmap van het voorbeeld.
cd dapr-workflows-aks-sample
Een Kubernetes-cluster maken
Maak een resourcegroep voor het AKS-cluster.
az group create --name <your-resource-group> --location eastus
Maak een AKS-cluster.
az aks create --resource-group <your-resource-group> --name <your-AKS-cluster> --node-count 2 --generate-ssh-keys
Zorg ervoor dat kubectl is geïnstalleerd en naar uw AKS-cluster wijst. Als u Azure Cloud Shell gebruikt, is kubectl al geïnstalleerd.
Zie de zelfstudie Een AKS-cluster implementeren voor meer informatie.
De toepassing implementeren in AKS
Dapr installeren op uw AKS-cluster
Installeer de Dapr-extensie op uw AKS-cluster. Voordat u begint, moet u het volgende doen:
-
Installeer of werk de
k8s-extension -
De serviceprovider
Microsoft.KubernetesConfigurationregistreren
az k8s-extension create --cluster-type managedClusters --cluster-name myAKSCluster --resource-group <your-resource-group> --name dapr --extension-type Microsoft.Dapr
Na enkele minuten toont de uitvoer de Dapr-verbinding met uw AKS-cluster. Initialiseer vervolgens Dapr in uw cluster.
dapr init -k
Controleer of Dapr is geïnstalleerd:
kubectl get pods -A
Het Redis Actor State Store-onderdeel implementeren
Navigeer naar de Deploy-map in uw geforkte versie van het voorbeeld.
cd Deploy
Implementeer het Redis-onderdeel:
helm repo add bitnami https://charts.bitnami.com/bitnami
helm install redis bitnami/redis
kubectl apply -f redis.yaml
De toepassing uitvoeren
Zodra Redis is geïmplementeerd, implementeert u de toepassing in AKS:
kubectl apply -f deployment.yaml
De Dapr-sidecar en de voorbeeld-app beschikbaar maken:
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}')
Controleer of de bovenstaande opdrachten zijn geëxporteerd:
echo $APP_URL
echo $DAPR_URL
De werkstroom starten
Nu de toepassing en Dapr zijn geïmplementeerd in het AKS-cluster, kunt u nu werkstroomexemplaren starten en er query's op uitvoeren. Vul de voorraad aan met behulp van de volgende API-aanroep naar de voorbeeldapplicatie.
curl -X GET $APP_URL/stock/restock
Start de werkstroom:
curl -i -X POST $DAPR_URL/v1.0/workflows/dapr/OrderProcessingWorkflow/start \
-H "Content-Type: application/json" \
-H "dapr-app-id: dwf-app" \
-d '{"Name": "Paperclips", "TotalCost": 99.95, "Quantity": 1}'
Verwachte uitvoer bevat een automatisch gegenereerde exemplaar-id:
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
{"instanceID":"<generated-id>"}
Controleer de werkstroomstatus:
curl -i -X GET $DAPR_URL/v1.0/workflows/dapr/OrderProcessingWorkflow/<instance-id> \
-H "dapr-app-id: dwf-app"
Verwachte uitvoer:
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
Bewaak de toepassingslogboeken:
kubectl logs -l run=workflows-sample -c workflows-sample --tail=20
Verwachte uitvoer:
{
"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}"
}
U ziet dat de workflowstatus als voltooid is gemarkeerd.