Сценарии и ресурсы виртуальной сети

Внимание

При развертывании группы контейнеров в виртуальной сети необходимо использовать шлюз NAT для исходящего подключения. Это единственная поддерживаемая конфигурация для исходящего подключения из группы контейнеров в виртуальной сети. Дополнительные сведения о настройке шлюза NAT для статического IP-адреса для исходящего трафика из группы контейнеров см. в разделе "Настройка шлюза NAT ".

Виртуальная сеть Azure обеспечивает безопасное и конфиденциальное сетевое подключение для Azure и локальных ресурсов. Развертывание групп контейнеров в виртуальной сети Azure позволяет контейнерам безопасно обмениваться данными с другими ресурсами в виртуальной сети.

В этой статье содержатся общие сведения о сценариях, ограничениях и ресурсах виртуальной сети. Примеры развертывания с помощью Azure CLI см. в статье Развертывание экземпляров контейнеров в виртуальной сети Azure.

Внимание

Развертывание групп контейнеров в виртуальной сети доступно для контейнеров Linux и Windows в большинстве регионов, где доступны экземпляры контейнеров Azure. Дополнительные сведения см. в разделе "Доступность ресурсов" и ограничения квоты.

Сценарии

Группы контейнеров, развернутых в виртуальной сети Azure, позволяют реализовать такие сценарии:

  • Прямая связь между группами контейнеров в одной подсети.
  • Отправьте выходные данные задачной рабочей нагрузки из экземпляров контейнеров в базу данных, расположенную в виртуальной сети.
  • Получение содержимого для экземпляров контейнеров из конечной точки службы в виртуальной сети.
  • Включите обмен данными контейнера с локальными ресурсами через VPN-шлюз или ExpressRoute.
  • Интегрируйте с брандмауэром Azure , чтобы определить исходящий трафик, исходящий из контейнера.
  • Разрешите имена через внутренний DNS Azure для связи с ресурсами Azure в виртуальной сети, такими как виртуальные машины.
  • Используйте правила NSG для управления доступом контейнера к подсетям или другим сетевым ресурсам.
  • Разверните масштабируемое контейнерное приложение с помощью экземпляров контейнеров Azure (ACI) и равномерно распределяйте входящий трафик между несколькими группами контейнеров с помощью Azure Standard Load Balancer.

Неподдерживаемые сценарии сети

  • Пиринг глобальной виртуальной сети — глобальный пиринг (подключение виртуальных сетей между регионами Azure) не поддерживается.
  • Общедоступный IP-адрес или метка DNS — группы контейнеров, развернутые в виртуальной сети, в настоящее время не поддерживают доступ к контейнерам непосредственно в Интернете с общедоступным IP-адресом или полным доменным именем.
  • Управляемое удостоверение с виртуальной сетью в регионах Azure для государственных организаций - Управляемое удостоверение с возможностями виртуальной сети не поддерживается в регионах Azure для государственных организаций.

Другие ограничения

  • Для развертывания группы контейнеров в подсети эта подсеть не должна содержать другие типы ресурсов. Удалите все существующие ресурсы из существующей подсети перед развертыванием групп контейнеров в ней или создайте новую подсеть.
  • Чтобы развернуть группы контейнеров в подсети, подсеть и группа контейнеров должны находиться в одной и той же подписке Azure.
  • Из-за задействованных дополнительных сетевых ресурсов развертывание в виртуальной сети обычно происходит медленнее, чем развертывание стандартного экземпляра контейнера.
  • Исходящие подключения к порту 25 и 19390 в настоящее время не поддерживаются. Порт 19390 необходимо открыть в брандмауэре для подключения к ACI из портал Azure при развертывании групп контейнеров в виртуальных сетях.
  • Для входящих подключений брандмауэр также должен разрешать все IP-адреса в виртуальной сети.
  • Если вы подключаете группу контейнеров к учетной записи службы хранения Azure, необходимо добавить конечную точку службы в этот ресурс.
  • В настоящее время адреса IPv6 не поддерживаются.
  • В зависимости от типа подписки некоторые порты могут быть заблокированы.
  • Экземпляры контейнеров не считывают или наследуют параметры DNS из связанной виртуальной сети. Параметры DNS должны быть явно заданы для экземпляров контейнеров.

Развертывание групп контейнеров в виртуальной сети

Для развертывания групп контейнеров в виртуальной сети требуется три ресурса виртуальной сети Azure: сама виртуальная сеть, делегированная подсеть в пределах этой виртуальной сети и сетевой профиль.

Виртуальная сеть

Виртуальная сеть определяет адресное пространство, в котором можно создать одну или несколько подсетей. Затем следует развернуть ресурсы Azure (например, группы контейнеров) в подсетях виртуальной сети.

Подсеть (делегированная)

Подсети сегментируют виртуальную сеть на отдельные адресные пространства, которые применяются для размещения ресурсов Azure. В виртуальной сети следует создать одну или несколько подсетей.

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

Исходящее подключение

Шлюз NAT должен быть настроен с общедоступным IP-адресом, чтобы исходящие потоки групп контейнеров проходили через этот общедоступный IP-адрес. Это также позволяет клиентам использовать ip-адреса, помеченные службой, и (или) иметь соответствующие правила NSG.

Используйте следующее руководство "Быстрый старт: Создание шлюза NAT" для создания шлюза NAT.

сетевой профиль.

Внимание

Сетевые профили больше не используются с выпуска API версии 2021-07-01. Если вы используете эту или более новую версию, пропустите все шаги и действия, связанные с сетевыми профилями.

Сетевой профиль — это шаблон конфигурации сети для ресурсов Azure. Он задает определенные свойства сети для ресурса, например подсеть, в который его следует развернуть. При первом использовании команды az container create для развертывания группы контейнеров в подсеть (и, соответственно, в виртуальную сеть) Azure создаст сетевой профиль. Затем этот сетевой профиль можно использовать для будущих развертываний в подсети.

Чтобы использовать шаблон Resource Manager, файл YAML или программный метод для развертывания группы контейнеров в подсеть, необходимо указать полный идентификатор ресурса Resource Manager сетевого профиля. Вы можете использовать профиль, созданный ранее с использованием команды az container create, или создать профиль с помощью шаблона Resource Manager (ознакомьтесь с примером шаблона и справочной документацией). Чтобы получить идентификатор ранее созданного профиля, используйте команду az network profile list.

На следующей схеме показаны несколько групп контейнеров, развернутых в подсети, делегированной для Azure Container Instances. После развертывания одной группы контейнеров в подсети можно развернуть в ней несколько групп контейнеров, указав тот же сетевой профиль.

Группы контейнеров в виртуальной сети

Развертывание групп контейнеров с помощью Azure Load Balancer уровня "Стандартный"

Клиенты могут развертывать масштабируемые контейнерные приложения с помощью экземпляров контейнеров Azure и равномерно распределять входящий трафик между несколькими группами контейнеров с помощью Azure Load Balancer уровня "Стандартный".

Внимание

Чтобы воспользоваться преимуществами балансировки нагрузки, необходимо использовать ARM, Bicep, Terraform, CLI или PowerShell , чтобы задать subnet.id/name.

Необходимые условия

Клиенты должны создать общедоступную или внутреннюю подсистему балансировки нагрузки с соответствующей конфигурацией ВНЕШНЕГО IP-адреса, пробами работоспособности, правилами балансировки нагрузки и внутренними пулами в соответствии с требованиями рабочей нагрузки.

Пример: Добавление экземпляров ACI в backendpool с помощью Azure CLI

az network lb address-pool update -g MyResourceGroup --lb-name MyLb -n MyAddressPool --vnet MyVnetResource --backend-addresses "[{name:ACI-Instance1,ip-address:10.0.0.5,subnet:subnetName},{name:ACI-Instance2,ip-address:10.0.0.6,subnet:subnetName},{name:ACI-Instance3,ip-address:10.0.0.7,subnet:subnetName}]"

Пример. Добавление экземпляров ACI в серверную часть с помощью PowerShell

$vnetName = "vnetname"
$subnetName = "ACI subnet name"
$resourceGroup = "rg name"
$loadBalancerName = "LB Name"

$virtualNetwork = Get-AzVirtualNetwork -Name $vnetName -ResourceGroupName $resourceGroup
$subnet = Get-AzVirtualNetworkSubnetConfig -Name $subnetName -VirtualNetwork $virtualNetwork
$loadBalancer = Get-AzLoadBalancer -ResourceGroupName $resourceGroup -Name $loadBalancerName
$ip1 = New-AzLoadBalancerBackendAddressConfig -IpAddress "10.0.0.5" -Name "ACI-Instance1" -SubnetId $subnet.Id
$ip2 = New-AzLoadBalancerBackendAddressConfig -IpAddress "10.0.0.6" -Name "ACI-Instance2" -SubnetId $subnet.Id
$ip3 = New-AzLoadBalancerBackendAddressConfig -IpAddress "10.0.0.7" -Name "ACI-Instance3" -SubnetId $subnet.Id
$backendPool = $loadBalancer.BackendAddressPools[0]
$backendPool.LoadBalancerBackendAddresses.Add($ip1)
$backendPool.LoadBalancerBackendAddresses.Add($ip2)
$backendPool.LoadBalancerBackendAddresses.Add($ip3)
Set-AzLoadBalancerBackendAddressPool -InputObject $backendPool

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