Предоставление статического IP-адреса для группы контейнеров
В этой статье представлен один из способов предоставления статического общедоступного IP-адреса для группы контейнеров с помощью шлюза приложений Azure. Выполните следующие действия, если вам нужна статическая точка входа для внешнего контейнерного приложения, выполняющегося в службе "Экземпляры контейнеров Azure".
В этой статье Azure CLI используется для создания следующих ресурсов для этого сценария.
- Виртуальная сеть Azure.
- Группа контейнеров, развернутая в виртуальной сети, в которой размещено небольшое веб-приложение
- Шлюз приложений с общедоступным внешним IP-адресом, прослушиватель для размещения веб-сайта в шлюзе и маршрут к серверной группе контейнеров
Пока шлюз приложений работает и группа контейнеров предоставляет стабильный частный IP-адрес в делегированной подсети сети, группа контейнеров доступна по этому общедоступному IP-адресу.
Примечание.
Шлюз приложений Azure поддерживает протоколы HTTP, HTTPS, HTTP/2 и WebSocket.
Azure взимает плату за использование шлюза приложений на основе времени, в течение которого шлюз подготавливается и доступен, а также на основе объема обрабатываемых данных. См. сведения о ценах.
Создание виртуальной сети
В большинстве случаев у пользователей уже есть виртуальная сеть 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 можно распределять трафик между несколькими экземплярами контейнеров и в нескольких регионах. См. эту статью в блоге.