Share via


Werkstromen implementeren en uitvoeren met de Dapr-extensie voor Azure Kubernetes Service (AKS)

Met Dapr Workflow kunt u eenvoudig berichtbeheer, statusbeheer en foutafhandelingslogica in verschillende microservices organiseren. Met Dapr Workflow kunt u langlopende, fouttolerante en stateful toepassingen 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.cs bestand dat de installatie van de app bevat, inclusief de registratie van de werkstroom- en werkstroomactiviteiten.
  • Werkstroomdefinities gevonden in de Workflows map.
  • Definities van werkstroomactiviteit gevonden in de Activities map.

Notitie

Dapr Workflow is momenteel een bètafunctie en is op basis van selfservice, opt-in. Bèta-Dapr-API's en -onderdelen worden geleverd 'zoals is' en 'als beschikbaar', en ontwikkelen zich voortdurend naar een stabiele status. Bèta-API's en onderdelen vallen niet onder klantondersteuning.

Vereisten

  • Een Azure-abonnement met de rol Eigenaar of Beheer.
  • De nieuwste versie van de Azure CLI
  • Nieuwste Docker
  • Nieuwste Helm

De omgeving instellen

Het voorbeeldproject klonen

Kloon de voorbeeldwerkstroomtoepassing.

git clone https://github.com/Azure/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 myResourceGroup --location eastus

Maak een AKS-cluster.

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

Zorg ervoor dat kubectl het AKS-cluster is geïnstalleerd en aangegeven. 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 ervoor zorgen dat u het volgende hebt:

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

Controleer of Dapr is geïnstalleerd:

kubectl get pods -A

Het redis Actor State Store-onderdeel implementeren

Navigeer naar de map in uw Deploy gesplitste 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. Voorraaditems in de voorraad met behulp van de volgende API-aanroep naar de voorbeeld-app:

curl -X GET $APP_URL/stock/restock

Start de werkstroom:

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

Verwachte uitvoer:

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

Controleer de werkstroomstatus:

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

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

{
  "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 werkstroomstatus is gemarkeerd als voltooid.

Volgende stappen

Meer informatie over het toevoegen van configuratie-instellingen aan de Dapr-extensie in uw AKS-cluster.