Создание примера сетевой среды для управления многоуровневой сетью Azure IoT (предварительная версия)
Чтобы использовать службу azure IoT Layered Network Management (preview), необходимо настроить изолированную сетевую среду. Например, архитектура сети ISA-95/Purdue. На этой странице представлено несколько примеров настройки тестовой среды зависит от того, как вы хотите добиться изоляции.
- Физическая сегментация — сети физически разделены. В этом случае многоуровневое управление сетями (предварительная версия) необходимо развернуть на узле двойного сетевого адаптера (сетевая карта) для подключения как к сети, так и к изолированной сети.
- Логическая сегментация — сеть логически сегментируется с конфигурациями, такими как виртуальная локальная сеть, подсеть или брандмауэр. Управление многоуровневой сетью имеет одну конечную точку и настроено для отображения собственного сетевого слоя и изолированного слоя.
Оба подхода требуют настройки пользовательского DNS в изолированном сетевом слое, чтобы направить сетевой трафик к экземпляру управления многоуровневой сетью в верхнем слое.
Внимание
Сетевые среды, описанные в документации по управлению многоуровневой сетью, являются примерами тестирования управления многоуровневой сетью. Это не рекомендация по созданию топологии сети и кластера для рабочей среды.
Настройка изолированной сети с помощью физической сегментации
В следующем примере конфигурация является простой изолированной сетью с минимальными физическими устройствами.
- Точка беспроводного доступа используется для настройки локальной сети и не предоставляет доступ к Интернету.
- Кластер уровня 4 — это кластер с одним узлом, размещенным на физическом компьютере с двойной сетевой картой ( сетевой картой), который подключается к Интернету и локальной сети.
- Кластер уровня 3 — это один кластер узлов, размещенный на физическом компьютере. Этот кластер устройств подключается только к локальной сети.
Управление многоуровневыми сетями развертывается в двойном кластере сетевого адаптера. Кластер в локальной сети подключается к многоуровневой системе управления сетями в качестве прокси-сервера для доступа к службам Azure и Arc. Кроме того, потребуется пользовательский DNS в локальной сети для предоставления разрешения доменных имен и указания трафика на управление многоуровневой сетью. Дополнительные сведения см. в разделе "Настройка настраиваемого DNS".
Настройка изолированной сети с логическим сегментированием
На следующей схеме показана изолированная сетевая среда, в которой каждый уровень логически сегментирован подсетями. В этой тестовой среде на каждом уровне существует несколько кластеров. Кластеры могут быть AKS Edge Essentials или K3S. Кластер Kubernetes в сети уровня 4 имеет прямой доступ к Интернету. Кластеры Kubernetes уровня 3 и ниже не имеют доступа к Интернету.
Несколько уровней сетей в этой настройке теста выполняются с помощью подсетей в сети:
- Подсеть уровня 4 (10.104.0.0/16) — эта подсеть имеет доступ к Интернету. Все запросы отправляются в места назначения в Интернете. Эта подсеть имеет один компьютер с Windows 11 с IP-адресом 10.104.0.10.
- Подсеть уровня 3 (10.103.0.0/16) — эта подсеть не имеет доступа к Интернету и настроена только для доступа к IP-адресу 10.104.0.10 на уровне 4. Эта подсеть содержит компьютер с Windows 11 с IP-адресом 10.103.0.33 и компьютером Linux, на котором размещен DNS-сервер. DNS-сервер настраивается с помощью шагов, описанных в разделе "Настройка пользовательского DNS". Все домены в конфигурации DNS должны быть сопоставлены с адресом 10.104.0.10.
- Подсеть уровня 2 (10.102.0.0/16) — как и уровень 3, эта подсеть не имеет доступа к Интернету. Он настроен только для доступа к IP-адресу 10.103.0.33 на уровне 3. Эта подсеть содержит компьютер с Windows 11 с IP-адресом 10.102.0.28 и компьютером Linux, на котором размещен DNS-сервер. В этой сети есть один компьютер Windows 11 (узел) с IP-адресом 10.102.0.28. Все домены в конфигурации DNS должны быть сопоставлены с адресом 10.103.0.33.
См. следующие примеры настройки этого типа сетевой среды.
Пример логической сегментации с минимальным оборудованием
В этом примере оба компьютера подключены к точке доступа (AP), которая подключается к Интернету. Компьютер узла уровня 4 может получить доступ к Интернету. Узел уровня 3 заблокирован для доступа к Интернету с конфигурацией AP. Например, брандмауэр или элемент управления клиентом. Так как оба компьютера находятся в одной сети, экземпляр управления многоуровневой сетью, размещенный на уровне 4 кластера, по умолчанию отображается на уровне 3 компьютера и кластера. Необходимо настроить дополнительный пользовательский DNS в локальной сети, чтобы предоставить разрешение доменных имен и указать трафик на управление многоуровневой сетью. Дополнительные сведения см. в разделе "Настройка настраиваемого DNS".
Пример логической сегментации в Azure
В этом примере тестовая среда создается с виртуальной сетью и виртуальной машиной Linux в Azure.
Внимание
Виртуальная среда предназначена только для изучения и оценки. Дополнительные сведения см . в поддерживаемых средах для операций Интернета вещей Azure.
- Создайте виртуальную сеть в подписке Azure. Создайте подсети по крайней мере для двух уровней (уровень 4 и уровень 3).
- Для удаленного доступа к компьютеру или компьютеру разработчика можно создать дополнительную подсеть для удаленного доступа к компьютеру или кластеру на разных уровнях. Эта настройка удобна, если планируется создать более двух сетевых слоев. В противном случае можно подключить компьютер jumpbox к сети уровня 4.
- Создайте группы безопасности сети для каждого уровня и подключитесь к подсети соответствующим образом.
- Значение по умолчанию можно использовать для группы безопасности уровня 4.
- Необходимо настроить дополнительные правила для входящего и исходящего трафика для группы безопасности уровня 3 (и более низкого уровня).
- Добавьте правила безопасности для входящего и исходящего трафика, чтобы запретить весь сетевой трафик.
- При более высоком приоритете добавьте правила безопасности для входящего и исходящего трафика, чтобы разрешить сетевой трафик и из диапазона IP-адресов подсети уровня 4.
- [Необязательно] Если вы создаете подсеть jumpbox , создайте правила для входящих и исходящих подключений для разрешения трафика в эту подсеть и из нее.
- Создайте виртуальные машины Linux на уровне 3 и уровне 4.
- Ознакомьтесь с поддерживаемыми средами для спецификации виртуальной машины.
- При создании виртуальной машины подключите компьютер к подсети, созданной на предыдущих шагах.
- Пропустите создание группы безопасности для виртуальной машины.
Настройка пользовательской службы DNS
Для уровня 3 и ниже требуется пользовательский DNS. Это гарантирует, что разрешение DNS для сетевого трафика, исходного в кластере, указывает на экземпляр управления многоуровневой сетью родительского уровня. В существующей или рабочей среде включите следующие разрешения DNS в структуру DNS. Если вы хотите настроить тестовую среду для службы управления многоуровневой сетью и операций Интернета вещей Azure, см. следующие примеры.
Настройка CoreDNS
Хотя настройка DNS может быть достигнута различными способами, в этом примере используется механизм расширения, предоставляемый CoreDNS, который является DNS-сервером по умолчанию для кластеров K3S. URL-адреса в списке разрешений, которые необходимо разрешить, добавляются в CoreDNS.
Внимание
Подход CoreDNS применим только к кластеру K3S на узле Ubuntu на уровне 3.
Создание конфигурации на уровне 4 уровня управления сетями
После готовности кластера уровня 4 и многоуровневого управления сетями выполните следующие действия.
Подтвердите IP-адрес службы управления многоуровневой сетью с помощью следующей команды:
kubectl get services -n azure-iot-operations
Полученный результат должен выглядеть примерно так: IP-адрес службы
20.81.111.118
.NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE lnm-level4 LoadBalancer 10.0.141.101 20.81.111.118 80:30960/TCP,443:31214/TCP 29s
Просмотрите карты конфигурации с помощью следующей команды:
kubectl get cm -n azure-iot-operations
Выходные данные должны выглядеть следующим образом:
NAME DATA AGE aio-lnm-level4-config 1 50s aio-lnm-level4-client-config 1 50s
aio-lnm-level4-client-config
Настройка . Эта конфигурация необходима в рамках настройки уровня 3 для пересылки трафика из кластера уровня 3 в экземпляр управления сетью верхнего уровня.# set the env var PARENT_IP_ADDR to the ip address of level 4 LNM instance. export PARENT_IP_ADDR="20.81.111.118" # run the script to generate a config map yaml kubectl get cm aio-lnm-level4-client-config -n azure-iot-operations -o yaml | yq eval '.metadata = {"name": "coredns-custom", "namespace": "kube-system"}' -| sed 's/PARENT_IP/'"$PARENT_IP_ADDR"'/' > configmap-custom-level4.yaml
На этом шаге создается файл с именем
configmap-custom-level4.yaml
Настройка уровня 3 CoreDNS K3S
После настройки кластера K3S и перемещения его на изолированный уровень 3 настройте уровень 3 K3S CoreDNS с настраиваемой конфигурацией клиента, созданной ранее.
configmap-custom-level4.yaml
Скопируйте узел уровня 3 или в систему, где вы удаленно обращаетесь к кластеру.Выполните следующие команды:
# Create a config map called coredns-custom in the kube-system namespace kubectl apply -f configmap-custom-level4.yaml # Restart coredns kubectl rollout restart deployment/coredns -n kube-system # validate DNS resolution kubectl run -it --rm --restart=Never busybox --image=busybox:1.28 -- nslookup east.servicebus.windows.net # You should see the following output. kubectl run -it --rm --restart=Never busybox --image=busybox:1.28 -- nslookup east.servicebus.windows.net Server: 10.43.0.10 Address 1: 10.43.0.10 kube-dns.kube-system.svc.cluster.local Name: east.servicebus.windows.net Address 1: 20.81.111.118 pod "busybox" deleted # Note: confirm that the resolved ip address matches the ip address of the level 4 Layered Network Management instance.
Предыдущий шаг задает конфигурацию DNS для разрешения разрешенных URL-адресов внутри кластера на уровень 4. Чтобы убедиться, что DNS за пределами кластера выполняется так же, необходимо настроить системное разрешение для пересылки трафика в CoreDNS внутри кластера K3S. Выполните следующие команды на узле K3S: создайте следующий каталог:
sudo mkdir /etc/systemd/resolved.conf.d
Создайте файл с именем
lnm.conf
со следующим содержимым. IP-адрес должен быть IP-адресом кластера уровня 3 службы kube-dns, работающей в пространстве имен kube-system.[Resolve] DNS=<PUT KUBE-DNS SERVICE IP HERE> DNSStubListener=no
Перезапустите сопоставитель DNS:
sudo systemctl restart systemd-resolved