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
- Una sottoscrizione di Azure con ruolo Proprietario o Amministratore.
- La versione più recente dell'interfaccia della riga di comando di Azure
- Docker più recente
- Helm più recente
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:
- Installato o aggiornato
k8s-extension
. - Registrato il
Microsoft.KubernetesConfiguration
provider di servizi
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
Azure Kubernetes Service