Поделиться через


Краткое руководство. Развертывание приложения Dapr в приложениях контейнеров Azure с помощью шаблона Azure Resource Manager или Bicep

Dapr (распределенная среда выполнения приложений) помогает разработчикам создавать устойчивые и надежные микрослужбы. В этом кратком руководстве описано, как разрешить запуск на стороне Dapr наряду с двумя приложениями-контейнерами, которые создают и используют сообщения, хранящиеся в хранилище состояний Хранилище BLOB-объектов Azure. С помощью шаблонов Azure Resource Manager или Bicep вы:

  • Передайте команды Azure CLI для развертывания шаблона , который запускает все необходимые микрослужбы.
  • Проверьте взаимодействие между двумя микрослужбами в портал Azure.

Схема архитектуры микрослужб Dapr Hello World в приложениях контейнеров Azure

В этом кратком руководстве описаны приложения, развернутые в кратком руководстве dapr Hello World с открытым кодом.

Необходимые компоненты

  • Учетная запись 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.

  1. В браузере откройте портал Azure.

  2. Перейдите к созданной учетной записи хранения в группе ресурсов.

  3. Выберите контейнеры хранилища>данных в меню слева.

  4. Выберите созданный контейнер.

  5. Убедитесь, что в этом контейнере отображается файл с именем order.

  6. Выберите файл .

  7. Щелкните вкладку Изменить.

  8. Нажмите кнопку Обновить и проверьте применение обновлений.

Просмотр журналов

Журналы из приложений-контейнеров хранятся в пользовательской 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.

Следующие шаги