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 :

  • Un Program.csfichier qui contient la configuration de l’application, y compris l’inscription du flux de travail et des activités du flux de travail.
  • Définitions de flux de travail trouvées dans le Workflows répertoire.
  • Définitions des activité de flux de travail trouvées dans le Activities répertoire.

Remarque

Le Workflow Dapr est actuellement une fonction bêta. Il s'agit d'une fonctionnalité en libre-service, sur la base d'adhésion. Les API et les composants Beta Dapr sont fournis « en l'état » et « selon leur disponibilité ». De plus, ils évoluent continuellement vers un état stable. Les API et les composants Beta ne sont pas couverts par l'assistance clientèle.

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/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

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-beta1/workflows/dapr/OrderProcessingWorkflow/start?instanceID=1234 \
  -H "Content-Type: application/json" \
  -d '{ "input" : {"Name": "Paperclips", "TotalCost": 99.95, "Quantity": 1}}'

Sortie attendue :

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

Vérifiez l’état du flux de travail :

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

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

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

Découvrez comment ajouter des paramètres de configuration à l’extension Dapr sur votre cluster AKS.