Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
ОБЛАСТЬ ПРИМЕНЕНИЯ: Разработчик | Премия
В этой статье приведены инструкции по развертыванию компонента локального шлюза управления API Azure в приложениях контейнеров Azure.
Разверните локальный шлюз в приложении-контейнере для доступа к API, размещенным в той же среде приложений контейнеров Azure.
Предпосылки
Завершите следующие шаги в кратком руководстве: создание экземпляра службы управления API Azure.
При использовании Azure CLI выполните следующее:
Используйте среду Bash в Azure Cloud Shell. Дополнительные сведения см. в руководстве по быстрому началу работы с Bash в Azure Cloud Shell.
Если вы предпочитаете запускать справочные команды CLI локально, установите Azure CLI. Если вы работаете в Windows или macOS, попробуйте запустить Azure CLI в контейнере Docker. Дополнительные сведения см. в статье Как запустить Azure CLI в контейнере Docker.
Если вы используете локальную установку, выполните вход в Azure CLI с помощью команды az login. Чтобы завершить процесс проверки подлинности, выполните действия, отображаемые в терминале. Сведения о других возможностях, доступных при входе, см. в статье Вход с помощью Azure CLI.
Установите расширение Azure CLI при первом использовании, когда появится соответствующий запрос. Дополнительные сведения о расширениях см. в статье Использование расширений с Azure CLI.
Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.
Примечание.
Чтобы запустить примеры команд Azure CLI, приведённые в этой статье, необходимо расширение Azure CLI
containerapp
. Если вы не использовалиaz containerapp
команды, расширение устанавливается динамически при выполнении первойaz containerapp
команды. Дополнительные сведения о расширениях Azure CLI.
Подготовка шлюза в экземпляре службы управления API
Перед вводом в эксплуатацию локального шлюза создайте ресурс шлюза в экземпляре службы управления API Azure. Инструкции см. в разделе "Подготовка локального шлюза". В примерах этой статьи шлюз называется my-gateway
.
Получение параметров развертывания шлюза из службы "Управление API"
Чтобы развернуть шлюз, вам потребуются значения маркера и конечной точки конфигурации шлюза. Их можно найти на портале Azure:
- Войдите на портал Azure и перейдите к своему экземпляру службы Управления API.
- В меню слева в разделе "Развертывание и инфраструктура" выберите шлюзы.
- Выберите подготовленный ресурс шлюза и выберите "Развертывание".
- Скопируйте значения маркера и конечной точки конфигурации.
Развертывание локального шлюза в приложении-контейнере
Вы можете развернуть образ контейнера локального шлюза в приложении-контейнере с помощью портала Azure, Azure CLI или других средств. В этой статье показано, как использовать Azure CLI.
Создание среды приложений-контейнеров
Сначала создайте среду приложений контейнеров с помощью команды az containerapp env create :
#!/bin/bash
az containerapp env create --name my-environment --resource-group myResourceGroup \
--location centralus
Эта команда создает следующее:
- Среда контейнерного приложения с именем
my-environment
, используемая для группировки контейнерных приложений. - Рабочая область для анализа логов
Создание приложения-контейнера для локального шлюза
Чтобы развернуть локальный шлюз в приложении-контейнере в среде, выполните команду az containerapp create .
Сначала задайте переменные для значений токена и конечной точки конфигурации из ресурса шлюза управления API.
#!/bin/bash
endpoint="<API Management configuration endpoint>"
token="<API Management gateway token>"
Создайте приложение-контейнер с помощью az containerapp create
команды:
#!/bin/bash
az containerapp create --name my-gateway \
--resource-group myResourceGroup --environment 'my-environment' \
--image "mcr.microsoft.com/azure-api-management/gateway:2.5.0" \
--target-port 8080 --ingress external \
--min-replicas 1 --max-replicas 3 \
--env-vars "config.service.endpoint"="$endpoint" "config.service.auth"="$token" "net.server.http.forwarded.proto.enabled"="true"
Эта команда создает следующее:
Приложение контейнера с именем
my-gateway
вmyResourceGroup
группе ресурсов. В этом примере приложение-контейнер создается с помощьюmcr.microsoft.com/azure-api-management/gateway:2.5.0
образа. Узнайте больше об образах контейнеров самохостинг-шлюза.Поддержка внешнего входящего трафика в приложение контейнера через порт 8080.
Не менее 1 и не более 3 реплик приложения контейнера.
Подключение от локального шлюза к экземпляру службы управления API с использованием значений конфигурации, передаваемых в переменных среды. Дополнительные сведения см. в параметрах конфигурации локального шлюза контейнера.
Примечание.
Вход Azure Container Apps перенаправляет HTTPS-запросы в самостоятельно размещённое приложение-контейнер шлюза, преобразуя их в HTTP. Здесь переменная среды
net.server.http.forwarded.proto.enabled
задана какtrue
, чтобы локальный шлюз использовал заголовокX-Forwarded-Proto
для определения исходного протокола запроса.
Убедитесь, что приложение контейнера запущено
Войдите на портал Azure и перейдите к приложению-контейнеру.
На странице Обзор приложения контейнера убедитесь, что СтатусЗапущено.
Отправьте тестовый запрос на конечную точку состояния на
/status-012345678990abcdef
. Например, используйте команду, аналогичнуюcurl
следующей.curl -i https://my-gateway.happyvalley-abcd1234.centralus.azurecontainerapps.io/status-012345678990abcdef
Успешный
200 OK
запрос возвращает ответ.
Подсказка
С помощью интерфейса командной строки можно также запустить команду az containerapp show , чтобы проверить состояние приложения контейнера.
Убедитесь, что шлюз работоспособен
Войдите на портал Azure и перейдите к своему экземпляру службы Управления API.
В меню слева в разделе "Развертывание и инфраструктура" выберите шлюзы.
На странице обзора проверьте состояние шлюза. Если шлюз работоспособен, он сообщает о регулярном пульсе шлюза.
Пример сценария
В следующем примере показано, как использовать локальный шлюз для доступа к API, размещенному в приложении контейнера в той же среде. Как показано на следующей схеме, доступ к локальному шлюзу можно получить из Интернета, а API доступен только в среде приложений контейнеров.
- Развертывание приложения-контейнера, в котором размещен API в той же среде, что и локальный шлюз.
- Добавьте API в экземпляр вашей службы управления API
- Вызов API через локальный шлюз
Развертывание приложения-контейнера, в котором размещен API в той же среде, что и локальный шлюз.
Например, разверните пример API музыкального альбома в приложении-контейнере. Для дальнейшего доступа к API с помощью локального шлюза разверните API в той же среде, что и локальный шлюз. Подробные инструкции и сведения о ресурсах, используемых в этом примере, см. в кратком руководстве. Создание и развертывание из локального исходного кода в приложениях контейнеров Azure. Следующие сокращенные шаги:
Скачайте исходный код Python на локальный компьютер. Если вы предпочитаете, скачайте исходный код на другой язык.
Извлеките исходный код в локальную папку и перейдите в папку containerapps-albumapi-python-main/src .
Выполните следующую команду az containerapp up , чтобы развернуть API в приложении-контейнере в той же среде, что и локальный шлюз. Обратите внимание на
.
, текущая папка указана в конце команды в качестве источника для приложения контейнера.#!/bin/bash az containerapp up --name albums-api \ --resource-group myResourceGroup --location centralus \ --environment my-environment --source .
Убедитесь, что приложение-контейнер запущено и доступно извне по полному доменному имени, возвращенному в результатах выполнения команды. По умолчанию API доступен в конечной точке
/albums
. Пример:https://albums-api.happyvalley-abcd1234.centralus.azurecontainerapps.io/albums/albums
.
Настройка API для внутреннего входящего трафика
Теперь обновите контейнерное приложение, в котором размещен образец API, чтобы разрешить вход только в среде контейнера. Этот параметр ограничивает доступ к API только из развернутого локального шлюза.
- Войдите на портал Azure и перейдите к приложению-контейнеру.
- В меню слева выберите Ingress.
- Установите Ingress на Включено.
- В входящем трафике выберите Ограничено средой контейнерных приложений.
- Просмотрите оставшиеся параметры и нажмите кнопку "Сохранить".
Добавьте API в экземпляр службы управления API
Ниже приведены примеры действий по добавлению API в экземпляр службы управления API и настройке серверной части API. Дополнительные сведения см. в статье "Добавление API в управление API Azure".
Добавление API в экземпляр управления API
- На портале перейдите к экземпляру службы API Management, в котором сконфигурирован самостоятельно размещённый шлюз.
- В меню слева выберите API>+ Добавить API.
- Выберите HTTP и нажмите кнопку "Полный". Введите следующие параметры:
- Отображаемое имя: введите описательное имя. Пример: API альбомов.
-
URL-адрес веб-службы: введите внутреннее полное доменное имя приложения контейнера, на котором размещен API. Пример:
http://albums-api.internal.happyvalley-abcd1234.centralus.azurecontainerapps.io
. - Схема URL-адресов: выберите HTTP(S).
- Суффикс URL-адреса API: введите суффикс вашего выбора. Пример: albumapi.
- Шлюзы. Выберите подготовленный локальный шлюз. Пример: my-gateway.
- Настройте другие параметры API в соответствии с вашим сценарием. Выберите Создать.
Добавление операции API
- В левом меню выберите API>API Альбомов.
- Выберите и добавьте операцию.
- Введите параметры операции:
- Отображаемое имя: введите описательное имя для операции. Пример: Получить альбомы.
-
URL-адрес: выберите "Получить " и введите
/albums
для конечной точки. - Выберите Сохранить.
Вызов API через локальный шлюз
Вызовите API с помощью полного доменного имени локального шлюза, работающего в приложении контейнера. Найдите полное доменное имя на странице обзора приложения контейнера на портале Azure или выполните следующую az containerapp show
команду.
#!/bin/bash
az containerapp show --name my-gateway --resource-group myResourceGroup \
--query "properties.configuration.ingress.fqdn" --output tsv
Например, выполните следующую curl
команду, чтобы вызвать API в конечной точке /albumapi/albums
. Если для API требуется ключ подписки, передайте действительный ключ подписки для экземпляра управления API в качестве заголовка в запросе:
curl -i https://my-gateway.happyvalley-abcd1234.centralus.azurecontainerapps.io/albumapi/albums -H "Ocp-Apim-Subscription-Key: <subscription-key>"
При успешном выполнении теста бэкенд отвечает успешным HTTP-кодом ответа и предоставляет некоторые данные.
HTTP/1.1 200 OK
content-length: 751
content-type: application/json
date: Wed, 28 Feb 2024 22:45:09 GMT
[...]
[{"id":1,"title":"You, Me and an App Id","artist":"Daprize","price":10.99,"image_url":"https://aka.ms/albums-daprlogo"},{"id":2,"title":"Seven Revision Army","artist":"The Blue-Green Stripes","price":13.99,"image_url":"https://aka.ms/albums-containerappslogo"},{"id":3,"title":"Scale It Up","artist":"KEDA Club","price":13.99,"image_url":"https://aka.ms/albums-kedalogo"},{"id":4,"title":"Lost in Translation","artist":"MegaDNS","price":12.99,"image_url":"https://aka.ms/albums-envoylogo"},{"id":5,"title":"Lock Down Your Love","artist":"V is for VNET","price":12.99,"image_url":"https://aka.ms/albums-vnetlogo"},{"id":6,"title":"Sweet Container O' Mine","artist":"Guns N Probeses","price":14.99,"image_url":"https://aka.ms/albums-containerappslogo"}]
Подсказка
Если вы включили ведение журнала API в Application Insights, вы можете запросить журналы, чтобы просмотреть запросы и ответы.