Краткое руководство. Развертывание приложения Dapr в приложениях контейнеров Azure с помощью шаблона Azure Resource Manager или Bicep
Dapr (распределенная среда выполнения приложений) помогает разработчикам создавать устойчивые и надежные микрослужбы. В этом кратком руководстве описано, как разрешить запуск на стороне Dapr наряду с двумя приложениями-контейнерами, которые создают и используют сообщения, хранящиеся в хранилище состояний Хранилище BLOB-объектов Azure. С помощью шаблонов Azure Resource Manager или Bicep вы:
- Передайте команды Azure CLI для развертывания шаблона , который запускает все необходимые микрослужбы.
- Проверьте взаимодействие между двумя микрослужбами в портал Azure.
В этом кратком руководстве описаны приложения, развернутые в кратком руководстве dapr Hello World с открытым кодом.
Необходимые компоненты
- Установка интерфейса командной строки Azure
- Установка репозитория Git
- Учетная запись Azure с активной подпиской. Если ее нет, можно создать учетную запись бесплатно.
- Учетная запись GitHub. Если у вас еще нет одного, зарегистрируйтесь бесплатно.
Настройка
Чтобы войти в Azure из ИНТЕРФЕЙСА командной строки, выполните следующую команду и следуйте инструкциям, чтобы завершить процесс проверки подлинности.
az login
Чтобы убедиться, что вы используете последнюю версию интерфейса командной строки, выполните команду обновления.
az upgrade
Затем установите или обновите расширение "Приложения контейнеров Azure" для интерфейса командной строки.
Если при выполнении az containerapp
команд в Azure CLI или командлетах из модуля Azure PowerShell возникают ошибки о отсутствующих параметрах Az.App
, убедитесь, что установлена последняя версия расширения "Приложения контейнеров Azure".
az extension add --name containerapp --upgrade
Примечание.
Начиная с мая 2024 г. расширения Azure CLI больше не поддерживают предварительные версии функций по умолчанию. Чтобы получить доступ к функциям предварительной версии контейнерных приложений, установите расширение "Приложения контейнеров" с --allow-preview true
помощью .
az extension add --name containerapp --upgrade --allow-preview true
Теперь, когда установлено текущее расширение или модуль, зарегистрируйте Microsoft.App
пространства имен и Microsoft.OperationalInsights
пространств имен.
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights
Настройка переменных среды
Задайте следующие переменные среды. Замените значения следующими <PLACEHOLDERS>
значениями:
RESOURCE_GROUP="<RESOURCE_GROUP>"
LOCATION="<LOCATION>"
CONTAINERAPPS_ENVIRONMENT="<CONTAINERAPPS_ENVIRONMENT>"
создание группы ресурсов Azure;
Создайте группу ресурсов для упорядочивания служб, связанных с развертыванием приложения контейнера.
az group create \
--name $RESOURCE_GROUP \
--location "$LOCATION"
Подготовка репозитория GitHub
Перейдите в репозиторий с шаблонами ARM и Bicep, которые используются для развертывания решения.
Нажмите кнопку "Вилку" в верхней части репозитория, чтобы вставить репозиторий в учетную запись.
Теперь вы можете клонировать вилку, чтобы работать с ней локально.
Используйте следующую команду Git, чтобы клонировать вилку репозитория в каталог acadapr-templates .
git clone https://github.com/$GITHUB_USERNAME/Tutorial-Deploy-Dapr-Microservices-ACA.git acadapr-templates
Развернуть
Перейдите к каталогу acadapr-templates и выполните следующую команду:
az deployment group create \
--resource-group "$RESOURCE_GROUP" \
--template-file ./azuredeploy.json \
--parameters environment_name="$CONTAINERAPPS_ENVIRONMENT"
Может отображаться предупреждение (BCP081). Это предупреждение не влияет на успешность развертывания приложения.
az deployment group create \
--resource-group "$RESOURCE_GROUP" \
--template-file ./azuredeploy.bicep \
--parameters environment_name="$CONTAINERAPPS_ENVIRONMENT"
Эта команда развертывает следующее:
- Среда "Приложения контейнеров" и связанная рабочая область Log Analytics для размещения решения hello world Dapr.
- Экземпляр Application Insights для распределенной трассировки Dapr.
- Сервер приложений
nodeapp
, работающийtargetPort: 3000
с включенным dapr и настроенным с помощью:"appId": "nodeapp"
"appPort": 3000
- Назначаемое пользователем удостоверение с доступом к хранилищу BLOB-объектов Azure с помощью назначения роли участника данных хранилища
- Компонент Dapr, используемый
"type": "state.azure.blobstorage"
дляnodeapp
хранения состояния. - С поддержкой Dapr без головы
pythonapp
, которая вызываетnodeapp
службу с помощью вызова службы Dapr. - Назначение роли идентификатора Microsoft Entra для приложения Node.js, используемого компонентом Dapr для установления подключения к хранилищу BLOB-объектов.
Проверьте результат.
Проверка успешного сохранения состояния
Чтобы убедиться, что службы работают правильно, просмотрите данные в учетной записи хранения Azure.
В браузере откройте портал Azure.
Перейдите к созданной учетной записи хранения в группе ресурсов.
Выберите контейнеры хранилища>данных в меню слева.
Выберите созданный контейнер.
Убедитесь, что в этом контейнере отображается файл с именем
order
.Выберите файл .
Щелкните вкладку Изменить.
Нажмите кнопку Обновить и проверьте применение обновлений.
Просмотр журналов
Журналы из приложений-контейнеров хранятся в пользовательской ContainerAppConsoleLogs_CL
таблице в рабочей области Log Analytics. Журналы можно просматривать через портал Azure или с помощью интерфейса командной строки. Сначала в рабочей области может возникнуть небольшая задержка.
Используйте следующую команду в Bash или PowerShell для просмотра журналов.
LOG_ANALYTICS_WORKSPACE_CLIENT_ID=`az containerapp env show --name $CONTAINERAPPS_ENVIRONMENT --resource-group $RESOURCE_GROUP --query properties.appLogsConfiguration.logAnalyticsConfiguration.customerId --out tsv`
az monitor log-analytics query \
--workspace "$LOG_ANALYTICS_WORKSPACE_CLIENT_ID" \
--analytics-query "ContainerAppConsoleLogs_CL | where ContainerAppName_s == 'nodeapp' and (Log_s contains 'persisted' or Log_s contains 'order') | project ContainerAppName_s, Log_s, TimeGenerated | take 5" \
--out table
В приведенных ниже выходных данных показан пример ответа, которого следует ожидать от этой команды.
ContainerAppName_s Log_s TableName TimeGenerated
-------------------- ------------------------------- ------------- ------------------------
nodeapp Got a new order! Order ID: 61 PrimaryResult 2021-10-22T21:31:46.184Z
nodeapp Successfully persisted state. PrimaryResult 2021-10-22T21:31:46.184Z
nodeapp Got a new order! Order ID: 62 PrimaryResult 2021-10-22T22:01:57.174Z
nodeapp Successfully persisted state. PrimaryResult 2021-10-22T22:01:57.174Z
nodeapp Got a new order! Order ID: 63 PrimaryResult 2021-10-22T22:45:44.618Z
Очистка ресурсов
Так как pythonapp
непрерывно выполняет вызовы nodeapp
с сообщениями, которые сохраняются в настроенном хранилище состояний, важно выполнить эти действия по очистке, чтобы избежать текущих оплачиваемых операций.
Если вы хотите удалить ресурсы, созданные в рамках этого пошагового руководства, выполните следующую команду.
az group delete \
--resource-group $RESOURCE_GROUP
Совет
Возникли проблемы? Сообщите о них в репозитории Azure Container Apps на GitHub.