Краткое руководство. Настройка azure IoT Layered Network Management (предварительная версия) для включения кластера в среде Azure с поддержкой Arc
В этом кратком руководстве описана настройка управления сетью с уровнем Интернета вещей Azure (предварительная версия) на уровне 4 и 3 сети Purdue. Сетевой уровень 4 имеет доступ к Интернету и уровень 3 не поддерживается. Вы настраиваете управление многоуровневой сетью (предварительная версия) для маршрутизации сетевого трафика с уровня 3 в Azure. Наконец, вы можете включить кластер K3S на уровне 3, даже не подключен к Интернету напрямую.
- Уровень 4 кластера AKS с развернутым многоуровневым управлением сетями.
- Уровень 3 — это кластер K3S, работающий на виртуальной машине Linux, использующей экземпляр управления многоуровневой сетью на уровне 4 для достижения подключения к Azure. Сеть уровня 3 настроена для исходящего доступа к сети уровня 4 на портах 443 и 8084. Все остальные исходящие доступ отключены.
Архитектура управления многоуровневой сетью требует настройки DNS на уровне 3 сети, где разрешенные URL-адреса переназначаются в сеть уровня 4. В этом примере эта настройка выполняется с помощью автоматической установки, созданной на основе CoreDNS, механизма разрешения DNS по умолчанию, который поставляется с K3s.
Необходимые компоненты
Эти предварительные требования предназначены только для развертывания многоуровневого сетевого управления независимо и включения кластера дочернего уровня Arc.
- Кластер AKS
- Виртуальная машина Linux Ubuntu 22.04.3 LTS
- Компьютер с переходом или настройкой, имеющий доступ к Интернету и сети уровня 3 и уровня 4.
Развертывание многоуровневого сетевого управления (предварительная версия) в кластере AKS
Эти действия развертывают многоуровневую сетевую службу управления в кластере AKS. Кластер является верхним слоем в модели ISA-95. В конце этого раздела у вас есть экземпляр управления многоуровневой сетью, готовый принять трафик из кластера с поддержкой Azure Arc и поддерживать развертывание службы Операций Интернета вещей Azure.
Настройте
kubectl
для управления кластером AKS из папки jumpbox, выполнив действия, описанные в разделе "Подключение к кластеру".Установите оператор управления многоуровневой сетью с помощью следующей команды Azure CLI:
az login az k8s-extension create --resource-group <RESOURCE GROUP> --name kind-lnm-extension --cluster-type connectedClusters --cluster-name <CLUSTER NAME> --auto-upgrade false --extension-type Microsoft.IoTOperations.LayeredNetworkManagement --version 0.1.0-preview --release-train preview
Чтобы проверить успешность установки, выполните следующую команду:
kubectl get pods
Вы увидите выходные данные, которые выглядят следующим образом:
NAME READY STATUS RESTARTS AGE aio-lnm-operator-7db49dc9fd-kjf5x 1/1 Running 0 78s
Создайте пользовательский ресурс управления многоуровневой сетью, создав файл с именем level4.yaml со следующим содержимым:
apiVersion: layerednetworkmgmt.iotoperations.azure.com/v1beta1 kind: Lnm metadata: name: level4 namespace: default spec: image: pullPolicy: IfNotPresent repository: mcr.microsoft.com/oss/envoyproxy/envoy-distroless tag: v1.27.0 replicas: 1 logLevel: "debug" openTelemetryMetricsCollectorAddr: "http://aio-otel-collector.azure-iot-operations.svc.cluster.local:4317" level: 4 allowList: enableArcDomains: true domains: - destinationUrl: "management.azure.com" destinationType: external - destinationUrl: "*.dp.kubernetesconfiguration.azure.com" destinationType: external - destinationUrl: "login.microsoftonline.com" destinationType: external - destinationUrl: "*.login.microsoft.com" destinationType: external - destinationUrl: "login.windows.net" destinationType: external - destinationUrl: "mcr.microsoft.com" destinationType: external - destinationUrl: "*.data.mcr.microsoft.com" destinationType: external - destinationUrl: "gbl.his.arc.azure.com" destinationType: external - destinationUrl: "*.his.arc.azure.com" destinationType: external - destinationUrl: "k8connecthelm.azureedge.net" destinationType: external - destinationUrl: "guestnotificationservice.azure.com" destinationType: external - destinationUrl: "*.guestnotificationservice.azure.com" destinationType: external - destinationUrl: "sts.windows.net" destinationType: external - destinationUrl: "k8sconnectcsp.azureedge.net" destinationType: external - destinationUrl: "*.servicebus.windows.net" destinationType: external - destinationUrl: "graph.microsoft.com" destinationType: external - destinationUrl: "*.arc.azure.net" destinationType: external - destinationUrl: "*.obo.arc.azure.com" destinationType: external - destinationUrl: "linuxgeneva-microsoft.azurecr.io" destinationType: external - destinationUrl: "graph.windows.net" destinationType: external - destinationUrl: "*.azurecr.io" destinationType: external - destinationUrl: "*.blob.core.windows.net" destinationType: external - destinationUrl: "*.vault.azure.net" destinationType: external - destinationUrl: "*.blob.storage.azure.net" destinationType: external sourceIpRange: - addressPrefix: "0.0.0.0" prefixLen: 0
Чтобы создать экземпляр управления многоуровневой сетью на основе файла level4.yaml , выполните следующую команду:
kubectl apply -f level4.yaml
На этом шаге создаются n pod, одна служба и две карты конфигурации. n основан на количестве реплик в пользовательском ресурсе.
Чтобы проверить экземпляр, выполните следующую команду:
kubectl get pods
Выходные данные должны выглядеть так:
NAME READY STATUS RESTARTS AGE aio-lnm-operator-7db49dc9fd-kjf5x 1/1 Running 0 78s aio-lnm-level4-7598574bf-2lgss 1/1 Running 0 4s
Чтобы просмотреть службу, выполните следующую команду:
kubectl get services
Выходные данные должны выглядеть следующим образом:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE aio-lnm-level4 LoadBalancer 10.0.141.101 20.81.111.118 80:30960/TCP,443:31214/TCP 29s
Чтобы просмотреть карты конфигурации, выполните следующую команду:
kubectl get cm
Выходные данные должны выглядеть следующим образом:
NAME DATA AGE aio-lnm-level4-config 1 50s aio-lnm-level4-client-config 1 50s
В этом примере экземпляр управления многоуровневой сетью готов принять трафик во внешнем IP-адресе
20.81.111.118
.
Подготовка кластера уровня 3
На уровне 3 создается кластер K3S Kubernetes на виртуальной машине Linux. Чтобы упростить настройку кластера, можно создать виртуальную машину Azure Linux Ubuntu 22.04.3 LTS с доступом к Интернету и включить ssh из прыжков.
Совет
В более реалистичном сценарии, который запускает настройку в изолированной сети, вы можете подготовить компьютер с предварительно созданным образом для решения или подхода Air-Gap Install K3S.
На виртуальной машине Linux установите и настройте K3S с помощью следующих команд:
curl -sfL https://get.k3s.io | sh -s - --write-kubeconfig-mode 644
Настройте сетевую изоляцию для уровня 3. Выполните следующие действия, чтобы настроить кластер уровня 3 только для отправки трафика в управление многоуровневой сетью на уровне 4.
- Перейдите к группе безопасности сети сетевого интерфейса виртуальной машины.
- Добавьте дополнительное правило безопасности для исходящего трафика, чтобы запретить весь исходящий трафик с виртуальной машины уровня 3.
- Добавьте еще одно правило исходящего трафика с наивысшим приоритетом, чтобы разрешить исходящий трафик к IP-адресу кластера 4 AKS уровня 443 и 8084.
Подготовка кластера в изолированном слое в Arc
Выполнив следующие действия, вы включите кластер уровня 3 с помощью экземпляра управления многоуровневой сетью на уровне 4.
Настройте прыжки, чтобы получить доступ kubectl к кластеру.
Создайте файл конфигурации на виртуальной машине Linux.
k3s kubectl config view --raw > config.level3
На панели перехода настройте доступ kubectl к кластеру уровня 3 k3s, скопируйте файл в
~/.kube
каталог и переименуйтеconfig.level3
егоconfig
в . Запись сервера в файле конфигурации должна иметь IP-адрес или доменное имя виртуальной машины уровня 3.Чтобы добавить разрешенные URL-адреса, обратитесь к настройке CoreDNS для использования механизмов расширения, предоставляемых CoreDNS (DNS-сервер по умолчанию для кластеров K3S).
Выполните следующие команды в папке jumpbox, чтобы подключить кластер к Arc. Для этого шага требуется Azure CLI. Установите Az CLI при необходимости.
az login az account set --subscription <your Azure subscription ID> az connectedk8s connect -g <your resource group name> -n <your connected cluster name>
Дополнительные сведения о подключенныхk8s см . в кратком руководстве по подключению существующего кластера Kubernetes к Azure Arc .
Вы должны увидеть выходные данные, как показано в следующем примере:
This operation might take a while... The required pre-checks for onboarding have succeeded. Azure resource provisioning has begun. Azure resource provisioning has finished. Starting to install Azure arc agents on the Kubernetes cluster. { "agentPublicKeyCertificate": "MIICCgKCAgEAmU+Pc55pc3sOE2Jo5JbAdk+2OprUziCbgfGRFfbMHO4dT7A7LDaDk7tWwvz5KwUt66eMrabI7M52H8xXvy1j7YwsMwR5TaSeHpgrUe1/4XNYKa6SN2NbpXIXA3w4aHgtKzENm907rYMgTO9gBJEZNJpqsfCdb3E7AHWQabUe9y9T8aub+arBHLQ3furGkv8JnN2LCPbvLnmeLfc1J5 .... ....
Кластер Kubernetes теперь включен Arc и указан в группе ресурсов, предоставленной в команде az connectedk8s connect. Вы также можете проверить подготовку этого кластера с помощью портал Azure. Это краткое руководство по демонстрации возможностей управления многоуровневой сетью для включения Arc для кластера Kubernetes. Теперь вы можете попробовать встроенные возможности Arc в этом кластере в изолированной сети.
Следующие шаги
- Сведения о настройке кластера в изолированной сети для развертывания операций Интернета вещей Azure см. в статье Настройка службы управления многоуровневой сетью для включения операций Интернета вещей Azure в изолированной сети.
- Дополнительные сведения о настройке комплексных сетевых сред для связанных сценариев операций Интернета вещей Azure см. в статье "Создание примера сетевой среды"