Руководство по обмену данными между микрослужбами в приложениях контейнеров Azure

Контейнеры приложений Azure предоставляют каждое приложение-контейнер посредством доменного имени, если включен входящий трафик. Конечные точки входящего трафика для приложений-контейнеров во внешней среде могут быть общедоступными или доступными только для других приложений-контейнеров в той же среде.

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

В этом руководстве описано, как развернуть второе приложение контейнера, которое вызывает прямой вызов службы к API, развернутый в кратком руководстве по развертыванию кода в приложениях контейнеров Azure.

На следующем снимках экрана показана микрослужба пользовательского интерфейса, развернутая в приложениях-контейнерах в конце этой статьи.

Снимок экрана: микрослужба пользовательского интерфейса пользовательского интерфейса альбома.

Из этого руководства вы узнаете, как:

  • Развертывание интерфейсного приложения в приложениях контейнеров Azure
  • Связывание интерфейсного приложения с конечной точкой API, развернутой в предыдущем кратком руководстве
  • Убедитесь, что интерфейсное приложение может взаимодействовать с СЕРВЕРНЫМ API

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

В кратком руководстве по коду в облаке серверный веб-API развертывается для возврата списка музыкальных альбомов. Если вы не развернули микрослужбу API альбомов, вернитесь к краткому руководству. Разверните код в приложениях контейнеров Azure для продолжения.

Настройка

Если вы в настоящее время проходите проверку подлинности в Azure и имеете переменные среды, определенные в кратком руководстве, пропустите следующие действия и перейдите непосредственно к подготовке репозитория GitHub.

Определите следующие переменные в оболочке Bash.

RESOURCE_GROUP="album-containerapps"
LOCATION="canadacentral"
ENVIRONMENT="env-album-containerapps"
API_NAME="album-api"
FRONTEND_NAME="album-ui"
GITHUB_USERNAME="<YOUR_GITHUB_USERNAME>"

Перед выполнением этой команды обязательно замените <YOUR_GITHUB_USERNAME> имя пользователя GitHub.

Затем определите уникальное имя реестра контейнеров.

ACR_NAME="acaalbums"$GITHUB_USERNAME

Войдите в Azure CLI.

az login
az acr login --name $ACR_NAME

Подготовка репозитория GitHub

  1. На новой вкладке браузера перейдите в репозиторий для приложения пользовательского интерфейса и нажмите кнопку "Вилку" в верхней части страницы, чтобы вставить репозиторий в учетную запись.

    Следуйте инструкциям из GitHub, чтобы закрепить репозиторий и вернуться сюда после завершения операции.

  2. Перейдите к родительскому элементу папки code-to-cloud . Если вы все еще находитесь в каталоге code-to-cloud/src , можно использовать следующую команду, чтобы вернуться в родительскую папку.

    cd ../..
    
  3. Используйте следующую команду Git, чтобы клонировать вилку репозитория в папку кода в облако:

    git clone https://github.com/$GITHUB_USERNAME/containerapps-albumui.git code-to-cloud-ui
    

    Примечание.

    Если команда завершается clone ошибкой, проверка успешно вилку репозитория.

  4. Затем измените каталог в папку src клонированного репозитория.

    cd code-to-cloud-ui/src
    

Создание интерфейсного приложения

az acr build --registry $ACR_NAME --image albumapp-ui .

az acr build Выходные данные команды показывают ход отправки исходного кода в Azure и сведения об docker build операции.

  1. Следующая команда создает образ контейнера для пользовательского интерфейса альбома и тегирует его полным именем сервера входа ACR. В . конце команды представляет контекст сборки Docker, то есть эта команда должна выполняться в папке src , в которой находится Dockerfile.

    docker build --tag "$ACR_NAME.azurecr.io/albumapp-ui" . 
    

Отправка образа в реестр ACR

  1. Сначала войдите в Реестр контейнеров Azure.

    az acr login --name $ACR_NAME
    
  2. Теперь отправьте образ в реестр.

    
     docker push "$ACR_NAME.azurecr.io/albumapp-ui" 
    

Обмен данными между приложениями-контейнерами

В предыдущем кратком руководстве API альбомов был развернут путем создания приложения-контейнера и включения внешнего входящего трафика. Установка входящего трафика приложения контейнера на внешний url-адрес конечной точки HTTP общедоступным.

Теперь вы можете настроить интерфейсное приложение для вызова конечной точки API, выполнив следующие действия.

  • Запросите приложение API для полного доменного имени (FQDN).
  • Передайте полное доменное имя az containerapp create API в качестве переменной среды, чтобы приложение пользовательского интерфейса может задать базовый URL-адрес для вызова API альбома в коде.

Приложение пользовательского интерфейса использует конечную точку, предоставленную для вызова API альбомов. Следующий код представляет собой фрагмент кода, используемого в файле маршрутов > index.js .

const api = axios.create({
  baseURL: process.env.API_BASE_URL,
  params: {},
  timeout: process.env.TIMEOUT || 5000,
});

Обратите внимание, как baseURL свойство получает значение из переменной API_BASE_URL среды.

Выполните следующую команду, чтобы запросить адрес конечной точки API.

API_BASE_URL=$(az containerapp show --resource-group $RESOURCE_GROUP --name $API_NAME --query properties.configuration.ingress.fqdn -o tsv)

Теперь, когда вы задаете API_BASE_URL переменную с полным доменным именем API альбома, ее можно предоставить в качестве переменной среды для приложения внешнего контейнера.

Развертывание интерфейсного приложения

Создайте и разверните приложение-контейнер с помощью следующей команды.

az containerapp create \
  --name $FRONTEND_NAME \
  --resource-group $RESOURCE_GROUP \
  --environment $ENVIRONMENT \
  --image $ACR_NAME.azurecr.io/albumapp-ui  \
  --target-port 3000 \
  --env-vars API_BASE_URL=https://$API_BASE_URL \
  --ingress external \
  --registry-server $ACR_NAME.azurecr.io \
  --query properties.configuration.ingress.fqdn

Добавив аргумент --env-vars "API_BASE_URL=https://$API_ENDPOINT" az containerapp createв , вы определяете переменную среды для внешнего приложения. В этом синтаксисе для переменной среды задано полное доменное имя API_BASE_URL API.

Выходные данные команды az containerapp create показывают URL-адрес внешнего приложения.

Просмотр веб-сайта

Используйте полное доменное имя приложения контейнера для просмотра веб-сайта. Страница похожа на следующий снимок экрана.

Снимок экрана: микрослужба пользовательского интерфейса пользовательского интерфейса альбома.

Очистка ресурсов

Если вы не собираетесь продолжать использовать это приложение, выполните приведенную ниже команду, чтобы удалить группу ресурсов вместе со всеми ресурсами, созданными в ходе работы с этим кратким руководством.

Внимание

Эта команда удаляет указанную группу ресурсов и все ресурсы, содержащиеся в ней. Если в указанной группе ресурсов существуют другие ресурсы, кроме созданных для работы с этим учебником, они также будут удалены.

az group delete --name $RESOURCE_GROUP

Совет

Возникли проблемы? Сообщите о них в репозитории Azure Container Apps на GitHub.

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