Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
С помощью рабочего процесса Dapr можно легко управлять сообщениями, управлять состоянием и логикой обработки сбоев в различных микрослужбах. Рабочий процесс Dapr поможет вам создавать длительные, отказоустойчивые и поддерживающие состояние приложения.
В этом руководстве вы используете приведенный пример рабочего процесса обработки заказа для следующих действий:
- Создайте реестр контейнеров Azure и кластер AKS для этого примера.
- Установите расширение Dapr в кластере AKS.
- Разверните пример приложения в Azure Kubernetes Service (AKS).
- Запуск и запрос экземпляров рабочих процессов с помощью вызовов API HTTP.
Пример рабочего процесса — это проект ASP.NET Core с:
-
Program.csФайл, содержащий информацию о настройке приложения, включая регистрацию рабочего процесса и его операций. - Определения рабочих процессов, найденные в каталоге
Workflows. - Определения действий рабочего процесса, найденные в директории
Activities.
Prerequisites
- Подписка Azure с ролью владельца или администратора
- Роль администратора для контроля доступа на основе ролей в Службе Azure Kubernetes
- Последняя версия Azure CLI
- Последняя версия Dapr
- Последняя версия Docker
- Последний Helm
Настройка среды
Клонирование примера проекта
Клонируйте пример приложения рабочего процесса.
git clone https://github.com/Azure-Samples/dapr-workflows-aks-sample.git
Перейдите к корневому каталогу примера.
cd dapr-workflows-aks-sample
Создание кластера Kubernetes
Создайте группу ресурсов для управления кластером AKS.
az group create --name <your-resource-group> --location eastus
Создание кластера AKS.
az aks create --resource-group <your-resource-group> --name <your-AKS-cluster> --node-count 2 --generate-ssh-keys
Убедитесь, что kubectl установлен и привязан к кластеру AKS. Если вы используете Azure Cloud Shell, kubectl уже установлен.
Дополнительные сведения см. в руководстве по развертыванию кластера AKS .
Развертывание приложения в AKS
Установка Dapr в кластере AKS
Установите расширение Dapr в кластере AKS. Прежде чем начать, убедитесь, что вы:
-
Установка или обновление
k8s-extension -
Microsoft.KubernetesConfigurationРегистрация поставщика услуг
az k8s-extension create --cluster-type managedClusters --cluster-name myAKSCluster --resource-group <your-resource-group> --name dapr --extension-type Microsoft.Dapr
Через несколько минут выходные данные показывают подключение Dapr к кластеру AKS. Затем выполните инициализацию Dapr в вашем кластере.
dapr init -k
Убедитесь, что Dapr установлен:
kubectl get pods -A
Развертывание компонента хранилища состояний субъекта Redis
Перейдите к каталогу Deploy в форк вашей версии примера.
cd Deploy
Разверните компонент Redis:
helm repo add bitnami https://charts.bitnami.com/bitnami
helm install redis bitnami/redis
kubectl apply -f redis.yaml
Запуск приложения
После развертывания Redis разверните приложение в AKS:
kubectl apply -f deployment.yaml
Отобразить сайдкар Dapr и пример приложения.
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}')
Убедитесь, что приведенные выше команды экспортированы:
echo $APP_URL
echo $DAPR_URL
Запуск рабочего процесса
Теперь, когда приложение и Dapr развернуты в кластере AKS, теперь можно запускать и запрашивать экземпляры рабочих процессов. Используйте следующий вызов API к примеру приложения, чтобы пополнить товары на складе:
curl -X GET $APP_URL/stock/restock
Запустите рабочий процесс:
curl -i -X POST $DAPR_URL/v1.0/workflows/dapr/OrderProcessingWorkflow/start \
-H "Content-Type: application/json" \
-H "dapr-app-id: dwf-app" \
-d '{"Name": "Paperclips", "TotalCost": 99.95, "Quantity": 1}'
Ожидаемые выходные данные включают автоматически созданный идентификатор экземпляра:
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
{"instanceID":"<generated-id>"}
Проверьте состояние рабочего процесса:
curl -i -X GET $DAPR_URL/v1.0/workflows/dapr/OrderProcessingWorkflow/<instance-id> \
-H "dapr-app-id: dwf-app"
Ожидаемые выходные данные:
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
Отслеживайте журналы приложений:
kubectl logs -l run=workflows-sample -c workflows-sample --tail=20
Ожидаемые выходные данные:
{
"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}"
}
Обратите внимание, что состояние рабочего процесса отмечено как завершенное.