Руководство по обмену данными между микрослужбами в приложениях контейнеров 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
На новой вкладке браузера перейдите в репозиторий для приложения пользовательского интерфейса и нажмите кнопку "Вилку" в верхней части страницы, чтобы вставить репозиторий в учетную запись.
Следуйте инструкциям из GitHub, чтобы закрепить репозиторий и вернуться сюда после завершения операции.
Перейдите к родительскому элементу папки code-to-cloud . Если вы все еще находитесь в каталоге code-to-cloud/src , можно использовать следующую команду, чтобы вернуться в родительскую папку.
cd ../..
Используйте следующую команду Git, чтобы клонировать вилку репозитория в папку кода в облако:
git clone https://github.com/$GITHUB_USERNAME/containerapps-albumui.git code-to-cloud-ui
Примечание.
Если команда завершается
clone
ошибкой, проверка успешно вилку репозитория.Затем измените каталог в папку src клонированного репозитория.
cd code-to-cloud-ui/src
Создание интерфейсного приложения
az acr build --registry $ACR_NAME --image albumapp-ui .
az acr build
Выходные данные команды показывают ход отправки исходного кода в Azure и сведения об docker build
операции.
Следующая команда создает образ контейнера для пользовательского интерфейса альбома и тегирует его полным именем сервера входа ACR. В
.
конце команды представляет контекст сборки Docker, то есть эта команда должна выполняться в папке src , в которой находится Dockerfile.docker build --tag "$ACR_NAME.azurecr.io/albumapp-ui" .
Отправка образа в реестр ACR
Сначала войдите в Реестр контейнеров Azure.
az acr login --name $ACR_NAME
Теперь отправьте образ в реестр.
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.