Freigeben über


Bereitstellen und Ausführen von Workflows mit der Dapr-Erweiterung für Azure Kubernetes Service (AKS)

Mit Dapr Workflow können Sie Messaging, Zustandsverwaltung und Fehlerbehandlungslogik problemlos über verschiedene Microservices hinweg orchestrieren. Dapr Workflow kann Ihnen helfen, zeitintensive, fehlertolerante und zustandsbehaftete Anwendungen zu erstellen.

In diesem Leitfaden verwenden Sie das bereitgestellte Beispiel für den Auftragsverarbeitungsworkflow für Folgendes:

  • Erstellen einer Azure Container Registry und eines AKS-Clusters für dieses Beispiel.
  • Installieren der Dapr-Erweiterung in Ihrem AKS-Cluster.
  • Bereitstellen der Beispielanwendung in AKS.
  • Starten und Abfragen von Workflowinstanzen mithilfe von HTTP-API-Aufrufen.

Das Workflowbeispiel ist ein ASP.NET Core-Projekt mit:

  • Einer Program.cs-Datei, die das Setup der App enthält, einschließlich der Registrierung des Workflows und der Workflowaktivitäten.
  • Workflowdefinitionen, die sich im Verzeichnis Workflows befinden.
  • Workflowaktivitäts-Definitionen, die sich im Verzeichnis Activities befinden.

Hinweis

Dapr Workflow ist derzeit ein Beta-Feature und wird auf Self-Service-Basis zum Abonnieren bereitgestellt. Beta Dapr-APIs und -Komponenten werden „wie besehen“ und „wie verfügbar“ bereitgestellt und werden ständig weiterentwickelt, während sie sich in Richtung stabiler Status bewegen. Beta-APIs und -Komponenten werden nicht vom Kundensupport abgedeckt.

Voraussetzungen

Einrichten der Umgebung

Klonen des Beispielprojekts

Klonen Sie die Beispielworkflowanwendung.

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

Navigieren Sie zum Stammverzeichnis des Beispiels.

cd dapr-workflows-aks-sample

Erstellen eines Kubernetes-Clusters

Erstellen Sie eine Ressourcengruppe zur Aufnahme des AKS-Clusters.

az group create --name myResourceGroup --location eastus

Erstellen Sie einen AKS-Cluster.

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

Stellen Sie sicher, dass kubectl installiert ist und auf Ihren AKS-Cluster verweist. Wenn Sie Azure Cloud Shell verwenden, ist kubectl bereits installiert.

Weitere Informationen finden Sie im Tutorial Bereitstellen eines AKS-Clusters.

Bereitstellen der Anwendung in AKS

Installieren von Dapr in Ihrem AKS-Cluster

Installieren der Dapr-Erweiterung in Ihrem AKS-Cluster. Stellen Sie zunächst sicher, dass Sie über Folgendes verfügen:

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

Überprüfen Sie, ob Dapr installiert ist:

kubectl get pods -A

Bereitstellen der Redis Actor-Zustandsspeicherkomponente

Navigieren Sie zum Verzeichnis Deploy in Ihrer geforkten Version des Beispiels:

cd Deploy

Stellen Sie die Redis-Komponente bereit:

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

Ausführen der Anwendung

Nachdem Redis bereitgestellt wurde, stellen Sie die Anwendung in AKS bereit:

kubectl apply -f deployment.yaml

Machen Sie das Dapr Sidecar und die Beispiel-App verfügbar:

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

Überprüfen Sie, ob die obigen Befehle exportiert wurden:

echo $APP_URL
echo $DAPR_URL

Starten des Workflows

Nachdem die Anwendung und Dapr nun im AKS-Cluster bereitgestellt wurden, können Sie jetzt Workflowinstanzen starten und abfragen. Elemente im Bestand mithilfe des folgenden API-Aufrufs der Beispiel-App neu auffüllen:

curl -X GET $APP_URL/stock/restock

Starten Sie den Workflow:

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

Erwartete Ausgabe:

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

Überprüfen Sie den Workflowstatus:

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

Erwartete Ausgabe:

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

Beachten Sie, dass der Workflowstatus als „Abgeschlossen“ gekennzeichnet ist.

Nächste Schritte