Implantar e executar fluxos de trabalho com a extensão Dapr para o Serviço Kubernetes do Azure (AKS)
Com o Dapr Workflow, você pode orquestrar facilmente mensagens, gerenciamento de estado e lógica de tratamento de falhas em vários microsserviços. O Dapr Workflow pode ajudá-lo a criar aplicativos de longa execução, tolerantes a falhas e com monitoração de estado.
Neste guia, você usa o exemplo de fluxo de trabalho de processamento de pedidos fornecido para:
- Crie um Registro de Contêiner do Azure e um cluster AKS para este exemplo.
- Instale a extensão Dapr no seu cluster AKS.
- Implante o aplicativo de exemplo no AKS.
- Inicie e consulte instâncias de fluxo de trabalho usando chamadas de API HTTP.
O exemplo de fluxo de trabalho é um projeto ASP.NET Core com:
- Um
Program.cs
arquivo que contém a configuração do aplicativo, incluindo o registro do fluxo de trabalho e das atividades do fluxo de trabalho. - Definições de
Workflows
fluxo de trabalho encontradas no diretório. - Definições de atividade de
Activities
fluxo de trabalho encontradas no diretório.
Nota
O Dapr Workflow é atualmente um recurso beta e está em uma base de autosserviço, opt-in. As APIs e os componentes do Beta Dapr são fornecidos "como estão" e "conforme disponíveis" e estão em constante evolução à medida que avançam para um status estável. APIs e componentes beta não são cobertos pelo suporte ao cliente.
Pré-requisitos
- Uma assinatura do Azure com função de Proprietário ou Administrador.
- A versão mais recente da CLI do Azure
- Docker mais recente
- Leme mais recente
Configurar o ambiente
Clone o projeto de exemplo
Clone o aplicativo de fluxo de trabalho de exemplo.
git clone https://github.com/Azure/dapr-workflows-aks-sample.git
Navegue até o diretório raiz do exemplo.
cd dapr-workflows-aks-sample
Criar um cluster do Kubernetes
Crie um grupo de recursos para manter o cluster AKS.
az group create --name myResourceGroup --location eastus
Crie um cluster AKS.
az aks create --resource-group myResourceGroup --name myAKSCluster --node-count 2 --generate-ssh-keys
Certifique-se de que kubectl
está instalado e apontado para o seu cluster AKS. Se utilizar o Azure Cloud Shell, o kubectl
já está instalado.
Para obter mais informações, consulte o tutorial Implantar um cluster AKS.
Implantar o aplicativo no AKS
Instale o Dapr no seu cluster AKS
Instale a extensão Dapr no seu cluster AKS. Antes de começar, certifique-se de que:
- Instalado ou atualizado o
k8s-extension
. - Registado o
Microsoft.KubernetesConfiguration
prestador de serviços
az k8s-extension create --cluster-type managedClusters --cluster-name myAKSCluster --resource-group myResourceGroup --name dapr --extension-type Microsoft.Dapr
Verifique se o Dapr está instalado:
kubectl get pods -A
Implantar o componente de armazenamento de estado do Ator Redis
Navegue até o Deploy
diretório em sua versão bifurcada do exemplo:
cd Deploy
Implante o componente Redis:
helm repo add bitnami https://charts.bitnami.com/bitnami
helm install redis bitnami/redis
kubectl apply -f redis.yaml
Executar a aplicação
Depois que o Redis for implantado, implante o aplicativo no AKS:
kubectl apply -f deployment.yaml
Exponha o sidecar Dapr e o aplicativo de exemplo:
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}')
Verifique se os comandos acima foram exportados:
echo $APP_URL
echo $DAPR_URL
Iniciar o fluxo de trabalho
Agora que o aplicativo e o Dapr estão implantados no cluster AKS, agora você pode iniciar e consultar instâncias de fluxo de trabalho. Reabasteça itens no inventário usando a seguinte chamada de API para o aplicativo de exemplo:
curl -X GET $APP_URL/stock/restock
Inicie o fluxo de trabalho:
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}}'
Resultado esperado:
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
Verifique o status do fluxo de trabalho:
curl -i -X GET $DAPR_URL/v1.0-beta1/workflows/dapr/1234
Resultado esperado:
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}"
}
Observe que o status do fluxo de trabalho está marcado como concluído.
Próximos passos
Azure Kubernetes Service