Прочитать на английском

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


Назначьте статический IP-адрес для группы контейнеров

В этой статье показано, как предоставить статический общедоступный IP-адрес для группы контейнеров с помощью шлюза приложений Azure. Выполните следующие действия, когда требуется статическая точка входа для внешнего контейнерного приложения, работающего в Azure Container Instances.

В этой статье 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 для распределения трафика между несколькими экземплярами контейнеров и несколькими регионами. См. эту запись блога.

Дополнительные ресурсы

Обучение

Модуль

Запуск контейнеров Docker с помощью Экземпляров контейнеров Azure - Training

Сведения о том, как с помощью службы "Экземпляры контейнеров Azure" запустить контейнерные приложения, использующие контейнеры Docker, и устранять неполадки с этими приложениями.

Сертификация

Microsoft Certified: Azure Network Engineer Associate (Сертификация Майкрософт. Помощник сетевого инженера Azure) - Certifications

Продемонстрировать проектирование, реализацию и обслуживание сетевой инфраструктуры Azure, балансировку трафика, маршрутизацию сети и многое другое.