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
- Ein Azure-Abonnement mit der Rolle „Besitzer“ oder „Administrator“.
- Aktuelle Version der Azure CLI
- NeuesteDocker-Version
- Neueste Helm-Version
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:
- Installierte oder aktualisierte
k8s-extension
. - Registrierter
Microsoft.KubernetesConfiguration
-Dienstanbieter
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
Azure Kubernetes Service