Развертывание и запуск рабочих процессов с расширением Dapr для Служба Azure Kubernetes (AKS)
С помощью рабочего процесса Dapr можно легко управлять сообщениями, управлять состоянием и логикой обработки сбоев в различных микрослужбах. Рабочий процесс Dapr поможет вам создавать длительные, отказоустойчивые и отказоустойчивые приложения.
В этом руководстве вы используете приведенный пример рабочего процесса обработки заказа для следующих действий:
- Создайте Реестр контейнеров Azure и кластер AKS для этого примера.
- Установите расширение Dapr в кластере AKS.
- Разверните пример приложения в AKS.
- Запуск и запрос экземпляров рабочих процессов с помощью вызовов API HTTP.
Пример рабочего процесса — это проект ASP.NET Core с:
Program.cs
Файл, содержащий настройку приложения, включая регистрацию действий рабочего процесса и рабочего процесса.- Определения рабочих процессов, найденные в каталоге
Workflows
. - Определения действий рабочего процесса, найденные в каталоге
Activities
.
Примечание.
Рабочий процесс Dapr в настоящее время является бета-функцией и предоставляется самостоятельно. Бета-интерфейсы API и компоненты Dapr предоставляются "как есть" и "как доступно", и постоянно развиваются по мере перехода к стабильному состоянию. Бета-интерфейсы API и компоненты не охватываются поддержкой клиентов.
Необходимые компоненты
- Подписка Azure с ролью владельца или администратора.
- последняя версия Azure CLI;
- Последняя версия Docker
- Последний Helm
Настройка среды
Клонирование примера проекта
Клонируйте пример приложения рабочего процесса.
git clone https://github.com/Azure/dapr-workflows-aks-sample.git
Перейдите к корневому каталогу примера.
cd dapr-workflows-aks-sample
Создание кластера Kubernetes
Создайте группу ресурсов для хранения кластера AKS.
az group create --name myResourceGroup --location eastus
Создание кластера AKS.
az aks create --resource-group myResourceGroup --name myAKSCluster --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 myResourceGroup --name dapr --extension-type Microsoft.Dapr
Убедитесь, что 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-beta1/workflows/dapr/OrderProcessingWorkflow/start?instanceID=1234 \
-H "Content-Type: application/json" \
-d '{ "input" : {"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
Проверьте состояние рабочего процесса:
curl -i -X GET $DAPR_URL/v1.0-beta1/workflows/dapr/1234
Ожидаемые выходные данные:
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}"
}
Обратите внимание, что состояние рабочего процесса отмечено как завершенное.
Следующие шаги
Azure Kubernetes Service