Partager via


Déployez et exécutez des flux de travail avec l’extension Dapr pour Azure Kubernetes Service (AKS)

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 :

  • FichierProgram.cs qui 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 Workflows répertoire.
  • Définitions d’activité de flux de travail trouvées dans le Activities répertoire.

Prérequis

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 :

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é.

Étapes suivantes