Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Avec Dapr Workflow, vous pouvez facilement orchestrer la messagerie, la gestion des états et la logique de gestion des défaillances sur différents microservices. Dapr Workflow peut vous aider à créer des applications durables, tolérantes aux pannes et avec état.
Dans ce guide, vous utilisez l’exemple de flux de travail de traitement des commandes fourni pour :
- Créez un Azure Container Registry et un cluster AKS pour cet exemple.
- Installez l’extension Dapr sur votre cluster AKS.
- Déployez l’exemple d’application sur AKS.
- Démarrez et interrogez des instances de flux de travail à l’aide d’appels d’API HTTP.
L’exemple de flux de travail est un projet ASP.NET Core avec :
-
Fichier
Program.csqui contient la configuration de l’application, y compris l’inscription du flux de travail et des activités de flux de travail. - Définitions de flux de travail trouvées dans le
Workflowsrépertoire. - Définitions d’activité de flux de travail trouvées dans le
Activitiesrépertoire.
Prérequis
- Un abonnement Azure avec le rôle Propriétaire ou Administrateur.
- Un rôle d'administration du contrôle d'accès basé sur les rôles pour Azure Kubernetes Service
- La version la plus récente de l’interface Azure CLI
- La dernière version de Dapr
- Dernière version Docker
- Dernière version Helm
Configurer l’environnement
Clonez l’exemple de projet
Clonez l’exemple d’application du flux de travail.
git clone https://github.com/Azure-Samples/dapr-workflows-aks-sample.git
Accédez au répertoire racine des exemples.
cd dapr-workflows-aks-sample
Créer un cluster Kubernetes
Créez un groupe de ressources pour contenir le cluster AKS.
az group create --name myResourceGroup --location eastus
Créez un cluster AKS.
az aks create --resource-group myResourceGroup --name myAKSCluster --node-count 2 --generate-ssh-keys
Vérifiez que kubectl est installé et pointé vers votre cluster AKS. Si vous utilisez Azure Cloud Shell, kubectl est déjà installé.
Pour plus d’informations, consultez le tutoriel Déployer un cluster AKS.
Déployez l’application vers AKS
Installez Dapr sur votre cluster AKS
Installez l’extension Dapr sur votre cluster AKS. Avant de commencer, vérifiez que vous disposez des éléments suivants :
-
Installation ou mise à jour de
k8s-extension. -
Inscrit le
Microsoft.KubernetesConfigurationfournisseur de services
az k8s-extension create --cluster-type managedClusters --cluster-name myAKSCluster --resource-group myResourceGroup --name dapr --extension-type Microsoft.Dapr
Après quelques minutes, la sortie affiche la connexion Dapr à votre cluster AKS. Ensuite, initialisez Dapr sur votre cluster.
dapr init -k
Vérifiez que Dapr est installé :
kubectl get pods -A
Déployez le composant de stockage d’état Redis Actor
Accédez au répertoire Deploy dans votre version dupliquée de l’exemple :
cd Deploy
Déployez le composant Redis :
helm repo add bitnami https://charts.bitnami.com/bitnami
helm install redis bitnami/redis
kubectl apply -f redis.yaml
Exécution de l'application
Une fois que Redis est déployé, déployez l’application sur AKS :
kubectl apply -f deployment.yaml
Exposez le side-car Dapr et l’exemple d’application :
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}')
Vérifiez que les commandes ci-dessus ont été exportées :
echo $APP_URL
echo $DAPR_URL
Démarrer le flux de travail
Maintenant que l’application et Dapr sont déployés sur le cluster AKS, vous pouvez maintenant démarrer et interroger des instances de workflow. Réapprovisionnez les éléments dans l’inventaire en utilisant l’appel d’API suivant à l’exemple d’application :
curl -X GET $APP_URL/stock/restock
Démarrez le flux de travail :
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}'
La sortie attendue comprend un ID d’instance généré automatiquement :
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>"}
Vérifiez l’état du flux de travail :
curl -i -X GET $DAPR_URL/v1.0/workflows/dapr/OrderProcessingWorkflow/<instance-id> \
-H "dapr-app-id: dwf-app"
Sortie attendue :
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
Surveillez les journaux d’activité de l’application :
kubectl logs -l run=workflows-sample -c workflows-sample --tail=20
Sortie attendue :
{
"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}"
}
Notez que l’état du flux de travail est marqué comme terminé.