Condividi tramite


Distribuire ed eseguire flussi di lavoro con l'estensione Dapr per il servizio Azure Kubernetes (AKS)

Con Il flusso di lavoro Dapr è possibile orchestrare facilmente la messaggistica, la gestione dello stato e la logica di gestione degli errori in vari microservizi. Il flusso di lavoro Dapr consente di creare applicazioni a esecuzione prolungata, a tolleranza di errore e con stato.

In questa guida viene usato l'esempio di flusso di lavoro di elaborazione degli ordini fornito per:

  • Creare un Registro Azure Container e un cluster del servizio Azure Kubernetes per questo esempio.
  • Installare l'estensione Dapr nel cluster del servizio Azure Kubernetes.
  • Distribuire l'applicazione di esempio nel servizio Azure Kubernetes.
  • Avviare ed eseguire query su istanze del flusso di lavoro usando chiamate API HTTP.

L'esempio del flusso di lavoro è un progetto ASP.NET Core con:

  • Un Program.cs file che contiene l'installazione dell'app, inclusa la registrazione del flusso di lavoro e delle attività del flusso di lavoro.
  • Definizioni del flusso di lavoro trovate nella Workflows directory.
  • Definizioni di attività del flusso di lavoro trovate nella Activities directory.

Nota

Il flusso di lavoro Dapr è attualmente una funzionalità beta ed è in modalità self-service e acconsente esplicitamente. Le API Dapr Beta e i componenti vengono forniti "così come sono" e "come disponibili" e sono in continua evoluzione man mano che passano allo stato stabile. Le API Beta e i componenti alfa non sono coperti dal servizio clienti.

Prerequisiti

Configurare l'ambiente

Clonare il progetto di esempio

Clonare l'applicazione del flusso di lavoro di esempio.

git clone https://github.com/Azure/dapr-workflows-aks-sample.git

Passare alla directory radice dell'esempio.

cd dapr-workflows-aks-sample

Creare un cluster Kubernetes

Creare un gruppo di risorse per contenere il cluster del servizio Azure Kubernetes.

az group create --name myResourceGroup --location eastus

Creare un cluster del servizio Azure Kubernetes.

az aks create --resource-group myResourceGroup --name myAKSCluster --node-count 2 --generate-ssh-keys 

Assicurarsi che kubectl sia installato e che faccia riferimento al cluster del servizio Azure Kubernetes. Se si usa Azure Cloud Shell, kubectl è già installato.

Per altre informazioni, vedere l'esercitazione Distribuire un cluster del servizio Azure Kubernetes.

Distribuire l'applicazione nel servizio Azure Kubernetes

Installare Dapr nel cluster del servizio Azure Kubernetes

Installare l'estensione Dapr nel cluster del servizio Azure Kubernetes. Prima di iniziare, assicurarsi di avere:

az k8s-extension create --cluster-type managedClusters --cluster-name myAKSCluster --resource-group myResourceGroup --name dapr --extension-type Microsoft.Dapr

Verificare che Dapr sia installato:

kubectl get pods -A

Distribuire il componente dell'archivio stati dell'attore Redis

Passare alla directory Deploy nella versione con fork dell'esempio:

cd Deploy

Distribuire il componente Redis:

helm repo add bitnami https://charts.bitnami.com/bitnami
helm install redis bitnami/redis
kubectl apply -f redis.yaml

Eseguire l'applicazione

Dopo aver distribuito Redis, distribuire l'applicazione nel servizio Azure Kubernetes:

kubectl apply -f deployment.yaml

Esporre il sidecar Dapr e l'app di esempio:

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}')

Verificare che i comandi precedenti siano stati esportati:

echo $APP_URL
echo $DAPR_URL

Avviare il flusso di lavoro

Ora che l'applicazione e la Dapr sono distribuite nel cluster del servizio Azure Kubernetes, è ora possibile avviare ed eseguire query sulle istanze del flusso di lavoro. Rifornire gli elementi nell'inventario usando la chiamata API seguente all'app di esempio:

curl -X GET $APP_URL/stock/restock

Avviare il flusso di lavoro:

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}}'

Output previsto:

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

Controllare lo stato del flusso di lavoro:

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

Output previsto:

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

Si noti che lo stato del flusso di lavoro è contrassegnato come completato.

Passaggi successivi