Поделиться через


Предоставление статического 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-адресу шлюза в браузере. При успешном доступе вы увидите следующее:

Снимок экрана с браузером и приложением, работающим в экземпляре контейнера Azure

Следующие шаги

  • Ознакомьтесь с шаблоном быстрого запуска, чтобы получить сведения о том, как создать группу контейнеров с экземпляром контейнера WordPress в качестве внутреннего сервера за шлюзом приложений.
  • Вы можете создать шлюз приложений с сертификатом для завершения сеанса SSL. См. соответствующие обзор и учебник.
  • В зависимости от вашего сценария рассмотрите возможность использования других решений по балансировке нагрузки Azure с помощью Экземпляров контейнеров Azure. Например, с помощью Диспетчера трафика Azure можно распределять трафик между несколькими экземплярами контейнеров и в нескольких регионах. См. эту статью в блоге.