В этой статье показано, как предоставить статический общедоступный IP-адрес для группы контейнеров с помощью шлюза приложений Azure. Выполните следующие действия, когда требуется статическая точка входа для внешнего контейнерного приложения, работающего в Azure Container Instances.
В этой статье Azure CLI используется для создания следующих ресурсов для этого сценария.
- Виртуальная сеть Azure.
- Группа контейнеров, развернутая в виртуальной сети с небольшим веб-приложением
- Шлюз приложений с общедоступным интерфейсным IP-адресом, прослушивателем для размещения веб-сайта на шлюзе и маршрутом к группе контейнеров серверной части
Если шлюз приложений работает и группа контейнеров предоставляет стабильный частный IP-адрес в делегированной подсети сети, группа контейнеров доступна по этому общедоступному IP-адресу.
Создание виртуальной сети
В обычном случае у вас уже может быть виртуальная сеть Azure. Если у вас нет одного, создайте его, как показано в следующих примерах команд. Виртуальная сеть должна иметь отдельные подсети для шлюза приложений и группы контейнеров.
При необходимости создайте группу ресурсов Azure. Рассмотрим пример.
az group create --name myResourceGroup --location eastus
Создайте виртуальную сеть с помощью команды az network vnet create . Эта команда создает подсеть myAGSubnet в сети.
az network vnet create \
--name myVNet \
--resource-group myResourceGroup \
--location eastus \
--address-prefix 10.0.0.0/16 \
--subnet-name myAGSubnet \
--subnet-prefix 10.0.1.0/24
Используйте команду az network vnet subnet create , чтобы создать подсеть для группы внутренних контейнеров. Здесь его имя — myACISubnet.
az network vnet subnet create \
--name myACISubnet \
--resource-group myResourceGroup \
--vnet-name myVNet \
--address-prefix 10.0.2.0/24
Используйте команду az network public-ip create для создания статического ресурса общедоступного IP-адреса. На следующем шаге этот адрес настраивается как внешний интерфейс шлюза приложений.
az network public-ip create \
--resource-group myResourceGroup \
--name myAGPublicIPAddress \
--allocation-method Static \
--sku Standard
Создание группы контейнеров
Выполните следующую команду az container create , чтобы создать группу контейнеров в виртуальной сети, настроенной на предыдущем шаге.
Группа развертывается в подсети myACISubnet и содержит один экземпляр с именем appcontainer , который извлекает aci-helloworld
изображение. Как показано в других статьях документации, этот образ упаковывает небольшое веб-приложение, написанное на Node.js, которое обслуживает статическую HTML-страницу.
az container create \
--name appcontainer \
--resource-group myResourceGroup \
--image mcr.microsoft.com/azuredocs/aci-helloworld \
--vnet myVNet \
--subnet myACISubnet
При успешном развертывании группа контейнеров назначает частный IP-адрес в виртуальной сети. Например, выполните следующую команду az container show , чтобы получить IP-адрес группы:
az container show \
--name appcontainer --resource-group myResourceGroup \
--query ipAddress.ip --output tsv
Выходные данные похожи на: 10.0.2.4
Для использования на следующем шаге сохраните IP-адрес в переменной среды:
ACI_IP=$(az container show \
--name appcontainer \
--resource-group myResourceGroup \
--query ipAddress.ip --output tsv)
Важно!
Если группа контейнеров остановлена, запущена или перезапущена, частный IP-адрес группы контейнеров изменяется. В этом случае необходимо обновить конфигурацию шлюза приложений.
Создание шлюза приложений
Создайте шлюз приложений в виртуальной сети, выполнив действия, описанные в кратком руководстве по шлюзу приложений. Следующая команда az network application-gateway create создает шлюз с общедоступным IP-адресом внешнего интерфейса и маршрутом к группе контейнеров серверной части. Дополнительные сведения о параметрах шлюза см. в документации по шлюзу приложений .
az network application-gateway create \
--name myAppGateway \
--location eastus \
--resource-group myResourceGroup \
--capacity 2 \
--sku Standard_v2 \
--http-settings-protocol http \
--public-ip-address myAGPublicIPAddress \
--vnet-name myVNet \
--subnet myAGSubnet \
--servers "$ACI_IP" \
--priority 100
Для создания шлюза приложений Azure может потребоваться до 15 минут.
Проверка общедоступного IP-адреса
Теперь вы можете проверить доступ к веб-приложению, работающему в группе контейнеров за шлюзом приложений.
Выполните команду az network public-ip show , чтобы получить внешний общедоступный IP-адрес шлюза:
az network public-ip show \
--resource-group myresourcegroup \
--name myAGPublicIPAddress \
--query [ipAddress] \
--output tsv
Выходные данные — это общедоступный IP-адрес, аналогичный следующему: 52.142.18.133
Чтобы просмотреть работающее веб-приложение при успешной настройке, перейдите к общедоступному IP-адресу шлюза в браузере. Успешный доступ аналогичен следующему:
- См. шаблон краткого руководства для создания группы контейнеров с экземпляром контейнера WordPress в качестве серверного сервера за шлюзом приложений.
- Вы также можете настроить шлюз приложений с сертификатом для завершения SSL. Ознакомьтесь с обзором и руководством.
- В зависимости от сценария рекомендуется использовать другие решения балансировки нагрузки Azure с экземплярами контейнеров Azure. Например, используйте диспетчер трафика Azure для распределения трафика между несколькими экземплярами контейнеров и несколькими регионами. См. эту запись блога.