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.cs
fichier 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
- Un abonnement Azure avec le rôle Propriétaire ou Administrateur.
- La version la plus récente de l’interface Azure CLI
- 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/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.KubernetesConfiguration
fournisseur de services
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
Azure Kubernetes Service