Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In dieser Schnellstartanleitung stellen Sie ein vorhandenes .NET Durable Task SDK-Beispiel für Azure Kubernetes Service (AKS) bereit, mit dem Durable Task Scheduler als Orchestrierungs-Back-End. Die Bereitstellung verwendet Azure Developer CLI (azd) und das Beispiel für die dokumentverarbeitung.
Hier erfahren Sie, wie Sie:
- Richten Sie den Emulator für den Durable Task Scheduler lokal ein und führen Sie ihn aus.
- Führen Sie die .NET Client- und Arbeitsprojekte im AKS-Szenariobeispiel aus.
- Stellen Sie die Beispielinfrastruktur und die Apps in AKS mit
azd upbereit. - Überprüfen Sie die Orchestrierungsausführung in AKS, indem Sie Pod-Protokolle überprüfen.
Voraussetzungen
Bevor Sie beginnen:
Installieren:
Klonen Sie das Durable Task Scheduler-Beispiel-Repository.
Melden Sie sich bei Azure und der Azure Developer CLI an:
az login azd auth login
Vorbereiten und lokales Ausführen des Beispiels
Wechseln Sie im Repositorystamm zum AKS-Szenariobeispiel:
cd samples/scenarios/DocumentProcessingOnAKSStarten Sie den Emulator für den dauerhaften Aufgabenplaner:
docker run --name dts-emulator -d -p 8080:8080 -p 8082:8082 mcr.microsoft.com/dts/dts-emulator:latestDer Emulator macht Folgendes verfügbar:
-
8080für gRPC-App-Konnektivität. -
8082für das Scheduler-Dashboard.
-
Erstellen Sie die Lösung:
dotnet build DurableTaskOnAKS.slnFühren Sie in einem Terminal den Worker aus:
cd Worker dotnet runFühren Sie in einem zweiten Terminal den Client aus:
cd Client dotnet runÜberprüfen Sie, dass die folgende Ausgabe im Client-Terminal angezeigt wird:
Endpoint: http://localhost:8080 | TaskHub: default Submitting 3 documents... Scheduled [...] 'Cloud Migration Strategy' -> Processed 'Cloud Migration Strategy': Sentiment=Positive, Topic=Technology, Priority=Normal Scheduled [...] 'Quarterly Incident Report' -> Processed 'Quarterly Incident Report': Sentiment=Positive, Topic=Technology, Priority=Normal Scheduled [...] 'ML Model Evaluation' -> Processed 'ML Model Evaluation': Sentiment=Positive, Topic=Technology, Priority=Normal Done.
Bereitstellen in AKS mit Azure Developer CLI
Von
samples/scenarios/DocumentProcessingOnAKSaus ausführen:azd upWenn Sie dazu aufgefordert werden, geben Sie Folgendes an:
Parameter Beschreibung Umgebungsname Präfix, das für Ihre Bereitstellungsressourcen verwendet wird. Azure-Abonnement Azure Abonnement für die Bereitstellung. Azure-Standort Azure-Region für die Ressourcen.
azd up stellt die vollständige Lösung bereit, einschließlich:
- AKS-Cluster für die Client- und Worker-Workloads.
- Azure Container Registry (ACR) für Container-Images.
- Langlebiger Aufgabenplaner für den Orchestrierungszustand und die Ausführung.
- Vom Benutzer zugewiesene verwaltete Identität und Verbundanmeldeinformationen für die AKS-Workload Identity Authentication.
Überprüfen Sie die AKS-Bereitstellung
AKS-Zugangsdaten abrufen:
az aks get-credentials --resource-group <resource-group-name> --name <aks-cluster-name>Sie können diese Werte von
azd env get-valueserhalten.Vergewissern Sie sich, dass Pods ausgeführt werden:
kubectl get podsClientprotokolle überprüfen:
kubectl logs -l app=client --tail=30Überprüfen sie die Arbeitsprotokolle:
kubectl logs -l app=worker --tail=30
Wenn die Bereitstellung funktioniert, zeigen die Clientprotokolle geplante Orchestrierungen und abgeschlossene Ergebnisse der Dokumentverarbeitung an.
Überprüfen Sie mithilfe des Durable Task Scheduler Dashboards
Sie können ihren Aufgabenhub- und Orchestrierungsstatus auch über das Dashboard "Durable Task Scheduler" überprüfen.
Sie können den Orchestrierungsstatus und den Verlauf über das Dashboard "Durable Task Scheduler" anzeigen. Standardmäßig wird das Dashboard auf Port 8082 ausgeführt.
Navigieren Sie in Ihrem Webbrowser zu http://localhost:8082.
Klicken Sie auf den Standardaufgabenhub . Die von Ihnen erstellte Orchestrierungsinstanz befindet sich in der Liste.
Klicken Sie auf die Orchestrierungsinstanz-ID, um die Ausführungsdetails anzuzeigen.
Grundlegendes zum Code
Klient-App
Der Client erstellt einen Durable Task-Client, plant Orchestrierungen und wartet auf den Abschluss:
foreach (var doc in docs)
{
string id = await client.ScheduleNewOrchestrationInstanceAsync(
"DocumentProcessingOrchestration", doc);
var meta = await client.WaitForInstanceCompletionAsync(id, getInputsAndOutputs: true);
if (meta.RuntimeStatus == OrchestrationRuntimeStatus.Completed)
Console.WriteLine($" -> {meta.ReadOutputAs<string>()}\n");
}
Das Beispiel erstellt die connection string aus Umgebungsvariablen (ENDPOINT, TASKHUB, AZURE_CLIENT_ID), wobei lokale Emulatorstandardwerte verwendet werden, wenn diese Variablen nicht festgelegt werden.
Worker-App
Der Arbeiter registriert die Orchestrierung und Aktivitäten und verbindet sich dann mit dem Dauerhaften Aufgabenplaner:
builder.Services.AddDurableTaskWorker()
.AddTasks(r =>
{
r.AddOrchestrator<DocumentProcessingOrchestration>();
r.AddActivity<ValidateDocument>();
r.AddActivity<ClassifyDocument>();
})
.UseDurableTaskScheduler(connectionString);
Orchestrierungsablauf
Diese DocumentProcessingOrchestration-Demonstration veranschaulicht die Verkettung von Aktivitäten sowie das "Auffächern nach außen/innen":
bool isValid = await context.CallActivityAsync<bool>(nameof(ValidateDocument), doc);
var tasks = new[]
{
context.CallActivityAsync<ClassificationResult>(nameof(ClassifyDocument), new ClassifyRequest(doc.Id, doc.Content, "Sentiment")),
context.CallActivityAsync<ClassificationResult>(nameof(ClassifyDocument), new ClassifyRequest(doc.Id, doc.Content, "Topic")),
context.CallActivityAsync<ClassificationResult>(nameof(ClassifyDocument), new ClassifyRequest(doc.Id, doc.Content, "Priority")),
};
ClassificationResult[] results = await Task.WhenAll(tasks);
Bereinigen von Ressourcen
Um Gebühren zu vermeiden, löschen Sie bereitgestellte Azure Ressourcen:
azd down
Um den lokalen Emulator zu stoppen und zu entfernen:
docker stop dts-emulator
docker rm dts-emulator
Nächster Schritt
- Weitere Informationen finden Sie in der Übersicht über das Durable Task SDK.