Развертывание локального шлюза Azure Управление API в приложениях контейнеров Azure
ОБЛАСТЬ ПРИМЕНЕНИЯ: Разработчик | Премиум
В этой статье приведены действия по развертыванию локально размещенного компонента шлюза Azure Управление API в приложениях контейнеров 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 в этой статье требуют
containerapp
расширения Azure CLI. Если вы не использовали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
, используемая для группирования приложений контейнеров. - Рабочая область Log Analytics
Создание приложения-контейнера для локального шлюза
Чтобы развернуть локальный шлюз в приложении-контейнере в среде, выполните команду 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 перенаправит HTTPS-запросы в локальное приложение контейнера шлюза как HTTP. Здесь задана переменная
true
среды,net.server.http.forwarded.proto.enabled
чтобы локальный шлюз использовал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 и перейдите к приложению-контейнеру.
- В меню слева выберите входящий трафик.
- Установите для входящего трафика значение "Включено".
- В трафике входящего трафика выберите "Ограничено средой контейнерных приложений".
- Просмотрите оставшиеся параметры и нажмите кнопку "Сохранить".
Добавление API в экземпляр Управление API
Ниже приведены примеры действий по добавлению API в экземпляр Управление API и настройке серверной части API. Дополнительные сведения см. в статье "Добавление API в Azure Управление API".
Добавление API в экземпляр Управление API
- На портале перейдите к Управление API экземпляру, где настроен локальный шлюз.
- В меню слева выберите 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, вы можете запросить журналы, чтобы просмотреть запросы и ответы.