Implantar e executar fluxos de trabalho com a extensão do Dapr para o Serviço de Kubernetes do Azure (AKS)
Com o Fluxo de Trabalho do Dapr, você pode facilmente orquestrar mensagens, gerenciamento de estado e lógica de tratamento de falhas em vários microsserviços. O Fluxo de Trabalho do Dapr pode ajudá-lo a criar aplicativos de execução longa, tolerantes a falhas e dinâmicos.
Neste guia, você usa o exemplo de fluxo de trabalho de processamento de pedidos fornecido para:
- Criar um Registro de Contêiner do Azure e um cluster do AKS para este exemplo.
- Instalar a extensão do Dapr no cluster do AKS.
- Implantar o aplicativo de exemplo no AKS.
- Iniciar e consultar instâncias de fluxo de trabalho usando chamadas à API HTTP.
O exemplo de fluxo de trabalho é um projeto ASP.NET Core com:
- Um arquivo
Program.cs
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 fluxo de trabalho encontradas no diretório
Workflows
. - Definições de atividade de fluxo de trabalho encontradas no diretório
Activities
.
Observação
Atualmente, o Fluxo de Trabalho do Dapr é um recurso beta que funciona por autoatendimento e aceitação. As APIs e os componentes beta do Dapr são fornecidos “no estado em que se encontram” e “conforme disponíveis” e evoluem continuamente à medida que chegam a um status estável. As APIs e os componentes beta não são cobertos pelo atendimento ao cliente.
Pré-requisitos
- Uma assinatura do Azure com a função Proprietário ou Administrador.
- A última versão da CLI do Azure
- Docker mais recente
- Helm 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
Vá até o diretório raiz de exemplo.
cd dapr-workflows-aks-sample
Criar um cluster do Kubernetes
Crie um grupo de recursos para conter o cluster do AKS.
az group create --name myResourceGroup --location eastus
Criar um cluster do AKS.
az aks create --resource-group myResourceGroup --name myAKSCluster --node-count 2 --generate-ssh-keys
Verifique se kubectl
está instalado e apontado para o cluster do AKS. Se você usa o Azure Cloud Shell, o kubectl
já estará instalado.
Para obter mais informações, confira o tutorial Implantar um cluster do AKS.
Implantar o aplicativo no AKS
Instalar o Dapr no cluster do AKS
Instalar a extensão do Dapr no cluster do AKS. Antes de começar, verifique se você tem estes itens:
- Instalou ou atualizou o
k8s-extension
. - Registrou o provedor de serviços
Microsoft.KubernetesConfiguration
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
Implante o componente de repositório de estado do Redis Actor
Navegue até o diretório Deploy
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 o aplicativo
Depois que o Redis for implantado, implante o aplicativo no AKS:
kubectl apply -f deployment.yaml
Exponha o sidecar do 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 do AKS, você pode começar a consultar instâncias de fluxo de trabalho. Reabasteça os itens no inventário usando a seguinte chamada à API ao 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}}'
Saída esperada:
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
Saída esperada:
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óximas etapas
Azure Kubernetes Service