#azure #azure-container-instances #vnet
Вопрос:
У меня есть экземпляр контейнера azure… Я добавил его в виртуальную сеть… с частным IP-адресом..10.0.0.4
Я хочу, чтобы только несколько служб приложений azure могли вызывать API rest, который предоставляет этот экземпляр контейнера azure, как я могу предоставить этим службам приложений azure возможность вызывать контейнер?
Твое здоровье, Эндрю
Ответ №1:
Есть несколько способов, которыми вы могли бы этого достичь.
Одним из них может быть настройка единого общедоступного IP-адреса для исходящего и входящего трафика в группу контейнеров Azure. С помощью этого метода вы можете развернуть экземпляр контейнера Azure в виртуальной сети, как вы уже сделали.
Затем,
Развертывание брандмауэра Azure в сети
Во-первых, используйте созданную подсеть виртуальной сети az network, чтобы добавить подсеть с именем AzureFirewallSubnet для брандмауэра. AzureFirewallSubnet-обязательное имя этой подсети.
az network vnet subnet create
--name AzureFirewallSubnet
--resource-group $RESOURCE_GROUP_NAME
--vnet-name $aci-vnet
--address-prefix 10.0.1.0/26
Используйте следующие команды Azure CLI для создания брандмауэра в подсети.
Если он еще не установлен, добавьте расширение брандмауэра в интерфейс командной строки Azure с помощью команды az extension add:
az extension add --name azure-firewall
Создайте ресурсы брандмауэра:
az network firewall create
--name myFirewall
--resource-group $RESOURCE_GROUP_NAME
--location eastus
az network public-ip create
--name fw-pip
--resource-group $RESOURCE_GROUP_NAME
--location eastus
--allocation-method static
--sku standard
az network firewall ip-config create
--firewall-name myFirewall
--name FW-config
--public-ip-address fw-pip
--resource-group $RESOURCE_GROUP_NAME
--vnet-name $aci-vnet
Обновите конфигурацию брандмауэра с помощью команды az network firewall update:
az network firewall update
--name myFirewall
--resource-group $RESOURCE_GROUP_NAME
Получите частный IP-адрес брандмауэра, используя команду списка ip-конфигурации сетевого брандмауэра az. Этот частный IP-адрес используется в более поздней команде.
FW_PRIVATE_IP="$(az network firewall ip-config list
--resource-group $RESOURCE_GROUP_NAME
--firewall-name myFirewall
--query "[].privateIpAddress" --output tsv)"
Получите общедоступный IP-адрес брандмауэра с помощью команды az network public-ip show. Этот общедоступный IP-адрес используется в более поздней команде.
FW_PUBLIC_IP="$(az network public-ip show
--name fw-pip
--resource-group $RESOURCE_GROUP_NAME
--query ipAddress --output tsv)"
Определите пользовательский маршрут в подсети ACI
Определите используемый маршрут в подсети ACI для перенаправления трафика на брандмауэр Azure. Дополнительные сведения см. в разделе Маршрутизация сетевого трафика.
Создать Таблицу Маршрутов
Сначала выполните следующую команду az network route-table create для создания таблицы маршрутов. Создайте таблицу маршрутов в том же регионе, что и виртуальная сеть.
az network route-table create
--name Firewall-rt-table
--resource-group $RESOURCE_GROUP_NAME
--location eastus
--disable-bgp-route-propagation true
Создать маршрут
Запустите команду az network-route-table route create, чтобы создать маршрут в таблице маршрутов. Чтобы направить трафик на брандмауэр, установите тип следующего перехода VirtualAppliance
и передайте частный IP-адрес брандмауэра в качестве адреса следующего перехода.
az network route-table route create
--resource-group $RESOURCE_GROUP_NAME
--name DG-Route
--route-table-name Firewall-rt-table
--address-prefix 0.0.0.0/0
--next-hop-type VirtualAppliance
--next-hop-ip-address $FW_PRIVATE_IP
Связать таблицу маршрутов с подсетью ACI
Выполните команду обновления подсети виртуальной сети az network, чтобы связать таблицу маршрутов с подсетью, делегированной экземплярам контейнеров Azure.
az network vnet subnet update
--name $aci-subnet
--resource-group $RESOURCE_GROUP_NAME
--vnet-name $aci-vnet
--address-prefixes 10.0.0.0/24
--route-table Firewall-rt-table
Окончательно,
Настройка правил на брандмауэре
По умолчанию брандмауэр Azure запрещает (блокирует) входящий и исходящий трафик.
Настройте правило NAT на брандмауэре для подсети ACI
Создайте правило NAT на брандмауэре для преобразования и фильтрации входящего интернет-трафика в контейнер приложения, который вы ранее запустили в сети. Дополнительные сведения см. в разделе Фильтрация входящего интернет-трафика с помощью DNAT брандмауэра Azure
Создайте правило и коллекцию NAT с помощью команды создания правила nat сетевого брандмауэра az:
az network firewall nat-rule create
--firewall-name myFirewall
--collection-name myNATCollection
--action dnat
--name myRule
--protocols TCP
--source-addresses '$SOURCE_ADDRESSES'
--destination-addresses $FW_PUBLIC_IP
--destination-ports 80
--resource-group $RESOURCE_GROUP_NAME
--translated-address $ACI_PRIVATE_IP
--translated-port 80
--priority 200
Добавьте правила NAT по мере необходимости для фильтрации трафика на другие IP-адреса в подсети. Например, другие группы контейнеров в подсети могут предоставлять IP-адреса для входящего трафика, или другие внутренние IP-адреса могут быть назначены группе контейнеров после перезапуска.
Примечание.Замените $SOURCE_ADDRESSES списком исходящих IP-адресов служб приложений, разделенных пробелами.
Создайте правило исходящего приложения на брандмауэре
Выполните следующую команду az network firewall application-rule creat e, чтобы создать исходящее правило на брандмауэре. Это примерное правило разрешает доступ из подсети, делегированной экземплярам контейнеров Azure, к полному доменному checkip.dyndns.org
имени . Доступ по протоколу HTTP к сайту используется на более позднем этапе для подтверждения IP-адреса выхода из экземпляров контейнеров Azure.
az network firewall application-rule create
--collection-name myAppCollection
--firewall-name myFirewall
--name Allow-CheckIP
--protocols Http=80 Https=443
--resource-group $RESOURCE_GROUP_NAME
--target-fqdns checkip.dyndns.org
--source-addresses 10.0.0.0/24
--priority 200
--action Allow
Альтернативным методом может быть интеграция службы приложений с виртуальной сетью Azure. С помощью виртуальной сети Azure (VNET) вы можете разместить многие ресурсы Azure в сети, не подключенной к Интернету. Функция интеграции с виртуальной сетью позволяет вашим приложениям получать доступ к ресурсам в виртуальной сети или через нее. Интеграция с виртуальной сетью не позволяет получать доступ к вашим приложениям частным образом.
Пожалуйста, найдите наглядный пример здесь. Затем вы можете подключить виртуальную сеть Службы приложений к виртуальной сети ACI через пиринг Vnet-toVnet или VPN-шлюз Vnet-to-Vnet
Однако с помощью этого метода вам придется интегрировать все службы приложений Azure, которые будут подключаться к вашему ACI, в виртуальную сеть.